好的,我一直试图解决这个问题2天,这对我没有任何意义。所以我有一个注册表用户名,电子邮件,密码和重新输入密码。每个输入都有JavaScript,每个keyup将用户输入发送到php验证它,并在div下面显示“Good”,div为“password_feedback”(这一切都正常,如果我输入有效密码,它将会在“密码反馈”div中显示“good”
然后我检查JavaScript以查看“password_feedback”中的内容。如果“password_feedback”=“好”,“if语句”将在“check2”div中显示“good”,否则显示“bad”。但这不起作用它总会显示“坏”。
现在这里是奇怪的部分,我为所有4个输入做同样的事情(重新输入密码不会去php只是java)和“用户名”和“重新输入密码”工作,电子邮件和密码不。如果我改变
var password_good = document.getElementById('password_feedback')。innerHTML;
到
var password_good = document.getElementById('feedback')。innerHTML; (用户名反馈而非密码反馈)
然后它将适用于用户名。再次,“password_feedback”将显示“好”,就像它应该这样有效。
在javascript中如果我用用户名信息替换所有密码信息它将起作用,所以我知道ity工作正常。我甚至无法推测为什么这对密码不起作用,但对用户名起作用。 iv尝试了我能想到的一切,我缩小了页面,所以它只验证密码。 maby有人在那里知道我不知道的事情。
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#password_feedback').load( 'password-check.php').show();
$('#password_input').keyup(function(){
//username: is name of variable sent to php, form is name of form, username is name of input
$.post('password-check.php', { password: form.password.value},
function(result) {
$('#password_feedback').html(result).show();
});
});
});
</script>
<!-- begin snippet: js hide: false -->
<script type='text/javascript'>
function check_info1(){
var password_good = document.getElementById('password_feedback').innerHTML;
if(password_good == "Good"){
document.getElementById("check2").innerHTML = "good";
}
else{
document.getElementById("check2").innerHTML = "bad ";
}
}
</script>
<form name="form" onKeyUp="check_info()" onMouseUp="check_info1()" >
Username:<br />
<input type="text" id="username_input" name="username"><div id="feedback"> </div>
E-mail:<br/>
<input name="email" type="text" id="email_input" value=""><div id="email_feedback"> </div>
Password:<br/>
<input name="password" type="password" id="password_input" value=""><div id="password_feedback"></div>
Re-enter Password:<br/>
<input name="password2" type="password" id="password_retype" value=""><div id="password_feedback2"> </div>
<input type="submit" value="Submit" class="login_btn"/>
</form>
<div id="check"></div>
<div id="check2"></div>
$connect = mysqli_connect("localhost", "????", "????","?????");
if (mysqli_connect_errno()){
echo "failed" . mysqli_connect_error();
}
$password = mysqli_real_escape_string($connect, $_POST['password']);
$check = mysqli_query($connect,"SELECT password FROM users WHERE password='$password'");
$check_num_rows = mysqli_num_rows($check);
if ($password==NULL)
echo "enter a password";
else if( preg_match( '~[A-Z]~', $password) &&
preg_match( '~[a-z]~', $password) &&
preg_match( '~\d~', $password) &&
(strlen( $password) > 6)){
echo "Good";
} else {
echo "Not good enough";
}
?>
答案 0 :(得分:0)
尝试将输入类型=“密码”更改为输入type =“text”:
浏览器中的密码被区别对待,因此您可能会因此而看到结果时发生冲突。您可以尝试使用keyup和使用的字符来捕获密码字段,但由于以下几个原因,这很麻烦:
最好只使用$(input).val()函数在每次keyup,keypress或change事件触发时存储为密码。