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

我正在尝试制作一个登录页面。然而事情总是出错——我不知道是什么?

我正在尝试制作一个登录页面。然而事情总是出错——我不知道是什么?

PHP
慕娘9325324 2023-08-19 16:46:46
我是 PHP 新手,我一直在学习有关如何制作注册/登录页面的课程。我已成功完成注册页面,但登录页面出现问题。这是我的 login.php 代码:<?phpinclude_once '../resources/session.php';include_once '../resources/database.php';include_once '../resources/utilities.php';if(isset($_POST['loginBtn'])){    // array to hold errors    $form_errors = array();    // validate    $required_fields = array('username ', 'password ');    $form_errors = array_merge($form_errors, check_empty_fields($required_fields));    if(empty($form_errors)){        // collect form data        $user = $_POST['username'];        $password = $_POST['password'];        //  check if user exists in the database        $sqlQuery = "SELECT * FROM users WHERE username = :username";        $statement = $db->prepare($sqlQuery);        $statement->execute(array(':username' => $user));        while($row = $statement->fetch()){            $id = $row['id'];            $hashedpassword = $row['password'];            $username = $row['username'];            if(password_verify($password, $hashed_password)){                $_SESSION['id'] = $id;                $_SESSION['username'] = $username;                header("location: dashboard.php");            }            else{                $result ="<p style='padding: 20px; color: red; border: 1px solid gray;'> Invalid username or password</p>";            }        }    }    else{        if(count($form_errors) == 1){            $result = "<p style='color:red;'>There was 1 error in the form</p>";        }        else{            $result = "<p style='color:red;'> There were " .count($form_errors). " errors in the form </p>";        }    }}?><!DOCTYPE html><html dir="ltr">    <head>        <meta charset="utf-8">        <title>Login</title>        <link rel="stylesheet" href="../css/indexstyles.css">    </head>    <body>        <h2>Login Form</h2>        <?php if(isset($result)) echo $result; ?>        <?php if(!empty($form_errors)) echo show_errors($form_errors); ?>当我按下登录按钮而不输入任何内容时,我收到预期的错误消息。但是,如果我输入我创建的模拟帐户,我仍然收到相同的错误消息。
查看完整描述

1 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

您根据需要检查的字段末尾包含空格:

$required_fields = array('username ', 'password ');

因此,这些名称永远不会存在于发布的数据中。将该行更改为:

$required_fields = array('username', 'password');

它应该有效。

更新:我之前没有注意到,但您的表单输入在名称末尾也有空格。也从那里删除空间。当表单提交并且末尾有这些空格时,$_POST 包含“username_”和“password_”。即 PHP 正在将空格转换为下划线。

如果您添加空格只是为了使错误消息有空格,那么添加空格的正确位置将是在“是必填字段”之前,而不是在输入名称本身中。

请记住在进行更改后重新加载页面。


查看完整回答
反对 回复 2023-08-19
  • 1 回答
  • 0 关注
  • 93 浏览

添加回答

举报

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