我有一个这样的场景:
UserJoe has session_id abc123
abc123 存储在数据库中 users 表中 UserJoe 的行中。
UserJoe 调用 AdminBob 并报告问题。
AdminBob 需要亲 body 验 UserJoe 的问题
所以,我想做这样的事情:
01| $sessionId = getSessionId("UserJoe");
02| changeToExistingSession($sessionId);
03| if($_SESSION["name"] == "UserJoe") echo "successfully changed users";
第 02 行是我有点卡住的地方......有什么想法吗?
(最好不要在任何地方使用session_save_path()
:P)
编辑:这只是在页面执行期间。我想保持 AdminBob 的 session cookie 完好无损。
最佳答案
如果您将UserJoe
的 session ID与报告一起存储在数据库中,那么我认为您可以使用session_id()
来设置AdminBob
code> 的 session ID 到 UserJoe
的 session 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
' s值
index.php?id=[value of PHPSESSID]
您应该在新打开的浏览器中看到其他浏览器的 session
关于php - 跳转到另一个现有 session (使用 PHP 的默认 session 处理程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7304062/