php服务器端验证
客户页面有一个循环输出的文本框,name属性为grade[],id为grade,现在我要对输入的内容作服务器端检测,条件如下:输入的内容必须是6位数字。代码如下。现在的问题是这个服务器端检测已经可以使用,检测没问题时执行下面的数据处理程序(这里没给出),但是如果输入内容不符合条件时,下面的数据处理程序仍然会执行。怎么办?求教。我尝试在检测程序里加了die();以及exit;和exit();都没有效果。如果您觉得用js也可以实现的话那就太好不过了,我给出表单(因为数据处理程序在本页面,所以action为空,你懂得。):
各位大侠帮忙,各显神通,描述应该很详细了,晚上来看。
<form name="form1" id="form1" action="" method="post">
<input type="text" size="6" name="grade[]" id="grade"/>
<input type="submit" name="submit" value="提交" />
</form>
<?php
$grade=$_POST['grade'];
for($j=0;$j<count($grade);$j++){
if($grade[$j]!=""){
if(strlen($grade[$j])==6){
if(!preg_match("/^\d*$/",$grade[$j])){
echo '<script language="javascript">alert("请正确输入数字!");window.history.go(-1);</script>';
break;
die();
}
}else{
echo '<script language="javascript">alert("输入内容必须是6位数字!");window.history.go(-1);</script>';
break;
die();
}
}
}
?>
------解决方案--------------------
HTML code
<script>
function foo(){
var grades=document.getElementsByName('grade[]');
var flag=true,grade_value=null;
for(var i=0,len=grades.length;i<len;i++){
grade_value=grades[i].value;
if(grade_value=="" || !/^\d{6}$/.test(grade_value)){
flag=false;
break;
}
}
return flag;
}
</script>
<form name="form1" id="form1" action="" method="post" onsubmit="return foo()">
<input type="text" size="6" name="grade[]" id="grade"/>
<input type="text" size="6" name="grade[]" id="grade"/>
<input type="submit" name="submit" value="提交" />
</form>