0

我设计了一个注册页面,现在我需要从登录页面获取输入并将其与外部文件匹配。(我知道 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 );
}
} ?> 
4

2 回答 2

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;
   }
 }
 ?> 
于 2013-01-13T09:25:22.973 回答
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()数据和比较结果的问题。

希望这可以帮助。

于 2013-01-13T09:27:57.653 回答