我正在尝试修复我的代码中的错误,其中将接受空白字段并允许访问a1user.php页面。所以我添加了我认为是验证它的方法,检查存储来自字段的输入的变量都不是空白的。在测试时,我提交了空白字段,页面需要很长时间才能加载,最终会抛出警告框。但后来我在我的页面上收到警告并不断发送错误和警告框。我想我错误地创建了一个循环,但我不知道怎么做,因为这显然不起作用! :(
这是我的代码:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$Username1 = trim(htmlspecialchars($_POST["user"]));
$Password1 = trim(htmlspecialchars($_POST["pwd"]));
$file = fopen("user_accounts.txt", "r") or exit("Unable to open file");
while(!feof($file))
{
$Username2 = trim(fgets($file));
$Password2 = trim(fgets($file));
if($Username1 == "" || $Password1 == ""){
echo '<script language="javascript">';
echo 'alert("Error - fields blank: Please enter username and password")';
echo '</script>';
}
else
{
if($Username1==$Username2 and $Password1 == $Password2)
{
header('Location: a1user.php');
}
else
{
if($Username1=="admin@SNC" and $Password1=="pass1234")
{
header('Location: a1admin.php');
}
}
}
fclose($file);
}
}
?>
更新:顺便说一下,这是为大学作业。我知道它不安全,但我仍在学习基础知识。
我的表格:
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
Username: <input type="text" name="user"><br>
Password: <input type="password" name="pwd"><br>
<input type="submit">
</form>
答案 0 :(得分:0)
尝试这样的代码。
第一次更改:我将$username1==''
和$password1==''
的测试移出了while循环,而不是重复测试以及代码中每行的警报。
第2次更改:我在while循环之外移动了这个:fclose($file);
,当你第一次进入while循环时,你正在关闭文件句柄,导致无限循环。
第3次更改:在die()
函数之后添加header
告诉php如果在头函数之后仍有任何代码则停止执行
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$Username1 = trim(htmlspecialchars($_POST["user"]));
$Password1 = trim(htmlspecialchars($_POST["pwd"]));
if($Username1 == "" || $Password1 == ""){
echo '<script language="javascript">';
echo 'alert("Error - fields blank: Please enter username and password")';
echo '</script>';
}
else {
$file = fopen("user_accounts.txt", "r") or exit("Unable to open file");
while(!feof($file))
{
$Username2 = trim(fgets($file));
$Password2 = trim(fgets($file));
if($Username1==$Username2 and $Password1 == $Password2)
{
header('Location: a1user.php');
die();
}
else
{
if($Username1=="admin@SNC" and $Password1=="pass1234")
{
header('Location: a1admin.php');
die();
}
}
}
fclose($file);
}
}
?>