匹配输入到外部文件

时间:2013-01-13 09:15:40

标签: php

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

2 个答案:

答案 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()数据并比较结果。

希望这有帮助。