第2个回答 2006-03-11
以你的程序为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只会中止对客户端的输出,但服务器代码依然会被执行!!