密码未正确验证

时间:2013-08-28 18:49:25

标签: php javascript html forms validation

我有一个表单,它使用Javascript来定义用于标记目的的起始值,以便与IE,Firefox和Chrome交叉兼容。为了使其正常工作,JS根据用户输入或未输入的内容更改输入的类型。

然后我有PHP表单验证,确保密码符合必须包含至少一个数字的规定,但每次我提交表格时都应该验证密码,它会引发我的密码必须出错的错误包含至少一个数字。

相关表格输入:

<input type="text" name="password" class="reg_pass" value="Password" 
onfocus="if (value == 'Password') { value = ''; } setAttribute('type', 'password');"
onblur="if ( value == '') { value='Password'; }
if ( value !== '' && value == 'Password') { setAttribute('type', 'text'); }" />

使用了相关的PHP验证:

elseif (!preg_match("/[A-Z][a-z][0-9]+/", $password)) {

    $msg = "Password must contain at least one number";

}

注意:

我使用了print_r($ _ POST),在提交时,密码post变量显示已输入的密码。

我一直在寻找解决方案的几个小时,但无济于事。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您的正则表单形式不正确。我不完全确定你放的那个会匹配什么,但我很确定这是你想要的那个:

\d+

所有这一切都与任何数字匹配(实际上+可能也没有必要),所以如果没有匹配,你可以确信在任何地方都没有数字。

答案 1 :(得分:0)

这是否曾通过验证?目前,您的正则表达式只接受具有以下特征的密码:第一个字符必须是大写字母,第二个字符必须是小写字母,后跟一个或多个数字。

尝试更像这样的事情:

/[A-Za-z0-9]+/

你也可以这样做:

/[a-z0-9]+/i

i标志使其不区分大小写。

如果您希望它包含至少一个数字,您可以执行以下操作:

/\d/

您可以一个接一个地运行匹配。