3

重複の可能性:
セッションを閉じて、新しいセッションを開始します

wampserver2.1 php5.3.3を使用していますが、スクリプトでsession_regenerate_id(true)が機能しないことがわかりました。ドキュメントには、パラメータ'delete_old_sessions'をtrueに設定すると、新しいsidがあり、すべてのセッション変数を削除する必要があると記載されていますが、事実は関数の後で、$ _session[abc]はまだそこにあります。機能を誤解しましたか、何が問題なのですか?誰かが私を助けることができれば私は感謝します、

<?php
session_start();
$_SESSION['abc']=12323;
session_regenerate_id(true);
echo $_SESSION['abc'];                  
?>

何も表示されないはずだと思いましたが、出力:12323

4

3 に答える 3

5

session_regenerate_id()session id新しく生成されたもので現在を更新します。セッション変数は変更されません。

echo session_id();
session_regenerate_id();
echo session_id(); 

あなたはunsetそれをするためにセッションするべきです:

unset($_SESSION); // or
$_SESSION = array();

新しいセッションを開始する方法

session_start();
session_destroy();
session_regenerate_id();
unset($_SESSION);
session_start();
于 2012-10-09T09:35:41.890 に答える
1

session_regenerate_id新しいCookieを送信しますが、に保存されている値は上書きされません$_COOKIE。を呼び出した後session_destroy、開いているセッションIDは破棄されるため、でセッションを再開するだけsession_startで、現在のリクエストの元のセッションが再び開きますが、現在は空です(後続のリクエストは新しいセッションIDを使用します)。session_destroy+の代わりにsession_start$delete_old_sessionパラメータを使用session_regenerate_idして前のセッションデータを削除します。

<?php
session_start();
/* Create a new session, deleting the previous session data. */
session_regenerate_id(TRUE);
/* erase data carried over from previous session */
$_SESSION=array();
?>

新しいセッションを開始し、古いものをそのままにしておくには、への引数を省略しsession_regenerate_idます。

ソース:http ://de.php.net/manual/en/function.session-regenerate-id.php#107323

于 2012-10-09T09:36:52.313 に答える
0

セッション変数を破棄したい場合は、これを実行できます。session_destroy(); 新しいIDを取得したい場合は、次のことができます。session_regenerate_id();

于 2012-10-09T09:36:46.370 に答える