我是 PHP 新手,我一直在學習有關(guān)如何制作注冊/登錄頁面的課程。我已成功完成注冊頁面,但登錄頁面出現(xiàn)問題。這是我的 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); ?>當我按下登錄按鈕而不輸入任何內(nèi)容時,我收到預期的錯誤消息。但是,如果我輸入我創(chuàng)建的模擬帳戶,我仍然收到相同的錯誤消息。
1 回答

楊魅力
TA貢獻1811條經(jīng)驗 獲得超6個贊
您根據(jù)需要檢查的字段末尾包含空格:
$required_fields = array('username ', 'password ');
因此,這些名稱永遠不會存在于發(fā)布的數(shù)據(jù)中。將該行更改為:
$required_fields = array('username', 'password');
它應該有效。
更新:我之前沒有注意到,但您的表單輸入在名稱末尾也有空格。也從那里刪除空間。當表單提交并且末尾有這些空格時,$_POST 包含“username_”和“password_”。即 PHP 正在將空格轉(zhuǎn)換為下劃線。
如果您添加空格只是為了使錯誤消息有空格,那么添加空格的正確位置將是在“是必填字段”之前,而不是在輸入名稱本身中。
請記住在進行更改后重新加載頁面。
- 1 回答
- 0 關(guān)注
- 140 瀏覽
添加回答
舉報
0/150
提交
取消