PHP读取txt文件并检查用户名密码是否存在

PHP读取txt文件并检查用户名密码是否存在,php,authentication,session-variables,plaintext,Php,Authentication,Session Variables,Plaintext,我有一堆密码和用户名存储在一个txt文件中,我需要检查是否匹配。我知道这不是一个安全的方法,但它的学习目的 此代码将用户名和密码写入txt文件 if(isset($_POST['register'])) // { $user = $_POST['username']; $password=$_POST['password'].PHP_EOL; $fh = fopen("file.txt","a+"); fwrite($fh,$user." ".$p

我有一堆密码和用户名存储在一个txt文件中,我需要检查是否匹配。我知道这不是一个安全的方法,但它的学习目的

此代码将用户名和密码写入txt文件

  if(isset($_POST['register'])) //  
   {
    $user  = $_POST['username'];
    $password=$_POST['password'].PHP_EOL;
    $fh = fopen("file.txt","a+");
    fwrite($fh,$user." ".$password); //write to txtfile

    fclose($fh);
 }
这是我遇到麻烦的代码

用户名和密码像这样存储在结果中

      username1 passwords1 username2 password2 etc. 
所以我需要检查结果[0]=userinput,如果它存在,检查结果[1]=passwordInput等等

   if(isset($_POST['Logg']))
   {
   //$_SESSION['username']=$user; 
   //$_SESSION['password']=$password;

    $file = file_get_contents("file.txt"); // Returns a string

    $result = explode(" ",$file);
    $boolC= false;

    for($i=0; $i< count($result); $i++)
    {
   if($result[$i] === $user)
   {
    $boolC=true;
    $i =$i+1; 
    if($boolC === true)
    {
        if($result[$i]===$password)
        {
            echo 'Password and Username Correct';
        }
    }

   }
     }

  }
if(isset($\u POST['Logg']))
{
//$\会话['username']=$user;
//$\会话['password']=$password;
$file=file\u get\u contents(“file.txt”);//返回一个字符串
$result=explode(“,$file”);
$boolC=false;
对于($i=0;$i
在您继续尝试更正此代码之前,我强烈建议您不要将密码存储在纯文本文件中。这在你的系统中是一个巨大的安全漏洞


我可以看到的另一个架构问题是,如果用户名或密码中包含空格,代码将失败。您可能应该改为使用换行符作为分隔符(\n)。

考虑密码中是否有空格作为任何符号。也许您应该在换行符(“\n”)上拆分

语句的第一部分必须为true,才能计算第二部分。 $i变量从未更改

$file = "username1 passwords1 username2 password2";
$result = explode(" ",$file);
$user = "username1";
$password = "passwords1";

for($i=0; $i< count($result); $i++){

    if($result[$i] === $user && $result[$i+1] === $password)
    {

        echo 'Password and Username Correct';
   }
}
$file=“username1密码s1 username2密码2”;
$result=explode(“,$file”);
$user=“username1”;
$password=“passwords1”;
对于($i=0;$i
我认为原始帖子的逻辑没有问题

您应该打印所有变量,以检查它们是否具有正确的值


“$user”和“$password”变量是全局变量还是非全局变量,因为它们在另一个if块的大括号中是未知的,即在您检查$_POST['logg']

的块中,我知道在txt文件中存储用户名和密码是不安全的,但这是出于学习目的,所以不重要。关于代码将失败,如果我包含一个空格,我们可以忽略它。如果它不清楚我问什么让我知道我将发布类似的东西。我唯一要更改的是循环增量(在原始文章中也是一个问题)如下所示:for($I=0;$Iecho语句来验证您假设存在的内容是否确实存在。您是否愿意用换行符重写文件@Sebastian能否确认文件已写入且包含内容。换句话说,我只想问$user和$password变量在哪里声明或初始化?它们在我写入txt文件的地方声明。然后检查它们是否在使用这些变量的地方可用,即在if块中。得到?
$file = "username1 passwords1 username2 password2";
$result = explode(" ",$file);
$user = "username1";
$password = "passwords1";

for($i=0; $i< count($result); $i++){

    if($result[$i] === $user && $result[$i+1] === $password)
    {

        echo 'Password and Username Correct';
   }
}