在登录php之前检查用户是否存在于文件中

时间:2013-12-07 18:02:22

标签: php file text input

我有以下php代码

  <?php
if (isset($_POST['submit_btn'])) 
      {
    $username = $_POST['name'];
    $password = $_POST['pwd'];
      if (empty($username))
         {
         echo "Please enter a username<br>";
         } else $username = $username;
      if (empty($password))
         {
         echo "Please enter a password<br>";
         } else $password = $password;
      $text = $username . "," . $password . "\n";
      $fp = fopen('accounts.txt', 'a+');

        if(!empty($username) && !empty($password) && fwrite($fp, $text))  {
            header('Location: login.html');
            }
         fclose ($fp);
     }
    ?>

我要求用户为我的页面创建一个登录名,这样他们就必须输入用户名和密码。我正在获取用户信息并将其存储在一个文本文件中(我知道这很糟糕,但它是出于教育目的,所以我必须这样做),格式如下:

user1,password1
user2,password2

我也在进行错误检查,以确保用户在输入字段中输入内容,如果他们不在屏幕上显示消息,告诉他们输入用户名或密码。 我的问题是如何阻止用户使用与其他一些用户名相同的用户名

A user enter the following data
simon,password123
and another user enters 
simon,adminpassword

现在这是允许的,但是如何制作它以便我的代码中不允许这样做。

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

$path = 'accounts.txt';

if (file_exists($path)) {
    $contents = file_get_contents($path);
    $contents = explode("\n", $contents);

    $users = array();

    foreach ($contents as $value) {
        $user = explode(',', $value);
        $users[$user[0]] = $user[1];
    }

    if (isset($users[$_POST['name']])) {
        // User exists!
    }
}