session_regenerate_id不与session_destroy一起使用

时间:2012-10-09 11:19:20

标签: php session

我发现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();     
?>

我使用的是php 5.3.3,第二个是推荐的生成新会话的方法,但为什么它不适用于我。

感谢大家,经过测试,我发现必须在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();   

&GT;

3 个答案:

答案 0 :(得分: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,'/');

希望这有帮助

答案 1 :(得分: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();    

答案 2 :(得分:-1)

你应该先破坏会话。试试这个:

session_destroy();
session_unset();
setcookie(session_name(), null, 0, "/");