我正在使用一个简单的用户登录系统的小型电子商务网站。
我正在通过将数据库中的id设置为$ _SESSION var进行测试,以便我可以跟踪其他一些内容。
有一个奇怪的问题,PHP没有为变量设置正确的值,如果我在进行比较之前设置了$ _SESSION var,我很想知道原因。
此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'];
}
}
我知道这听起来很疯狂,但如果我将会话var移到IF下或删除它,一切都按预期工作。这是PHP 5.4。
有谁能想到这会发生的原因?
答案 0 :(得分:1)
我认为问题是会话变量与局部变量同名。
之前发生过这种事,我感到很痛苦。