Php 登录表单允许使用空用户名和密码进行访问
我正在尝试实现一个PHP登录脚本,它可以处理3个PHP文件。当使用正确的用户名和密码时,脚本工作正常,当提供错误信息时,脚本甚至会阻止访问。我的问题是,当您按下表单上的submit按钮并且不插入用户名或密码时,脚本允许访问 第一个脚本如下所示:Php 登录表单允许使用空用户名和密码进行访问,php,authentication,Php,Authentication,我正在尝试实现一个PHP登录脚本,它可以处理3个PHP文件。当使用正确的用户名和密码时,脚本工作正常,当提供错误信息时,脚本甚至会阻止访问。我的问题是,当您按下表单上的submit按钮并且不插入用户名或密码时,脚本允许访问 第一个脚本如下所示: <form action="login2.php" method="post"> Usuario:<br /> <input type="text" name="username" class="formtext" />
<form action="login2.php" method="post">
Usuario:<br />
<input type="text" name="username" class="formtext" />
Contraseña:<br />
<input type="password" name="password" class="formtext" />
<input type="submit" value="Ingresar" class="formbutton" />
</form>
<?php
$usernames = array("user1", "user2", "user3", "superman");
$passwords = array("test", "pass2", "password3", "supermans password");
$page = "noticias.php";
for($i=0;$i<count($usernames);$i++){
$logindata[$usernames[$i]]=$passwords[$i];
}
if($logindata[$_POST["username"]]==$_POST["password"]){
session_start();
$_SESSION["username"]=$_POST["username"];
header('Location: '.$page);
exit;
}else{
header('Location: login.php?wrong=1');
exit;
}
?>
乌萨里奥:
相反,尼娜:
如您所见,表单访问“login2.php”,如下所示:
<form action="login2.php" method="post">
Usuario:<br />
<input type="text" name="username" class="formtext" />
Contraseña:<br />
<input type="password" name="password" class="formtext" />
<input type="submit" value="Ingresar" class="formbutton" />
</form>
<?php
$usernames = array("user1", "user2", "user3", "superman");
$passwords = array("test", "pass2", "password3", "supermans password");
$page = "noticias.php";
for($i=0;$i<count($usernames);$i++){
$logindata[$usernames[$i]]=$passwords[$i];
}
if($logindata[$_POST["username"]]==$_POST["password"]){
session_start();
$_SESSION["username"]=$_POST["username"];
header('Location: '.$page);
exit;
}else{
header('Location: login.php?wrong=1');
exit;
}
?>
最后,我试图限制访问的页面顶部添加了以下代码,以确保用户已登录:
<?php require("login3.php"); ?>
“login3.php”的代码如下:
<?php
session_start();
if(!isset($_SESSION['username'])){
header('Location: login.php');
exit;
}
?>
如果有人能帮我解决这个问题,因为我从一个在线教程中获得了这些脚本,并且对PHP不太了解,真的需要知道为什么允许使用空白用户名和密码进行访问
if($logindata[$_POST["username"]]==$_POST["password"])
如果$loginda[$\u POST[“username”]]
或在本例中$loginda[''']
未定义,则PHP抛出一个通知错误并返回NULL或空值,然后将其与$\u POST['password']
进行比较,后者也是''(或空)
(空==空)返回true,当然要注意错误
您只需添加一个检查以确保用户名也存在,例如:
if(isset($logindata[$_POST["username"]]) && $logindata[$_POST["username"]]==$_POST["password"])
您的问题是,如果
$\u POST['username']
为空,并且您将其用作数组键引用,PHP
将该空值视为有效+未定义的
数组引用,因此您的密码检查归结为:
if ($loginData[null] == null)
变成
if (null == null)
然后用户就离开了。您可能想试试类似的方法
if($username && $password);
[
//info is provided
]
else
[
echo "You did not provide the proper information needed for login.";
Cmon son
if($loginda[$\u POST[“username”]]=$\u POST[“password”]){
您应该更仔细地选择在线教程。感谢您的直接回答!