我有这个PHP代码:
$flag = 0;
$f = fopen("1.txt", "r");
while (!feof($f))
{
$a = fgets($f);
$b = explode(",", $a);
if ($_POST['username'] == $b[0]&& $_POST['password'] == $b[1])
{
$flag = 1;
echo ("Correct");
break;
}
}
if ($flag == 0)
echo ("Incorrect");
fclose($f);
和1.txt
文件是这样的:
1,1
2,2
3,3
4,4
5,5
我将数据发送到我的php页面,其中只是此代码,但我总是得到Incorrect
。我不知道为什么不起作用!(我检查了$_POST['username']
和$_POST['password']
,但都是正确的!)有人可以帮助我吗?
答案 0 :(得分:3)
您可能需要trim($b[1])
,因为它可能会将新行读入字符串,因此$b[1]
永远不会相等。
修改强>
实际上,您应该将$a = fgets($f);
替换为$a = trim(fgets($f));
答案 1 :(得分:1)
简单回音b[0]
,b[1]
,$_POST['username']
和$_POST['password']
我感觉这些价值观中的一个不符合您的期望,这将有助于您解决问题。
答案 2 :(得分:1)
有效:
$flag = 0;
$f = fopen("1.txt", "r");
while (!feof($f))
{
$a = fgets($f);
$a = trim($a);
$b = explode(",", $a);
var_dump($b);
if ($_POST['username'] == $b[0] && $_POST['password'] == $b[1])
{
$flag = 1;
echo ("Correct");
break;
}
}
if ($flag == 0)
echo ("Incorrect");
fclose($f);
答案 3 :(得分:1)
继续使用file()
,我将如何做到这一点<?php
//Get file
$file = file('1.txt');
//Split the array line in two with delimiter ,
function split_it(&$value){
$value = explode(',',$value);
}
array_walk($file,'split_it');
//Check values passed against the array, and return true or false
function check_it($file,$a,$b){
foreach($file as $row){
if(trim($row[0])==trim($a) && trim($row[1])==trim($b)){
return true;
}
}
return false;
}
//The business part
$a = (isset($_POST['a'])?$_POST['a']:null);
$b = (isset($_POST['b'])?$_POST['b']:null);
if(check_it($file,$a,$b)==true){
echo 'Correct';
}else{
echo 'In-correct';
}
?>
答案 4 :(得分:-1)
将$ b [0]与&amp;&amp;分开使陈述成立。
if ($_POST['username'] == $b[0] && $_POST['password'] == $b[1])
{
$flag = 1;
echo ("Correct");
break;
}