2012-04-05 102 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; 
}