必要なのはこれだけです($ .postにjQueryを使用します):
JavaScript(これをonload-functionか何かの中に入れてください)
setInterval(function(){
$.post('path/to/refresh_session.php');
},600000); //refreshes the session every 10 minutes
refresh_session.php
<?php
session_start();
// if you have more session-vars that are needed for login, also check
// if they are set and refresh them as well
if (isset($_SESSION['token'])) {
$_SESSION['token'] = $_SESSION['token'];
}
?>
最大の変更点はJavaScriptにあります。関数全体は必要なく、1行だけです。
追加情報
phpを呼び出すだけで十分だと思いますがsession_start()
、これを正しく読んだ場合(http://nl3.php.net/function.session-start):
読み取りコールバックは、既存のセッションデータ(特別なシリアル化された形式で保存されている)を取得し、シリアル化されていない状態で、保存されたセッションデータをPHPセッション処理に戻すときに$_SESSIONスーパーグローバルに自動的に入力するために使用されます。
そして、テスト中、私は上記のコードを訪問者ページにのみ配置し、管理者ページには配置しませんでした。しかし、両方のページを同じブラウザ(Chrome)で開いて、管理ページも少なくとも1時間以上ログインしたままにしました(これ以上チェックしませんでした)。
ただし、session-varを手動で更新せずに、を使用するだけで機能するかどうかはわかりません。session_start()
いずれにせよ、私が必要とするセッション変数が本当にまだそこにあることを確認したいです:)