当用户登录我们的网站时,我想更改会话ID,但保留会话中的任何数据.我想这样做有两个原因:
这些可能看起来很矛盾,但如果你认真考虑的话,实际上并非如此.
问题如下; 要获取当前在会话中的数据,我必须打电话session_start().这意味着我session_id()之后无法调用来设置新的会话ID.任何想法如何传输会话数据和更改会话ID.
更新:我需要能够自己选择会话ID.session_regenerate_id()因此不会奏效.
cle*_*tus 13
您可以使用session_regenerate_id():
Run Code Online (Sandbox Code Playgroud)<?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); ?>
甚至更粗糙的方法可能有效:
// save the session
session_start();
$session = array();
foreach ($_SESSION as $k => $v) {
$session[$k] = $v;
}
session_commit();
// create new session and copy variables
session_id("new session id");
session_start();
foreach ($session as $k => $v) {
$_SESSION[$k] = $v;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8867 次 |
| 最近记录: |