也许我太累了......但我无法弄清楚这段代码中的会话ID如何从149变为143.
echo "session id is".$_SESSION['userid'];
$smarty->assign('itemresults',$arr2);
$_SESSION['userid']
if (isset($_REQUEST['id']))
{
$userid=$_REQUEST['id'];
}
else
{
echo "session id 1 is".$_SESSION['userid'];
$userid=$_SESSION['userid'];
}
echo "session id 2 is".$_SESSION['userid'];
输出:
session id is149session id 2 value is143
更新:
好的,我发现如果我更改了var $ userid,问题就不再存在,但为什么为$ userid分配一个值也会修改$ _SESSION ['userid']?
以下代码有效:
if (isset($_REQUEST['id']))
{
$userid2=$_REQUEST['id'];
}
else
{
echo "session id 1 value".$_SESSION['userid'];
$userid2=$_SESSION['userid'];
}
答案 0 :(得分:1)
你已经开启register_globals
,这是一个潜在的安全漏洞(很容易陷入你的注意),还有一个死胡同(它从5.4开始)。
http://www.php.net/manual/en/ini.core.php#ini.register-globals:
是否将EGPCS(环境,GET,POST,Cookie,服务器)变量注册为全局变量。
自PHP 4.2.0起,此指令默认为关闭。
请阅读Using register_globals上的安全章节以获取相关信息。
警告强>
自PHP 5.3.0开始,此功能已被弃用,自PHP 5.4.0起已被删除。
答案 1 :(得分:0)
您是否已将$userid
作为会话值的引用?我可以或多或少地像这样重现它:
<?php
session_start();
// Put 10 in the session
$_SESSION['userid'] = 10;
// Get a reference to that session variable (note the `&`)
$userid = &$_SESSION['userid'];
// Increment
$userid++;
echo $_SESSION['userid']; // 11