我有这样的情况:UserJoe has session_id abc123
abc123存储在数据库的用户表中UserJoe的行中。UserJoe calls AdminBob and reports a problem.
AdminBob needs to experience UserJoe's problem first hand
所以,我想做些类似的事情:
01| $sessionId = getSessionId("UserJoe");
02| changeToExistingSession($sessionId);
03| if($_SESSION["name"] == "UserJoe") echo "successfully changed users";
第2行是我有点卡住的地方...有什么想法吗?
(最好不在任何地方使用
session_save_path()
:P)编辑:这只是在页面执行期间。我想保持AdminBob的会话cookie完整。
最佳答案
如果将UserJoe
的会话ID与报告一起存储在数据库中,那么我认为您可以使用session_id()
将AdminBob
的会话ID设置为UserJoe
的会话ID。
<?php
if(!isset($_GET["id"]))
{
session_start();
$_SESSION["foobar"] = $_GET["bar"];
echo "Setting...";
var_dump($_SESSION);
var_dump($_COOKIE);
}
else
{
session_id($_GET["id"]);
var_dump($_GET["id"]);
var_dump($_COOKIE);
session_start();
var_dump($_SESSION);
}
?>
测试:在一个浏览器中打开此页面,并将
bar
设置为任何内容。index.php?bar=blahblahblah
打开新的浏览器并访问同一页面,但不设置
bar
,获取PHPSESSID
的值并将其设置为id
的值index.php?id=[value of PHPSESSID]
您应该在新打开的浏览器中看到另一个浏览器的会话