web应用中,出于安全性考虑,有时会要求用户成功登录系统后重置会话id,即phpsessionid。php自4.3.3版本针对该需求提供了函数:
class="type">bool session_regenerate_id ([ bool $delete_old_session = false ] )
?
函数使用说明
1、如果指定参数monospace; line-height: 1.5;">$delete_old_session为false,或不指定参数:
1.1、该函数会重置当前会话的phpsessionid
1.2、会话session里面的数据不会发生变化,跟原session一样。
1.3、会新生成一个session存储文件。
1.4、原session存储文件不会即时删除。
?
2、如果指定参数$delete_old_session为true:
1.1、该函数会重置当前会话的phpsessionid
1.2、会话session里面的数据不会发生变化,跟原session一样。
1.3、会新生成一个session存储文件。
1.4、原session存储文件会立即被删除。
?
实验:
测试代码:
echo 'sessionid-1='.session_id(); echo '<br>'; $_SESSION['verify']='huangqiqing'; print_r($_SESSION); session_regenerate_id(); echo '<br>'; echo 'sessionid-2='.session_id(); echo '<br>'; print_r($_SESSION); session_regenerate_id(true); echo '<br>'; echo 'sessionid-3='.session_id(); echo '<br>'; print_r($_SESSION);
?
输出结果:
sessionid-1=ril9qqdsnt2bse0jkdbsfjgh13 Array ( [verify] => huangqiqing ) sessionid-2=7p1adu6tpcsnpb8e2srtrta224 Array ( [verify] => huangqiqing ) sessionid-3=189h571ku43feeced966evdt91 Array ( [verify] => huangqiqing )
?
客户端cookie查看:
?
session存储文件查看:
?只有结尾是91和13的session存储文件,224结尾的存储文件被删除了。
?
from:?http://huangqiqing123.iteye.com/
?