PHP,未定义的偏移量:1

PHP,未定义的偏移量:1,php,login,login-script,Php,Login,Login Script,我想用一个文本文件构建一个超级简单的登录脚本。文本文件包含 password username name 密码、用户名和名称之间是一个选项卡。我读取文件,按制表符分解,然后对照行检查用户输入 但我总是得到(一)未定义的偏移量错误。我想这是因为爆炸功能,但我不知道为什么 这是我的密码: if(!empty($_POST['login_inputEmail']) || !empty($_POST['login_inputPassword'])) { $log = 0; //no

我想用一个文本文件构建一个超级简单的登录脚本。文本文件包含

password    username    name
密码、用户名和名称之间是一个选项卡。我读取文件,按制表符分解,然后对照行检查用户输入

但我总是得到(一)
未定义的偏移量
错误。我想这是因为爆炸功能,但我不知道为什么

这是我的密码:

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);
}
在代码中添加is_array()和isset(),以避免错误。提及


可能是您的文件编码有问题。在
explode
操作之后,您可以执行
var\u转储($userdata)
吗?请参阅@Benny yes我可以这样做,看起来像
array(3){[0]=>string(1)“142”[1]=>string(18)”bla@blub.com“[2]=>string(11)“Mustermann”}
。。。在一些行中,我有这样的
string(6)“B�hr“
分解
行上,错误出现在哪一行?”。非常感谢您的帮助,现在它工作了!
 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);
 }