1

セッションを破棄してページをリロードするphpスクリプトを呼び出そうとしています。

$(document).bind("active.idleTimer", function(){
  $.post("data.php?data=active");
  location.reload();
});

data.php

if($_GET['data'] == 'active') {
  session_destroy();
}

手動でurldata.php?data = activeを開いた場合にのみ、セッションが破棄されません。それはなぜですか?ありがとう!

4

3 に答える 3

2

問題は、リクエストを送信するスクリプトが独自のセッションを使用していることです。したがって、ユーザーには、「アイドル状態の更新」要求を送信するセッションとは異なるセッションがあります。

1つの解決策は、javascriptを使用してタイマーを開始し、そのタイマーが切れたら、ページを更新することです。

そのため、実際にdata.phpページにアクセスした場合にのみ機能します。

于 2013-03-12T14:30:36.547 に答える
0

配列に格納されているデータを使用する場合は、を使用し$_SESSIONて既存のセッションを開始または再開する必要がありますsession_start()。data.phpで、これを試してください。

if($_GET['data'] == 'active') {
  session_start();
  session_destroy();
}

Please, take in consideration that session_start() should be used before you send any output to the client.

Hope it helps!

于 2013-03-12T14:36:00.950 に答える
-1

変更:

$.post("data.php", {data: active}, function(whatever){} 

そしてあなたのphpファイルで使用します:

$_POST['data'];
于 2013-03-12T14:28:13.463 に答える