密码保护的php页面的非常小的php代码,显示未定义的索引:


very small php code for Password protected php page ,showing Undefined index:

下面列出的代码对我来说运行良好,但问题是如果我保留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'])...