シンプルなユーザーログインシステムを使用している小さな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です。
誰かがこれが起こる理由を考えることができますか?