下面列出的代码对我来说运行良好,但问题是如果我保留user&暗语空白,然后按下登录按钮,然后我得到以下错误代码:
Notice: Undefined index: in C:'xampp'htdocs'login.php on line 6
即使我保留了错误的用户id&密码,然后我得到下面的错误代码:
Notice: Undefined index: r in C:'xampp'htdocs'login.php on line 6
Incorrect username/password. Please, try again.
这里“Incorrect username/password. Please, try again.”
是绝对正确的信息我需要你所有的帮助来解决不必要的错误代码:
<?php
session_start();
include("passwords.php");
if(isset($_POST['ac'])) {
if ($_POST["ac"]=="log") {
if ($USERS[$_POST["username"]]==$_POST["password"]) {
$_SESSION["logged"]=$_POST["username"];
} else {
echo 'Incorrect username/password. Please, try again.';
};
};
}
if (array_key_exists($_SESSION["logged"],$USERS)) {
echo "You are logged in.";
header('Location: /dip01.php');
} else {
echo '<form action="login.php" method="post"><input type="hidden" name="ac"
value="log"> ';
echo 'Username: <input type="text" name="username" />';
echo 'Password: <input type="password" name="password" />';
echo '<input type="submit" value="Login" />';
echo '</form>';
};
?>
$USERS[$_POST["username"]]
当您将username
输入参数留空时,它将评估为:
$USERS[""]
什么是不存在的密钥:
检查:
if(isset($_POST['ac'], $_POST["username"], $USERS[$_POST["username"]], $_POST["password"])) { /* ... */ }
而不是只检查是否发送:
if(isset($_POST['ac'])) { /* ... */ }
此错误源于您使用用户输入$_POST['username']
作为数组$USERS
中的键,而没有首先检查该键是否存在。
在访问密钥之前,您可以使用isset
来检查密钥是否存在,如下所示:
if (isset ($USERS[$_POST['username']]) && $USERS[$_POST['username']] == $_POST['password'])...