PHP读取txt文件并检查用户名密码是否存在
我有一堆密码和用户名存储在一个txt文件中,我需要检查是否匹配。我知道这不是一个安全的方法,但它的学习目的 此代码将用户名和密码写入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
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;$I
echo
语句来验证您假设存在的内容是否确实存在。您是否愿意用换行符重写文件@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';
}
}