1

session_regenerate_idはsession_destroy()と一緒に機能しないことがわかりました。これが機能することを確認してください

<?php
   session_start();
   $old='old is: '.session_id();
   session_regenerate_id(true);
   echo $old;
   echo '<br>';
   echo 'new is: '.session_id();     
?>

これは失敗しました。2つの同じセッションID番号を返します

<?php
   session_start();
   $old='old is: '.session_id();
   session_regenerate_id(true);
   session_destroy();
   session_unset();
   session_start();
   echo $old;
   echo '<br>';
   echo 'new is: '.session_id();     
?>

私はphp5.3.3を使用しています。2番目の方法は新しいセッションを作成するための推奨される方法ですが、なぜそれが私の側では機能しないのですか。

皆さん、ありがとうございます。テスト後、session_regenerate_id()の前にsession_destroyを呼び出す必要があることがわかりました。そうしないと、session_regenerate_idが機能しません。

<?php
session_start();
$_SESSION['abc']=12323;
$old='old is: '.session_id();
session_unset();
session_destroy();
session_start();
session_regenerate_id(true);
echo $old;
echo '<br>';
echo 'new is: '.session_id();   

?>

4

3 に答える 3

0
session_start();
$old='old is: '.session_id();
session_destroy();
session_start();
session_regenerate_id(true);
echo $old;
echo '<br>';
echo 'new is: '.session_id();    
于 2012-10-09T11:40:13.893 に答える
0

場所

session_unset();

上記 session_destroy(); または session_unset(); を削除します。完全に。セッションを破棄しているとき。

このコードを試してください:

<?php
   session_start();
   $oldSessionId ='Old session ID is: ' . session_id() . '<br />';
   echo $oldSessionId;
   session_destroy();
   session_start();
   session_regenerate_id(true);
   echo 'New session ID is: ' . session_id();     
?>

必要に応じて、session_destroy() の後に次のコードを追加することもできます

setcookie(session_name(),'',0,'/');

お役に立てれば

于 2012-10-09T11:27:54.377 に答える
-1

最初にセッションを破棄する必要があります。これを試して:

session_destroy();
session_unset();
setcookie(session_name(), null, 0, "/");
于 2012-10-09T11:33:04.957 に答える