-1

テキストファイルを使用して、非常にシンプルなログイン スクリプトを作成したいと考えていました。テキストファイルの内容

password    username    name

パスワード、ユーザー名、名前の間にはタブがあります。ファイルを読み取り、タブごとに展開し、ユーザー入力を行と照合します。

しかし、私は常に(1つの)Undefined offsetエラーが発生します。爆発機能のせいだと思いますが、理由はわかりません...

これが私のコードです:

if(!empty($_POST['login_inputEmail']) || !empty($_POST['login_inputPassword']))
{
    $log = 0; //not logged in
    $username = $_POST['login_inputEmail'];
    $password = $_POST['login_inputPassword'];
    $userdatei = fopen ("documents/user.txt","r");
    while (!feof($userdatei))
       {
       $zeile = fgets($userdatei,800);
       $userdata = explode("\t", $zeile);
       if ($username == $userdata[1] && $password == trim($userdata[0]))
          {
          $log = 1; //logged in
          }
       }
    fclose($userdatei);
}
4

1 に答える 1

0

エラーを回避するために、コードに is_array() と isset() を追加します。これを参照

 if(!empty($_POST['login_inputEmail']) || !empty($_POST['login_inputPassword']))
 {
     $log = 0; //not logged in
     $username = $_POST['login_inputEmail'];
     $password = $_POST['login_inputPassword'];
     $userdatei = fopen ("documents/user.txt","r");
     while (!feof($userdatei))
     {
        $zeile = fgets($userdatei,800);
        $userdata = explode("\t", $zeile);
        if(is_array($userdata))
        {
           if(isset($userdata[1]) && isset($userdata[0]))
           {
              if ($username == $userdata[1] && $password == trim($userdata[0]))
              {
                 $log = 1; //logged in
              }
           }
        }
     }
    fclose($userdatei);
 }
于 2013-09-05T08:58:28.773 に答える