2012-04-05 41 views
0

我想比較兩個字符串,我從HTML中的密碼錶單中獲得。php中的字符串比較

它們存儲在$_POST的變量中。我將它們打印出來,它們看起來是一樣的,但下面的代碼永遠不會評估爲真,只是假。爲什麼會發生?

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

我很感激任何幫助。

+0

如果這是一個功能的一部分(return語句表明這一點),那麼不要忘記返回「真」。然後,正如其他人已經回答,使用**或**而不是**和**。 – martinstoeckli 2012-04-05 12:27:25

回答

7

要顯示錯誤消息的代碼,電子郵件和密碼都必須是錯誤的。

嘗試使用||而不是&&,因此只有其中一個錯誤時顯示錯誤。

+0

謝謝。我還修復了使用strcmp的代碼,這似乎解決了問題。 – 2012-04-05 12:42:08

1

如果你打印出來,它們看起來一樣,你可能會有一個尾隨的換行符問題。也許你可以試試trimming比較前的字符串?做var_dump可能有助於查明問題,因爲它顯示字符串的長度。

另外,我建議以下檢查(注意||和嚴格的比較操作符):

if ($passwd !== $pass_confirm || $new_email !== $email_confirm) { 
    echo "Email and/or password do not match"; 
    return false; 
}