我正在一个使用简单用户登录系统的小型电子商务网站上工作。
我正在通过将数据库中的 id 设置为 $_SESSION var 来进行测试,这样我就可以跟踪其他一些东西。
有一个奇怪的问题,如果在我进行比较之前设置了 $_SESSION 变量,PHP 没有为变量设置正确的值,我很想知道原因。
此 IF 语句显示已注释掉的会话 var,但这是最初放置的位置。在这个位置,IF 返回 false(即使我将 var 转换为 INT),并且令牌值仅返回第一个数字。
$stmt = $db->prepare("select id, token, confirmed from customers where email = ?");
$stmt->execute(array($email));
$customerId = $stmt->fetchAll();
$customerId = $customerId[0];
if (!empty($customerId))
{
//$_SESSION['customerId'] = $customerId['id'];
if ($customerId['confirmed'] == 0)
{
$sendConfirm = 1;
$uuid = $customerId['token'];
echo $sendConfirm."/".$customerId['token'];
}
}
我知道这听起来很疯狂,但是如果我将会话变量移到 IF 下或将其删除,一切都会按预期工作。这是 PHP 5.4。
谁能想到会发生这种情况的原因?