【发布时间】:2013-08-27 23:59:15
【问题描述】:
我有一个非常简单的登录脚本,它只需要一个密码就可以了。用户将尝试登录,当用户输入错误密码时,php 脚本会将密码附加到文本文件中,但首先脚本会检查密码是否已在文件中,如果存在,则脚本将添加 1文件中的尝试次数。我的问题是我试图找到一种方法来检查每个密码,然后添加密码,但不检查每个单独的密码并立即添加密码。我正在使用在this website 找到的类文件我的代码如下。
<!DOCTYPE html>
<html>
<head>
<title>Website</title>
</head>
<body>
<form method="post" action="Assets/Scripts/PHP/Login.php">
<table>
<tr>
<td>
<label for="Password">Password:</label>
</td>
<td>
<input type="password" name="password" placeholder="Password" id="Password" />
</td>
</tr>
<tr>
<td>
</td>
<td>
<input type="submit" name="submit" value="Log In" />
</td>
</tr>
</table>
</form>
</body>
</html>
登录.php
<?php
$Password = $_POST['password'];
$Submit = $_POST['submit'];
if(isset($Submit))
{
if($Password != '' && $Password == 'Password')
{
session_start();
$_SESSION['Login'] = 'True';
$Login = $_SESSION['Login'];
if(isset($Login))
{
header("location:../../../main.php");
}
else
{
header("location:../../../index.html");
}
}
else
{
include("../../../MyTXT.php");
$File = new MyTXT("../../Texts/Passwords.txt");
foreach($File->rows as $Row)
{
if($Row != $Password)
{
$File->add_row(array($Password, "1"));
$File->save();
}
else
{
}
}
echo 'The Password Is Incorrect';
echo '<br />';
echo '<a href="../../../index.html">Go Back</a>';
}
}
else
{
header("location:../../../index.html");
}
文本文件
Password:|:Attempts
Test:|:26
Test123:|:2
Test456:|:5
【问题讨论】:
-
我真的不确定您在没有任何其他凭据的情况下仅使用密码的目的是什么。没有“用户”,就没有他们的唯一 ID。为什么要将它们保存在文件中,为什么要计算它们所做的每次无效尝试?这是一个让用户登录的登录系统吗?如果是这样,你能回答我之前的观点吗? (您发布到的链接,重新“使用文本文件作为数据库替代品”,这“通常”就像使用溜冰鞋代替汽车,尤其是在用户登录时)
-
@James 这只是一个示例页面,供试图了解我可以用 PHP 做什么的人使用。他要求我使用文本文件进行挑战
-
很公平,只要它不是一个实际的网站,我/其他人就不会针对它提出过多的建议。