为了账号安全,请及时绑定邮箱和手机立即绑定

使用 php 制作登录脚本时出现问题

使用 php 制作登录脚本时出现问题

PHP
慕森卡 2022-06-17 14:34:27
我需要一些有关我网站的登录脚本的帮助。我只收到“nouser”错误,但我知道我有一个帐户并且它是正确的登录名。就像它跳过了脚本的登录部分。我检查了大括号,我认为我是对的。好像从数据库中提取有问题?任何人都可以看到任何错误或可以给我如何改进它的提示吗?if (isset($_POST['login-submit'])) {        require "dbh.i.php";        $mailuid = $_POST['mailuid'];        $password = $_POST['pwd'];        if (empty($mailuid) && empty($password)) {            header("Location: ../index.php?error=emptyfields");            exit();        } else {            $sql = "SELECT * FROM users WHERE uidUsers=? OR emailUsers;";            $stmt = mysqli_stmt_init($connect);            if (!mysqli_stmt_prepare($stmt, $sql)) {                header("Location: ../index.php?error=sqlerror");                exit();            } else {                mysqli_stmt_bind_param($stmt, "ss", $mailuid, $mailuid);                mysqli_stmt_execute($stmt);                $result = mysqli_stmt_get_result($stmt);                if ($row = mysqli_fetch_assoc($result)) {                    $pwdCheck = password_verify($password, $row['pwdUsers']);                    if ($pwdCheck == false) {                        header("Location: ../index.php?error=wrongpwd");                        exit();                    } else if ($pwdCheck == true) {                        session_start();                        $_SESSION[userId] = $row['idUsers'];                        $_SESSION[userUid] = $row['uidUsers'];                        header("Location; ../index.php?login=success");                        exit();                    } else {                        header("Location: ../index.php?error=wrongpwd");                        exit();                    }                } else {                    header("Location: ../index.php?error=nouser");                    exit();                }            }        }    } else {        header("Location: ../index.php?signup");        exit();     }
查看完整描述

1 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

我认为您的这部分代码是错误的:


$sql = "SELECT * FROM users WHERE uidUsers=? OR emailUsers;";

$stmt = mysqli_stmt_init($connect);

if (!mysqli_stmt_prepare($stmt, $sql)) {

    header("Location: ../index.php?error=sqlerror");

    exit();

} else {

    mysqli_stmt_bind_param($stmt, "ss", $mailuid, $mailuid);

您的查询中只有一个占位符要替换:SELECT * FROM users WHERE uidUsers=? OR emailUsers;,但您将其替换了两次: mysqli_stmt_bind_param($stmt, "ss", $mailuid, $mailuid);


尝试将您的查询更改为:


SELECT * FROM users WHERE uidUsers=? OR emailUsers=?;


查看完整回答
反对 回复 2022-06-17
  • 1 回答
  • 0 关注
  • 84 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信