文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>表单提交合法性检测

表单提交合法性检测

时间:2010-05-28  来源:mx11

表单递交合法性检测-日期 <HTML>
<HEAD>
<SCRIPT LANGUAGE="JAVASCRIPT">
<!--
FUNCTION TESTKEY(E){
CHARS= "0123456789/";
E = WINDOW.EVENT;
IF(CHARS.INDEXOF(STRING.FROMCHARCODE(E.KEYCODE))==-1) WINDOW.EVENT.KEYCODE=0;
};
FUNCTION VALDATE(M, D, Y){
MONTHS= NEW ARRAY(31,28,31,30,31,30,31,31,30,31,30,31);
LEAP = FALSE;

IF((Y % 4 == 0) && ((Y % 100 != 0) || (Y %400 == 0)))
LEAP = TRUE;
IF((D < 1) || (D > 31) || (M < 1) || (M > 12) || (Y < 0))
RETURN(FALSE);
IF((D > MONTHS[M-1]) && !((M == 2) && (D > 28)))
RETURN(FALSE);
IF(!(LEAP) && (M == 2) && (D > 28))
RETURN(FALSE);
IF((LEAP) && (M == 2) && (D > 29))
RETURN(FALSE);
};

FUNCTION FORMATDATE(DATEFORM){
CDATE = DATEFORM.VALUE;
DSIZE = CDATE.LENGTH;
SCOUNT= 0;

IF (DOCUMENT.FORM1.DATE.VALUE == ""){
ALERT("请输入日期!");
RETURN FALSE ;
}

IF(CDATE==') RETURN;

FOR(VAR I=0; I < DSIZE; I++)
(CDATE.SUBSTR(I,1) == "/") SCOUNT++ : SCOUNT;
IF (SCOUNT != 2){
ALERT("输入的日期格式必须是 '月/日/年'");
DATEFORM.SELECT();
RETURN(FALSE);
};
//检测输入的年份是2位数还是4位数;
YSIZE = CDATE.SUBSTRING(CDATE.LASTINDEXOF("/")+1,DSIZE).LENGTH
IF(YSIZE<2 || YSIZE>4 || YSIZE == 3){
ALERT('您输入的日期错误 !');
DATEFORM.SELECT();
RETURN FALSE;
};
//将输入的日期字符串分隔成3部分 (MONTH, DAY & YEAR)
IDXBARI = CDATE.INDEXOF("/");
IDXBARII= CDATE.LASTINDEXOF("/");
STRM = CDATE.SUBSTRING(0,IDXBARI);
STRD = CDATE.SUBSTRING(IDXBARI+1,IDXBARII);
STRY = CDATE.SUBSTRING(IDXBARII+1,DSIZE);

STRM = (STRM.LENGTH < 2 '0'+STRM : STRM);
STRD = (STRD.LENGTH < 2 '0'+STRD : STRD);
IF(STRY.LENGTH == 2)
STRY = (STRY > 50 '19'+STRY : '20'+STRY);
DATEFORM.VALUE = STRM+'/'+STRD+'/'+STRY;

OK = VALDATE(STRM, STRD, STRY);
IF(OK==FALSE){
ALERT("您输入的日期错误 !");
DATEFORM.SELECT();
RETURN FALSE;
};
};


-->
</SCRIPT>

<TITLE>日期合法性检测</TITLE>
</HEAD>
<BODY ONLOAD="JAVASCRIPT:DOCUMENT.FORM1.DATE.FOCUS()" BGCOLOR="#FFFFFF">


<FORM NAME="FORM1" METHOD="POST" ONSUBMIT="RETURN TESTKEY(EVENT)" ACTION="">
输入正确的日期(月/日/年):
<INPUT TYPE=TEXT MAXLENGTH =10 NAME="DATE" SIZE=10 ONBLUR="FORMATDATE(THIS)" VALUE="">

</FORM>
</BODY>
</HTML>

说明:此脚本的用途是比较全面地检测输入日期的合法性,除了做非空检测外,还有效地检测了不同年月日期的合法性问题。比如在不是闰年的2月输入了29日等。黄色代码与脚本的检测无关,作用是页面读出页面后光标停留在日期文本框内。可以不要。

注意:(1)<FORM>标签中表单的名字FORM1和日期文本框的名字DATA(加重字体)与脚本是有关的,也就是说你如果改动了它们的名字,凡是在脚本中引用FROM1和DATA的部分都要修改。切切!!!

(2)JAVASCRIPT是大小写敏感的,所以注意大小写的区别和一致性原则。

(3)此脚本应该与CGI/ASP等服务器端的递交处理程序配合使用,用于客户端的合法性检测。本例没有将SUBMIT按钮作上去,你所处理的表单中可能包括更多的内容。

这里仅仅提供了一个脚本思路,你不一顶非要全部照搬脚本,可以仅仅取脚本的一部分使用(主要是算法)。
  --------------------------  

12.1.4  表单递交的合法性检测

在某些网站注册时,要求用户输入一定长度的用户名、密码和E-mail等。网站对用户名长度的检测和E-mail格式的检测就属于表单递交的合法性检测的范围。表单递交的合法性检测还包括输入信息是否包含某些字符、是否全是数字、是否全是字母等。下面定义了几个合法性检测的过程。

不允许包含指定字符的检测:

<%

Function Validate(str)                                                               'str为要检测的字符串

Validate = True                                                                           '初始化

invalid = " "                                                                        '非法字符为空,也可以写为其他字符

if  InStr(str,invalid)>0 Then                                            'str字符串中存在invalid字符

Validate = False

         End If

End Function

%>

只能输入数字的检测可以使用IsNumeric()函数来实现。

只能输入字母的检测:

<%

Function CheckLetter(str)                                                        'str为要检测的字符串

         CheckLetter = True                                                           '初始化

Letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"   '初始化

for i=1 to len(str)                                                               'len()函数返回字符串长度

                   'Mid(str,i,1) 返回字符串str第i个字符,UCase()函数将该字符转换为大写形式

                   checkchar = UCase(Mid(str,i,1))

                   If (InStr(Letters,checkchar)<=0) Then 'checkchar在Letters中不存在

                            CheckLetter = False

                            Exit Function                                          '跳出Function过程

                   End If

Next                                                                            '结束For循环

End Function

%>

E-mail格式的合法性检测:

<%

Function IsValidEmail(email)                                        '定义过程

Dim names, name, i, c

IsValidEmail = TRUE                                              '初始化

'使用@字符将email字符串分成几个子字符串并保存在names数组中

names = Split(email, "@")

'Ubound()函数返回数组names的最大下标,Ubound(names)<>1表明email字符串中存在

'的@字符并不是一个,所以email不是有效的邮件地址格式

If UBound(names) <> 1 Then                              

IsValidEmail = FALSE

                Exit Function                                                   '跳出Function过程

End If

For Each name in names                                               '数组names中的每一个元素

                If Len(name) <= 0 Then                                '字符串name内字符的数目

                       IsValidEmail = FALSE

                       Exit Function                                          '跳出Function过程

                End If

                For i = 1 To Len(name)                                'For循环

'Mid(name,i,1) 返回字符串name内第i个字符,LCase()函数将该字符转换成小写形式

c = LCase(Mid(name, i, 1))

                       'InStr()函数返回某字符串在另一字符串中第一次出现的位置。

'InStr("abcdefghijklmnopqrstuvwxyz_-.", c) <= 0表明字符c不在字符

'串"abcdefghijklmnopqrstuvwxyz_-."中。IsNumeric(c)判断字符c是否为数字

If InStr("abcdefghijklmnopqrstuvwxyz_-.", c) <= 0 _

AND NOT IsNumeric(c) Then   '不支持中文格式地址

                              IsValidEmail = FALSE

                              Exit Function                                 '跳出Function过程

                       End If

                Next                                                                  '结束For to循环

                   'left(name,1)返回字符串name最左边一个字符。Right(name,1)返回字符串name最右边一个字符

                If Left(name, 1) = "." or Right(name, 1) = "." Then

                      IsValidEmail = FALSE

                      Exit Function                                          '跳出Function过程

                End If

Next                                                                                    '结束For each循环

'email字符串中@右边部分不包含字符"."

If InStr(names(1), ".") <= 0 Then                          

                IsValidEmail = FALSE

                Exit Function

End If

'InStrRev()函数返回某字符串在另一个字符串中出现的从结尾计起的位置

'InStrRev(names(1), ".")得到字符"."在字符串names(1)中从结尾计起的位置

i = Len(names(1)) - InStrRev(names(1), ".")

'电子邮件最后一般为cn或com,长度为2或3

If i <> 2 AND i <> 3 Then                             

                IsValidEmail = FALSE

                 Exit Function

End If

If InStr(email, "..") > 0 Then                          'email中存在字符串".."

                IsValidEmail = FALSE

End If

End Function

%>

---------------------

 

表单递交合法性检测-只接受数字

 

如下代码加入HTML的<head>区:

<SCRIPT LANGUAGE="JavaScript">
function numericCheck(){
nr1=document.myform.content.value;
flg=0;
str="";
spc=""
arw="";
for (var i=0;i<nr1.length;i++){
cmp="0123456789"
tst=nr1.substring(i,i+1)
if (cmp.indexOf(tst)<0){
flg++;
str+=" "+tst;
spc+=tst;
arw+="^";
}
else{arw+="_";}
}
if (flg!=0){
if (spc.indexOf(" ")>-1) {
str+="和空格";
}
alert("这里只接受数字,发现"
+flg+"个不可接受的字符:\n"+str);
return false;
}
}
</SCRIPT>

如下代码加入HTML的<body>区,表单递交部分:

<form name="myform" method="post" enctype="text/plain" onsubmit="return numericCheck()" action="mailto:[email protected]">
<INPUT TYPE="text" name="content">
<INPUT TYPE="submit" NAME="submit" VALUE="递交">
</form>

注意:表单的名字和文本框的名字要保持前后一样。

 

-----------------

 

表单递交合法性检测-只允许填写字母

 

表单递交合法性检测-只允许填写字母  由吾搜网06月28日自WWW.WUSOU.NET收集后精心整理,欢迎阅览!

<script language="JavaScript">
<!--
function CheckForm()
{
if (document.form.yourname.value == "" )
{
alert ("请输入姓名!");
return false;
}

var Letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for (i=0; i < document.form.yourname.value.length; i++)
{
var CheckChar = document.form.yourname.value.charAt(i);
CheckChar = CheckChar.toUpperCase();
if (Letters.indexOf(CheckChar) == -1)
{
alert ("请输入英文姓名!");
return false;
}
}

}
// -->
</Script>

<form action="" name="form" method="post" onSubmit="return CheckForm()">
<div align="center">
<input type="text" name="yourname">
<input type="submit" name="submit" value="submit">
</div>
</form>  

吾搜网感谢《表单递交合法性检测-只允许填写字母  》教程原编写站长吾搜网整理,ASP编程教程的完善源自于你们无私的共享!

 

--------------------------------

这个可以写小数
<input name=A"& rs1("Kpi_YGJX_SJ_MX_ZBXH")  &" type=text  onkeypress='if (event.keyCode!=46 && event.keyCode!=45 && (event.keyCode<48 || event.keyCode>57)) event.returnValue=false' size=30 STYLE=width:60px;FONT:12px宋体;overflow:hidden value="& rs1("Kpi_YGJX_SJ_MX_QZ") &"></td></tr>"

这个只能写数字
<input name=A"& rs1("Kpi_YGJX_SJ_MX_ZBXH")  &" type=text  onkeyup="this.value=this.value.replace(/\D/g,'')" size=30 STYLE=width:60px;FONT:12px宋体;overflow:hidden value="& rs1("Kpi_YGJX_SJ_MX_QZ") &"></td></tr>"

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载