仙灵女巫天赋新版本:客户端验证未通过却提交表单

来源:百度文库 编辑:高考问答 时间:2024/04/29 03:56:41
客户端验证未通过却提交表单,为什么?有几种情况?

楼主要的是在客户端验证,而不是在服务器端验证。
在客户端验证一般采用的是JAVASCRIPT来做(当然也可以采用VBSCRIP或其他脚本语言,但这一切都基于客户端,而不是提交后在服务器端来验证)。。

楼主的问题,比如一下代码:
<form name="form1" method="post">
<input type="text" name="aa">
<input type="submit" value="提交" onclick="check();">
</form>
<script language="javascript">
function check()
{
if(document.form1.aa.value.length=="")
{
alert("你未输入内容,请先输入后再提交");
return false;
//这里只是做了一个最简单的检查用户是否输入了内容,如果没输入内容,则返回假,即不提交。
}
return true;
//这里是当上面的if判断不成功(即用户有输入了内容,那就提交;
}
</script>

楼主可以用我给的这段代码做参考做你的表单验证。。这一切都基于客户端,当然有些验证要用到数据库的,就要提交到服务器端了)

补充:
btok:
你想的太多了。呵呵,在客户端验证的一个重要理由就是减轻服务器的压力。。

如果说像你这样完全不采用在客户端验证的方法,只在服务器端验证就能保证安全。那么你去看看淘宝,去看看阿里巴巴,去看看腾讯,去看看网易吧。。呵呵。。如果他们也都把这些验证机制全部放到服务器端,他们再增加一倍的服务器恐怕也没用,恶意注册机想要搞定他们任何一台服务器那就是随便的事了。。

在客户端验证并不代码在服务器端就不验证了。恰恰相反,把一些检验放到客户端验证过后再提交到服务器,这样更能保证数据的准确性,同时也能减少与客户端互动的时间。。

而你所说的外部提交,想必你并没想是怎么回事吧?外部提交一般是指从外部提交数据到另外的服务器,而不是指外提交数据到客户端。你了解吗?

想想看现在还有多少人的浏览器会屏弊掉JS?你难道不知道最近热得红透了的Ajax技术?你去看看网易的163邮箱吧,呵呵,标得大大的写着:DIV+JS技术。。。

其实你可以在login.asp中加这样一句代码:RESPONSE.END(),如下:

<!--#include virtual="/Conn/Conn.asp"-->
<%
If ........... Then '验证的条件

Check_Result = "Fail"
............. '验证非法,退出

RESPONSE.END()

End If

这样就保证遇错后代码不会继续执行下去!

以你的程序为asp为例,其他语言的道理是一样的,可以类推。

<!--#include virtual="/Conn/Conn.asp"-->
<%
If ........... Then '验证的条件

............. '验证非法,退出

End If

psql="select * from Test"
rs.open psql,conn,3

rs("Test")="Ok"

rs.close
set rs=nothing
%>

你会发现不管验证是否通过,数据库里Test记录都会被赋值,也就是不管验证是否通过,后面的语句都会被执行。这是非常危险的,我以前一直没有意识到这一点,后来才发现自己是多么的愚蠢,现在的解决方法如下:

<!--#include virtual="/Conn/Conn.asp"-->
<%
If ........... Then '验证的条件

Check_Result = "Fail"
............. '验证非法,退出

End If

If Check_Result<>"Fail" Then

psql="select * from Test"
rs.open psql,conn,3

rs("Test")="Ok"

rs.close
set rs=nothing

End If
%>

通过验证给出一个返回值,通过判断返回值来决定是否运行后面的语句。这样就解决了问题。

闲人设计:在客户端用javascript做验证太危险了,可以通过外部提交、JAVASCRIPT屏蔽检测、JAVASCRIPT手动提交等至少五种方法绕过验证提交表单!而且验证方法等于摆在别人眼皮地下……碰到禁用JAVASCRIPT的我看你怎么哭……

harvey168:Response.End只会中止对客户端的输出,但服务器代码依然会被执行!!

执行顺序应该是先验证,如果验证不通过则警告,验证通过后在执行表单提交。

提交表单的时候,没有进行必要的验证~