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

用于密码保护php页面的非常小的php代码,显示未定义的索引:,php,Php,下面列出的代码对我来说运行良好,但问题是如果我保留了用户和密码 空白,然后按“登录”按钮,我会得到以下错误代码: Notice: Undefined index: in C:\xampp\htdocs\login.php on line 6 Notice: Undefined index: r in C:\xampp\htdocs\login.php on line 6 Incorrect username/password. Please, try again. <?php ses

下面列出的代码对我来说运行良好,但问题是如果我保留了用户和密码 空白,然后按“登录”按钮,我会得到以下错误代码:

Notice: Undefined index: in C:\xampp\htdocs\login.php on line 6
Notice: Undefined index: r in C:\xampp\htdocs\login.php on line 6

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>';
 };
 ?>
即使我保留了错误的用户id和密码,也会得到以下错误代码:

Notice: Undefined index: in C:\xampp\htdocs\login.php on line 6
Notice: Undefined index: r in C:\xampp\htdocs\login.php on line 6

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>';
 };
 ?>
此处
“用户名/密码不正确。请重试。”
是绝对正确的信息 我需要您的帮助来解决不必要的错误代码:

Notice: Undefined index: in C:\xampp\htdocs\login.php on line 6
Notice: Undefined index: r in C:\xampp\htdocs\login.php on line 6

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>';
 };
 ?>

此错误是因为您使用用户输入
$\u POST['username']
作为数组
$USERS
中的键,而没有首先检查该键是否存在

在访问密钥之前,可以使用
isset
检查密钥是否存在,如下所示:

if (isset ($USERS[$_POST['username']]) && $USERS[$_POST['username']] == $_POST['password'])...
当您将
用户名
输入参数留空时,它将计算为:

$USERS[""]
什么是不存在的密钥:

检查:

if(isset($_POST['ac'], $_POST["username"], $USERS[$_POST["username"]], $_POST["password"])) { /* ... */ }
而不是只检查是否已发送:

if(isset($_POST['ac'])) { /* ... */ }

嗨,bwoebi,谢谢你的重播,我是新来的,如果你有时间的话,用你的代码编辑我的代码。这对我有帮助。@nur2544只需将行替换为
if(isset($\u POST['ac']){
by
if(isset($\u POST['ac'],$\u POST[“username”],$USERS[$\u POST[“username”],$\u POST[“password”])){
。仅此而已。它工作正常,但现在我遇到了另一个错误,如下所示注意:未定义索引:第13行登录C:\xampp\htdocs\login.php注意:未定义索引:第13行登录C:\xampp\htdocs\login.php此错误最有可能是因为
$\u SESSION
不包含键
'logged'
。这是一样的其他数组中存在问题。请参阅,除非您确定数组中的某个对象存在,否则不应访问该对象!