0

可能是我太累了……但是我想不通这段代码中的session 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'];
}
4

2 回答 2

1

你已经register_globals打开了,这是一个潜在的安全漏洞(正如你所注意到的那样很容易陷入)和死胡同(它从 5.4 中消失了)。

http://www.php.net/manual/en/ini.core.php#ini.register-globals

是否将 EGPCS(Environment、GET、POST、Cookie、Server)变量注册为全局变量。

自 PHP 4.2.0 起,该指令默认为关闭。

请阅读有关使用 register_globals的安全章节以获取相关信息。

警告

此功能自 PHP 5.3.0 起已弃用,自 PHP 5.4.0 起已移除。

于 2013-08-01T15:21:03.993 回答
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
于 2013-08-01T14:54:11.110 回答