2011-09-18 17 views
1

自分のサイトのログインスクリプトを作成しています。PHPの文字列===

それはユーザーに別のサーバーに(curlを使用して)POSTを送信通過など
情報が間違っている場合、それはBad login

を返します。しかし、私は返事をチェックするとき、それは間違っている場合でも、それはログインを言うだろう成功です。

if ($result === "Bad login"){ 
    $password_status = 'Wrong password.'; 
    $error = true; 
} 

また、strcmpも試してみました。

+0

'$結果は何

$結果は、たとえば、完全に一致する必要があります

'?それはどこから来たのですか? – zerkms

+0

あなたは返信が常に成功したと言いますが、if文の場合はその部分を省略しました。また、ここで厳密に比較する必要はないと思います( '===')。 – PeeHaa

+0

@zerkms:それは、curlを使用してPOSTリクエストから来た返信です – Antonio

答えて

1

はい、他の文字が含まれている可能性があるので、var_dump($ result)を試してください。

多分試してみてください。

<?php 
if (strpos(strtolower($result), 'bad login') !== false) { 
    $error = true; 
} 
+0

コメントとしてより良いかもしれません – PeeHaa

+0

@PeeHaa:彼の質問に対する答えです、私は答えであるべきだと思います。 – Cyclone

+0

ありがとうございます。 – Antonio

0

$結果の正確な値とは何ですか?あなたの完全なif文は何ですか?

echo ('Bad login' === 'Bad login') ? 'True<br />' : 'False<br />'; // True 
echo ('Bad login ' === 'Bad login') ? 'True<br />' : 'False<br />'; // False (Space after login) 
echo ('Bad Login' === 'Bad login') ? 'True<br />' : 'False<br />'; // False (Capital L on login) 

編集:

をこれは私が比較する方法を次のとおりです。

$result = trim(strtolower($badLoginVariable)); 

if($result === 'bad login') { 
    // Do stuff here 
} 
+0

コメントとして良いかもしれません – PeeHaa