在本地变量之前设置$ _SESSION的奇怪的PHP变量行为

时间:2012-12-04 19:42:54

标签: php mysql arrays session-variables

我正在使用一个简单的用户登录系统的小型电子商务网站。

我正在通过将数据库中的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。

有谁能想到这会发生的原因?

1 个答案:

答案 0 :(得分:1)

我认为问题是会话变量与局部变量同名。

之前发生过这种事,我感到很痛苦。