尝试在多页注册中临时存储信息。因为我不希望旧会话弄乱新的注册数据,我试图破坏旧会话。问题如下。
无效:
signup1.php
//Start new session
session_regenerate_id(TRUE);
session_destroy();
unset($_SESSION);
session_start();
//Store values in session
$_SESSION['created'] = time();
//Redirect to second step
header('Location: '.$settings->siteurl.'signup2.php');
exit();
signup2.php
<pre>
<?php
//Print $_SESSION (empty array)
print_r($_SESSION);
?>
工作(但返回旧的$ _SESSION值+更新值):
//Start new session
session_regenerate_id(TRUE);
//Store values in session
$_SESSION['created'] = time();
//Redirect to second step
header('Location: '.$settings->siteurl.'signup2.php');
exit();
什么可以解决问题?第一个session_start();在init.php中设置但如果我将它放在session_regenerate_id(TRUE)之上并不重要,则数组保持为空。
答案 0 :(得分:1)
你应该首先使用它:
session_start(); // Starts a new or resumes an existing session
然后你可以使用:
session_regenerate_id(TRUE); // regenerates the active session id
TRUE/delete_old_session
参数用于:
是否删除旧的关联会话文件。
session_regenerate_id对于防止会话劫持非常有用,它只是重新生成一个新的id
,但会保留会话数据。这应该在用户的访问级别更改或使用时间间隔(即每10分钟后)但在重新生成另一个新的session id
之前使用,您需要先启动会话。