【发布时间】:2010-01-22 07:30:52
【问题描述】:
我的数据库更改会话变量后会话变量出现问题,当我按下后退按钮时它不会更新新的会话变量,但在数据库上,它已经更新但不在网页上,我必须重新登录才能看到新变量。
我该如何使用 session_regenerate_id?
【问题讨论】:
我的数据库更改会话变量后会话变量出现问题,当我按下后退按钮时它不会更新新的会话变量,但在数据库上,它已经更新但不在网页上,我必须重新登录才能看到新变量。
我该如何使用 session_regenerate_id?
【问题讨论】:
复制自php.net:
<?php
session_start();
$old_sessionid = session_id();
session_regenerate_id();
$new_sessionid = session_id();
echo "Old Session: $old_sessionid<br />";
echo "New Session: $new_sessionid<br />";
print_r($_SESSION);
?>
【讨论】:
当用户按下后退按钮时,他们的浏览器通常会显示一个缓存页面,而不是重新请求该页面,因此这很可能是您的问题所在。
您通过调用 session_regenerate_id 来使用它...并且用户将获得一个新的会话 ID,他们的会话将转移到该 ID,如果您将 True 作为参数传递,会话也将被清除.一般用于防止session fixation attacks
【讨论】:
确保您已将以下语句放在脚本之上,否则将不会处理任何会话:
session_start();
【讨论】: