0

HTMLのパスワードフォームから取得した2つの文字列を比較しようとしています。

それらはからの変数に格納されています$_POST。それらを印刷すると同じように見えますが、以下のコードはtrueと評価されることはなく、falseと評価されるだけです。なぜそれが起こるのですか?

//Verify the passwords match
if( ($passwd != $pass_confirm) && ($new_email != $email_confirm) ){
    echo "Email and/or password do not match";
    return FALSE;
}

助けていただければ幸いです。

4

2 に答える 2

7

コードでエラーメッセージを表示するには、メールアドレスとパスワードの両方が間違っている必要があります。

||の代わりに使用してみてください&&。そうすれば、そのうちの1つだけが間違っているとエラーが表示されます。

于 2012-04-05T12:15:50.973 に答える
1

それらを印刷して同じように見える場合は、末尾の改行文字に問題がある可能性があります。おそらく、比較する前に文字列をトリミングしてみることができますか?var_dumpを実行する、文字列の長さが表示されるため、問題を特定するのに役立つ場合があります。

また、次のチェックをお勧めします(||および厳密な比較演算子に注意してください)。

if ($passwd !== $pass_confirm || $new_email !== $email_confirm) {
    echo "Email and/or password do not match";
    return false;
}
于 2012-04-05T12:20:59.287 に答える