【发布时间】:2015-02-05 20:17:32
【问题描述】:
我的网站上有一个 PHP 会话,用于存储登录信息。数组的基本结构是这样的:
$_SESSION = Array(
[uid]=>Int
[acc]=>Array
[lastAction]=>Timestamp
)
当我在我的登录 PHP 脚本中设置这些会话变量时,我将它们设置为:
$_SESSION["uid"] = $uid;
$_SESSION["acc"] = array(...);
$_SESSION["lastAction"] = time();
直到后来我使用 MySQLi 绑定一些变量的一个脚本之前,这从来没有造成问题。我想从我的一张表中检索uid 变量,所以我继续这样做:
$stmt = $link->prepare("SELECT `uid` ... FROM ...");
...
$stmt->bind_result($uid, ...);
语句运行没有问题,数据全部正确,但现在会话有问题。
显然,$_SESSION["uid"] 仍然与引用 $uid 相关联,即使我现在在不同的页面上并且在设置会话时我没有通过引用传递变量。
为了测试这个理论,我继续设置我的会话并运行以下代码:
<?php
session_start();
$uid = 1823479;
print_r($_SESSION);
?>
果然$_SESSION["uid"]等于1823479。
这是预期的行为吗?我以前从未遇到过这个问题,但由于我没有使用引用设置会话,所以在我看来这不是预期的行为。
附加信息:
PHP 版本:5.3
【问题讨论】:
标签: php session session-variables pass-by-reference