跳转到另一个现有会话(使用PHP的默认会话处理程序)

时间:2011-09-05 05:07:48

标签: php session

我有这样的场景:

UserJoe has session_id abc123 abc123存储在DB中users表的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";
第02行是我被困的地方......有什么想法吗?

(最好不要在任何地方使用session_save_path():P)

编辑:它只是在页面执行期间。我想保持AdminBob的会话cookie完好无损。

1 个答案:

答案 0 :(得分:4)

如果您将UserJoe的会话ID与报告一起存储在数据库中,那么我认为您可以使用session_id()AdminBob的会话ID设置为{{1}会话ID。

UserJoe

测试:在一个浏览器中打开此页面并将<?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

您应该在新打开的浏览器中看到其他浏览器的会话