Php 调用条件时未满足第二个条件

Php 调用条件时未满足第二个条件,php,Php,下面是我的基本激活码,用户注册激活时会收到一个链接。当他们单击链接时,它会激活并正常工作,如果链接中的令牌与数据库中的任何令牌不匹配,它应该用错误消息重定向,这就是挂断,它不会重定向,甚至不会显示错误消息,它只会停留在空白页上 我真的不知道我错过了什么,我甚至试过其他方法,如果我错过了什么 if (($_SERVER['REQUEST_METHOD'] === "GET") && isset($_GET['hash_token'])) {

下面是我的基本激活码,用户注册激活时会收到一个链接。当他们单击链接时,它会激活并正常工作,如果链接中的令牌与数据库中的任何令牌不匹配,它应该用错误消息重定向,这就是挂断,它不会重定向,甚至不会显示错误消息,它只会停留在空白页上

我真的不知道我错过了什么,我甚至试过其他方法,如果我错过了什么

   if (($_SERVER['REQUEST_METHOD'] === "GET") && isset($_GET['hash_token'])) {

        $db = DB_CONNECT();
        $stmt = $db->prepare("SELECT id, email, confirm_code FROM users WHERE confirm_code = ?");
        $stmt->bind_param('s', $_GET['hash_token']);
        $stmt->execute();
        $result = $stmt->get_result();
        $stmt->close();


        while ($row = mysqli_fetch_assoc($result)) {

            $email = $row['email'];
            $confirm_code = $row['confirm_code'];

            if ($confirm_code !== null && $confirm_code === $_GET['hash_token']) {

                $is_activated = 1;
                $set_confirm_code = null;

                $stmt2 = $db->prepare("UPDATE users SET is_activated = ?, confirm_code = ?  WHERE confirm_code = ?");
                $stmt2->bind_param('sss', $is_activated, $set_confirm_code, $confirm_code);
                $stmt2->execute();
                $stmt2->close();

                set_message("Your account has been activated please login.", SUCCESS);
                redirect_to_url("/");


            } else {
            

                set_message("Unable to activate with provided data.", WARNING);
                redirect_to_url("/");


            }
        }
    }

$stmt
返回
null
结果时,不会执行块。 试试这个


您可能在重定向之前输出了一些内容。这可能是一条错误消息,甚至是空白。{打开错误](),你肯定会在
获取之前找到某个东西。
$stmt->close();
我认为这是个问题。不太熟悉mysqli的人认为
确认代码
是如何设置的?你不需要
如果($confirm\u code!==null&$confirm\u code==$GET['hash\u token')){
如果你输入了
,而
你知道它是匹配的。我猜你可以得到确认代码与当前逻辑冲突。也应该检查
电子邮件。@user3783243我尝试了几种不同的方法,唯一不起作用的是它们是否已经被激活,或者它们在url末尾的随机键中没有重定向如果没有匹配项,则无需提取任何内容,因此不会输入
while
。在php 7中删除的mysql\u fetch\u行将使用
mysqli\u fetch\u行更新
不会
mysqli\u fetch\u行
推进光标?应该使用num rows函数。@user3783243谢谢..@Devflow请更新您的代码