我有以下代码:
if(strcmp($_POST['password'], $_POST['password-rpt']) == 0) {
$password_field = $_POST['password'];
echo "Password created" . "<br />";
} else {
echo "blarg! Password mismatch!!!";
}我知道,与C/C++一样,当两个字符串相同时,strcmp应该返回0,但当我用html文件测试它时,输入两个相同的字符串或两个不同的字符串,这两种情况都会转到错误情况下,我的输出是"blarg!密码错配!“
以下是我使用的表格:
<form method="post" action="register.php">
Name: <input type="text" name = "name" id="name" /><br />
Password: <input type="password" name ="password" id = "password" /> <br />
Confirm Password: <input type="password" name="password_rpt" id="password_rpt" /> <br />
email: <input type="text" name = "remail" id = "remail" /><br />
<input type = "submit" name="register" id="register" value = "Sign Up" />
</form>我遗漏了什么?
更新:我将条件更改为if($_POST['password'] == $_POST['password-rpt'])。帮不上忙。
发布于 2011-08-02 15:57:06
您可以简单地使用:
$_POST['password'] === $_POST['password-rpt']此外,在您的表单中,您使用了名称password_rpt,而在您的代码中,您引用了password-rpt。您需要更改其中之一,以使名称匹配。
查看字符串手册页面,了解有关PHP处理的更多信息。我还建议查看语言参考以获得一般指导。
请记住,PHP是一种高级脚本语言,与C++非常不同,即使它们看起来可能是一样的。有些东西在C++中是非常可行的,但在PHP中却是不可行的,反之亦然。
发布于 2011-08-02 16:21:19
对于真正想要使用=== (相同)的密码,== (相等)将返回true,即使大小写不匹配.
if( $_POST['password'] === $_POST['password-rpt'] ) {
$password_field = $_POST['password'];
echo "Password created" . "<br />";
} else {
echo "blarg! Password mismatch!!!";
}发布于 2016-05-11 15:09:01
请记住,strcmp()返回:
str1小于str2;str1大于str2;they相等,则为0;类似于== (相等运算符),如strcmp('1e3', '1000') (返回值0)或'1e3'=='1000' (true)。
注意,PHP7有一个类似的运算符,即宇宙飞船操作符(<=>),并且具有与strcmp()相同的行为。
在您的情况下,您应该使用:
if ($_POST['password'] === $_POST['password-rpt'])
https://stackoverflow.com/questions/6914901
复制相似问题