这里有3个PHP脚本: 我设置会话的第一个文件:
<?php session_start(); // store session data
$_SESSION["username"] = "joshmathews" ;
$_SESSION["name"] = "josh" ; ?>
第二个脚本,我首先输出代码,然后销毁会话,然后再次启动会话:
<?php session_start();
echo "<br>Username = " . $_SESSION["username"];
echo "<br> name= " . $_SESSION["name"] ;
echo "<br>" . session_id() ;
//session_id(200) ; //
session_destroy() ;
echo "<br>Username = " . $_SESSION["username"];
echo "<br> name= " . $_SESSION["name"] ;
echo "<br>" .session_id() ;
我只输出会话数组的第三个脚本:
<?php
session_start() ;
echo $_SESSION['name'] ;
echo "<br>" . session_id() ; ?>
现在在第二个脚本中如果我包含我更改会话ID的行我仍然可以访问第三个代码中的会话数组但是如果我排除会话ID的更改那么我就不能在第三个脚本中访问会话数组码。为什么??????
答案 0 :(得分:2)
因为当您致电session_id(200)
时 - 它正在将您当前的会话更改为另一个会话,并且您正在销毁新创建的会话。
在此处阅读更多内容:http://www.php.net/manual/en/function.session-id.php
如果指定了id,它将替换当前的会话ID。 session_id()需要在session_start()之前为此目的调用
答案 1 :(得分:0)
session_id()
需要在session_start()
之前调用,以便正确设置ID。
请参阅manual for session_id()
。在参数$id
下,它说明了这一点。
如果指定了id,它将替换当前的会话ID。 session_id()需要 为此目的在session_start()之前调用。
同样在设置$id
时,您应该将其作为字符串传递以实现一致性:
session_id('200');