2

シンプルなユーザーログインシステムを使用している小さなeコマースサイトで作業しています。

データベースのIDを$_SESSION変数として設定してテストしているので、他のものを追跡できます。

比較を行う前に$_SESSION変数が設定されていると、PHPが変数に適切な値を設定しないという奇妙な問題がありました。その理由を知りたいと思います。

このIFステートメントは、セッション変数がコメントアウトされていることを示していますが、これが最初に配置された場所です。この配置では、IFはfalseを返し(変数を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の下に移動するか削除すると、すべてが期待どおりに機能します。これはPHP5.4です。

誰かがこれが起こる理由を考えることができますか?

4

1 に答える 1

1

問題は、セッション変数がローカル変数と同じ名前であることにあると思います。

これは以前私に起こったことであり、私はあなたの痛みを感じます。

于 2013-02-12T22:23:45.940 に答える