你这里第三行开始就有问题了。
你的思路应该是只要账号密码不对就一直循环对吧。如果正确就跳出。
所以你先判断需要跳出的情况,然后不满足的时候执行输入操作就可以。
简而言之,修改括号里的判断条件,然后你换一下判断顺序,成功时加入跳出操作。这样就行了。
第一次学PHP就是做这个验证..
html做个表单,
当表单onsubmit=return check()调用自写js来判断用户名和密码是否为空,
如果是空就alert不能为空,然后return false相反则return true
而接收的PHP也要验证是否为空,如果严谨点还要对提交的数据进行过滤,防止sql注入。
然后php再根据提交的数据搜MYSQL,如果用户名和密码都相同时,echo 登录成功,相反则登录失败.
<html><script>
function check(obj){
with(obj){
if((user.value+"").length <= 0){
alert("用户名不能为空")
return false
}else if((pwd.value+"").length <= 0){
alert("用户名不能为空")
return false
}else{
return true
}
}
}
</script>
<body>
<form action="check.php" method="post" onsubmit="return check(this)">
<input type="text" name="user" value="">
<input type="password" name="pwd" value="">
<input type="submit" name="submit" value="登录">
<input type="cancel" name="cancel" value="取消">
</form>
</body>
</html> <?php
$conn = mysql_connect( "数据库地址", "数据库用户名", "密码" )
mysql_query("set names utf8")
mysql_select_db( "数据库名" )
function inject_check($sql_str){
return preg_match("/select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile|%|eval|=|and|'||exec|count/i", $sql_str) // 进行过滤
}
if(!empty($_POST)){
foreach($_POST as $key => $value){
if(inject_check($value)){
exit ('<script>alert("地址栏输入发现有非法字符,请重新输入!")history.go(-1)</script>')
die ()
}
}
}
$res = mysql_query("SELECT count(*) as m from `表名` where 用户名='${_POST['user']}' AND 密码='${_POST['pwd']}'")
$row = mysql_fetch_object($res)
if($row->m >0){
echo "登陆成功"
}else{
echo "用户名或密码错误"
}
exit
?>
你在哪调用的这个函数啊? 应该在<form action="/checks/userServlet?sid=1" method="post" name="form1" onSubmit="return checkDate()">
看到没onSubmit="return checkDate()"这调用。
还有一种可能就是在你弹出不能为空的警告后焦点设到了不存在的文本框内。
if(form1.u_name.value=="")
{
alert("真实姓名不能为空!")
form1.u_name.focus()
return false
}
也就是form1.u_name.focus()这句文本框名写的不对,我这里叫u_name。