可以在php中为session_id()赋值吗?

时间:2011-12-05 14:35:25

标签: php session

是否可以手动为session_id()分配新值?

我尝试了以下但是它不起作用:

session_start();
$sessionId = session_id();
echo $sessionId;

if ($sessionId != $ses) { 
session_id() = $ses;
}

3 个答案:

答案 0 :(得分:2)

您可以使用session_id()

session_id($sessionId);

session_id()可用于获取会话ID或通过传递可选函数参数来设置它,如上所述。

值得注意的是手册中有关函数调用顺序和会话ID字符限制的内容:

  

如果指定了id,它将替换当前的会话ID。   需要在session_start()之前调用session_id()   目的。根据会话处理程序,并非所有字符都是   在会话ID中允许。例如,文件会话处理程序   只允许a-z A-Z 0-9范围内的字符,(逗号)和 -   (负)!

答案 1 :(得分:2)

您必须在开始会话之前分配ID。

session_id('hello');
start_session();

但是,小心这样做。会话ID(通常)是长的随机字母数字字符串。如果你把它设置为常数/简单的东西,你就会让某人劫持用户的会话变得容易得多。

如果两个或更多人获得相同的会话ID,他们将共享同一个会话,因为此ID是特定会话的唯一标识符。它应该对每个用户都是唯一的,没有重复。

答案 2 :(得分:1)

是的,根据手册,您只需提供一个字符串作为session_id([string $id])

的参数