2012-05-25 53 views
0

我有这样的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'],但都是正确的!)有人可以帮助我吗?

+2

你确定你实际上是做一个POST而不是GET?也许使用$ _REQUEST? – Marvo

+0

@Marvo:是的。该方法是'POST'。我也检查了帖子的内容,他们是正确的! –

+0

另请参阅:调查fgetcsv或file_get_contents和str_getcsv。你的问题是来自文件的尾随换行符。 – mario

回答

3

您可能需要trim($b[1]),因为它可能读取新行成字符串,以便$b[1]永远不会是平等的。

编辑:

其实,你应该只用$a = trim(fgets($f));

+0

谢谢。有效 –

-1

独立$ b [0]从& &使if语句正常工作。

if ($_POST['username'] == $b[0] && $_POST['password'] == $b[1]) 
    { 
     $flag = 1; 
     echo ("Correct"); 
     break; 
    } 
+0

空格并不重要,它应该可以办法。 –

+0

这可能是一个问题的唯一时间是如果遵循&符号有一个变量并且没有空格。考虑到参考符号可能会使翻译混淆; '&$ foo' – Dan

1

简单的回声b[0]b[1]$_POST['username']$_POST['password']

更换$a = fgets($f);我有一种感觉,这些值中的一个不会是你期望的,这将帮助你解决你的问题。

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); 
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'; 
} 
?>