1

PHP のセッションで、これまで理解できなかったこの問題が発生しました。
PHPファイルに次のコードがあります。

session_start();
$sid = session_id();
session_unset();
session_destroy();
echo $sid;

論理的には、異なるセッションIDを提供する必要があるたびに、明らかに呼び出しますsession_destroy()が、セッションを強制終了することはありません。常に同じセッション ID が返されます。
私はそれを間違っていますか?

4

2 に答える 2

4

私にとって、セッションを完全に破壊するには、次の組み合わせのみが完全に機能します。

session_destroy();
session_unset();
session_regenerate_id(true);

編集:これを試しましたか:

<?php
session_start();
$sid = session_id();
echo $sid;
echo "<br />";

//destroy session
session_destroy();
session_unset();

//now start the new session
session_start();
session_regenerate_id(true);
$sid = session_id();
echo $sid;
?>

それは完全に動作します。

于 2012-04-28T07:02:38.877 に答える
2

seesion_id() の概念

このリンクを参照してください。id が指定されている場合は、現在のセッション ID が置き換えられます。そのためには、 session_id() を session_start() の前に呼び出す必要があります

この州には、次のような例があります。

PHP 4.3.3 以降、セッションを 2 回開始すると通知が表示されます。session_id() を使用して、セッションがすでに開始されているかどうかを検出できます。スクリプトを作成する前に、セッション ID が不明な場合、session_id() が false を返すことを知っておく必要があります。これで、セッションが開始された場合はスクリプト ウィッチを検出でき、開始されていない場合はセッションが開始されます。

This is what you get then:
<?php
if(!session_id()){
 session_start();
}
?>
于 2012-04-28T07:07:01.683 に答える