2

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

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

谁能想到会发生这种情况的原因?

4

1 回答 1

1

我认为问题是会话变量与局部变量具有相同的名称。

我以前也遇到过这种情况,我感受到了你的痛苦。

于 2013-02-12T22:23:45.940 回答