我是 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 正在将空格转换为下划线。
如果您添加空格只是为了使错误消息有空格,那么添加空格的正确位置将是在“是必填字段”之前,而不是在输入名称本身中。
请记住在进行更改后重新加载页面。
- 1 回答
- 0 关注
- 93 浏览
添加回答
举报
0/150
提交
取消