我设计了一个注册页面,现在我需要从登录页面获取输入并将其与外部文件相匹配。 (我理解MySQL更容易,但这是针对一个项目而我根本不能使用MySQL。)
我有外部文件:
fname, sname, username, password, e-mail
我需要验证txt文件中的用户名和密码。我的登录页面如下所示:
<form action="logon.php" method="POST">
<p>Username: <input type="text" name="username"/></p>
<p>Password: <input type="password" name="password"/></p>
<input type="submit" value="Submit">
</form>
<a href="register.php">Register Here</a>
<?php
$username= $_POST['username'];
$password= $_POST['password'];
$contents = file_get_contents($file);
$arrangefile = preg_split( '/\n/' , $contents );
$found = false;
foreach ( $arrangefile as $items ) {
$data = explode ( ',' , $items );
}
} ?>
答案 0 :(得分:0)
嗯......除了不得不说这样做是个奇怪的想法,你可以用file_get_contents()
替换file()
。它一次产生一个包含一行文件的数组。这将使解析变得更容易。在foreach
中,您需要对该行进行标记并提取用户名和密码。然后你可以匹配它们。
可能看起来像这样:
<?php
$username= $_POST['username'];
$password= $_POST['password'];
$contents = file($file);
$found = false;
foreach ($file as $line) {
$data = explode(', ', $line);
if (($username === $data[2]) && ($password === $data[3])) {
$found = true;
}
}
?>
答案 1 :(得分:0)
您可以这样做:
<form action="logon.php" method="POST">
<p>Username: <input type="text" name="username"/></p>
<p>Password: <input type="password" name="password"/></p>
<input type="submit" value="Submit">
</form>
<a href="register.php">Register Here</a>
<?php
$username= $_POST['username'];
$password= $_POST['password'];
$lines = file ($file);
$found = false;
foreach ($lines as $line) {
$line = str_replace (' ', '', $line);
$cols = explode (',', $line);
$_username = $cols[2];
$_password = $cols[3];
if ($username == $_username && $password == $_password) {
$found = true;
break;
}
}
// Do something with $found
if ($found) {
// yay
}
else {
// aww :(
}
?>
编辑:
多一点解释。 file()
将文件的所有行放入array()
。每个元素代表文件中的一行。您说您拥有a, b, c
格式的数据。您使用str_replace()
删除所有空格以使explode()
更容易。然后只需explode()
数据并比较结果。
希望这有帮助。