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. if が機能しない理由がわかりません! ( $_POST['username']andをチェックしました$_POST['password']が、すべて正しかったです!) 誰か助けてくれませんか?

4

5 に答える 5

3

trim($b[1])おそらく新しい行を文字列に読み込むため、$b[1]等しくなることはないため、必要になる場合があります。

編集:

実際には、次のように置き換える必要があり$a = fgets($f);ます$a = trim(fgets($f));

于 2012-05-25T19:26:33.000 に答える
1

単純なエコーb[0]、、、およびb[1]$_POST['username']$_POST['password']

私は、これらの値の1つがあなたが期待するものではないだろうと感じています。それは、あなたがあなたの問題を解決するのを助けるでしょう。

于 2012-05-25T19:26:34.637 に答える
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);
于 2012-05-25T19:28:53.573 に答える
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';
}
?>
于 2012-05-25T19:46:34.687 に答える
-1

$b[0] を && から分離して、if ステートメントを機能させます。

 if ($_POST['username'] == $b[0] && $_POST['password'] == $b[1])
    {
        $flag = 1;
        echo ("Correct");
        break;
    }
于 2012-05-25T19:25:11.003 に答える