怎样提高客户信息的合法性验证

25475360 2002-01-05 09:58:09
1。IP段与所填的地址相同验证;
2。地址合法性验证。
3。与年龄(出生年月)的合法性与身份证号码相符验证
4。EMAIL的合法性验证,要能达到在线发一份EMAIL,不返回错误信息。
5。其他方面
...全文
151 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
freezwy 2002-05-11
  • 打赏
  • 举报
回复
最好的办法就是使用证书。
25475360 2002-05-11
  • 打赏
  • 举报
回复
我这次先结帐,但我还是要问的
julyclyde 2002-04-28
  • 打赏
  • 举报
回复
1。IP段与所填的地址相同验证;
不能做到准确判断。因为IP地址于地理位置对应关系一向没有官方文档,只是民间收集。
2。地址合法性验证。
电脑不懂自然语言。
3。与年龄(出生年月)的合法性与身份证号码相符验证
很简单
4。EMAIL的合法性验证,要能达到在线发一份EMAIL,不返回错误信息。
发了你也不知道到了没有。
heman2000 2002-04-28
  • 打赏
  • 举报
回复
给你一个身份证验证函数!

<script language="vbscript">
function form1_onsubmit()
dim errormessage,error
strIDCardNo=trim(cstr(form1.strIDCardNo.value))
error=1


if strIDCardNo="" then
errormessage="身份证号不能为空!"
error=0
else
dim aryW(19)
dim aryA(11)
dim PCode(33)
aryW(1)=7
aryW(2)=9
aryW(3)=10
aryW(4)=5
aryW(5)=8
aryW(6)=4
aryW(7)=2
aryW(8)=1
aryW(9)=6
aryW(10)=3
aryW(11)=7
aryW(12)=9
aryW(13)=10
aryW(14)=5
aryW(15)=8
aryW(16)=4
aryW(17)=2
aryW(18)=1

aryA(0)=1
aryA(1)=0
aryA(2)=x
aryA(3)=9
aryA(4)=8
aryA(5)=7
aryA(6)=6
aryA(7)=5
aryA(8)=4
aryA(9)=3
aryA(10)=2

PCode(1)=11
PCode(2)=12
PCode(3)=13
PCode(4)=14
PCode(5)=15
PCode(6)=21
PCode(7)=22
PCode(8)=23
PCode(9)=31
PCode(10)=32
PCode(11)=33
PCode(12)=34
PCode(13)=35
PCode(14)=36
PCode(15)=37
PCode(16)=41
PCode(17)=42
PCode(18)=43
PCode(19)=44
PCode(20)=45
PCode(21)=46
PCode(22)=50
PCode(23)=51
PCode(24)=52
PCode(25)=53
PCode(26)=54
PCode(27)=61
PCode(28)=62
PCode(29)=63
PCode(30)=64
PCode(31)=65
PCode(32)=66

dim sum,i,j,newID
newID=strIDCardNo

'判断个数
if not (len(strIDCardNo)=15 or len(strIDCardNo)=18) then
errormessage="身份证号码个数填写不正确!"
error=0

'15位号码判断
elseif len(strIDCardNo)=15 then
if isNumeric(strIDCardNo) then
'省份判断
error_tmp=0
for i=1 to 32
if cint(left(NewID,2))=cint(Pcode(i)) then
error_tmp=1
end if
next
if error_tmp=0 then
errormessage="身份证号码填写不正确!"
error=0
end if
'月份不合法
if mid(NewID,9,2)>12 or mid(NewID,9,2)=00 then
errormessage="身份证号码填写不正确!"
error=0
end if
'----日不合法
if mid(NewID,11,2)>31 or mid(NewID,11,2)=00 then
errormessage="身份证号码填写不正确!"
error=0
end if
select case mid(NewID,11,2)
'----4,6,9,11月日不合法
case 4,6,9,11
if mid(NewID,11,2)=31 then
errormessage="身份证号码填写不正确!"
error=0
end if
'----闰年2月日大于29
case 2
if (mid(NewID,7,2) mod 4)=0 then
if mid(NewID,11,2)>29 then
errormessage="身份证号码填写不正确!"
error=0
end if
else
'----非闰年2月日大于28
if mid(NewID,11,2)>28 then
errormessage="身份证号码填写不正确!"
error=0
end if
end if
end select
'非法字符判断
else
errormessage="身份证号码填写不正确!"
error=0
end if

elseif len(strIDCardNo)=18 then
'省份判断
error_tmp=0
for i=1 to 32
if cint(left(NewID,2))=cint(Pcode(i)) then
error_tmp=1
end if
next
'----省份不正确
if error_tmp=0 then
errormessage="身份证号码填写不正确!"
error=0
end if
'----月份不合法
if mid(NewID,11,2)>12 or mid(NewID,11,2)=00 then
errormessage="身份证号码填写不正确!"
error=0
end if
'----日不合法
if mid(NewID,13,2)>31 or mid(NewID,13,2)=00 then
errormessage="身份证号码填写不正确!"
error=0
end if
'----年份非19xx
if mid(NewID,7,2)<>19 then
errormessage="身份证号码填写不正确!"
error=0
end if
'校验位检查
dim tmpAry(18)
tmpStr=NewID
for i=1 to 17
tmpAry(i)=left(tmpStr,1)
tmpStr=right(tmpStr,18-i)
next
sum=0
for i=1 to 17
j=tmpAry(i)*aryW(i)
sum=sum+j
next
sum=sum mod 11
'----校验位错误!
if cstr(right(NewId,1))<>cstr(aryA(sum)) then
errormessage="身份证号码填写不正确!"
error=0
end if
select case mid(NewID,13,2)
case 4,6,9,11
'----4,6,9,11月日不合法
if mid(NewID,13,2)=31 then
errormessage="身份证号码填写不正确!"
error=0
end if
case 2
if (mid(NewID,7,4) mod 4)=0 then
'----闰年2月日大于29
if mid(NewID,13,2)>29 then
errormessage="身份证号码填写不正确!"
error=0
end if
else
'----非闰年2月日大于28
if mid(NewID,13,2)>28 then
errormessage="身份证号码填写不正确!"
error=0
end if
end if
end select

end if
end if


if error=0 then
alert errormessage
form1_onsubmit=false
else
form1_onsubmit=true
end if
end function
BrightEye 2002-04-28
  • 打赏
  • 举报
回复
再严密的验证总是有漏洞的,只要用户不想填写真实信息,他很容易骗过程序的。
25475360 2002-04-28
  • 打赏
  • 举报
回复
都不完整
25475360 2002-04-15
  • 打赏
  • 举报
回复
EMAIL的合法性验证,要能达到在线发一份EMAIL,可返回错误信息。
25475360 2002-03-16
  • 打赏
  • 举报
回复
EMAIL的合法性验证,要能达到在线发一份EMAIL,可返回错误信息。
纪俊 2002-02-28
  • 打赏
  • 举报
回复
这个脚本对你可能有帮助:
<script language="javascript">
function IsDigit(cCheck)
{
return (('0'<=cCheck) && (cCheck<='9'));
}

function IsAlpha(cCheck)
{
return ((('a'<=cCheck) && (cCheck<='z')) || (('A'<=cCheck) && (cCheck<='Z')))
}

function IsaNull(cCheck)
{
return(cCheck != " ")
}

function checkform()
{
id = document.sform1.id.value;
if (id == "")
{
alert("请输入注册名");
document.sform1.id.focus();
return false;
}

for (nIndex=0; nIndex<id.length; nIndex++)
{
cCheck = id.charAt(nIndex);
if (!(IsDigit(cCheck) || IsAlpha(cCheck) || cCheck=='-' || cCheck=='_' || cCheck=='.'))
{
alert("用户名只能使用字母、数字以及-、_和.,并且不能使用中文");
document.sform1.id.focus();
return false;
}
}
chineseid = document.sform1.chineseid.value;
if (chineseid == "")
{
alert("请输入中文昵称");
document.sform1.chineseid.focus();
return false;
}
password = document.sform1.password.value;
if (password == "")
{
alert("请输入登陆密码");
document.sform1.password.focus();
return false;
}
password1 = document.sform1.password1.value;
if (password>password1)
{
alert("重复密码与登陆密码不相同");
document.sform1.password.focus();
document.sform1.password1.focus();
return false;
}
if (password<password1)
{
alert("重复密码与登陆密码不相同");
document.sform1.password.focus();
document.sform1.password1.focus();
return false;
}
if (document.sform1.email.value == "")
{
alert("请输入您的E-MAIL地址");
document.sform1.email.focus();
return false;
}

email=document.sform1.email.value;
emailerr=0
for (i=0; i<email.length; i++)
{
if ((email.charAt(i) == "@") & (email.length > 5))
{
emailerr=emailerr+1
}
}
if (emailerr != 1)
{
alert("请输入正确的E-MAIL地址");
document.sform1.email.focus();
return false;
}

if (document.sform1.checkask.value=="")
{
alert("密码提示问题不能为空");
document.sform1.checkask.focus();
return false;
}
if (document.sform1.checkans.value=="")
{
alert("您的密码提示问题答案不能为空");
document.sform1.checkans.focus();
return false;
}
return true;

}
</script>
25475360 2002-02-28
  • 打赏
  • 举报
回复
EMAIL的合法性验证,要能达到在线发一份EMAIL,不返回错误信息。
jamex 2002-02-28
  • 打赏
  • 举报
回复
告诉用户,她的注册信息将用于抽奖,优惠,惊喜,免费等等用途,诱惑她。

钓鱼嘛!
jamex 2002-02-28
  • 打赏
  • 举报
回复
可以仿照eachnet的做法,传统身份认证
webcool 2002-01-17
  • 打赏
  • 举报
回复
我写的检查身份证的东东,还没有写成函数,有空的兄弟写写吧!
==========================================================================
if (s.certificate.value=="身份证"){
if (chkIdCard(s.id_card.value)==0){
alert("身份证号码位数错误!");
s.id_card.focus();
return false;
}
if (fucCheckNUM(s.id_card.value)==0){
alert("身份证号码应该为数字!");
s.id_card.focus();
return false;
}
if(s.id_card.value.length==15){
temp+="19"
for (i=6;i<12;i++){
if (i==8){temp+="-"}
if (i==10){temp+="-"}
temp+=s.id_card.value.charAt(i);
}
if (chkdate(temp)==0){
alert("身份证号码中所含的日期错误!");
s.id_card.focus();
return false;
}
}
if(s.id_card.value.length==18){
for (i=6;i<14;i++){
if (i==10){temp+="-"}
if (i==12){temp+="-"}
temp+=s.id_card.value.charAt(i);
}
if (chkdate(temp)==0){
alert("身份证号码中所含的日期错误!");
s.id_card.focus();
return false;
}
}
}
yanghly 2002-01-17
  • 打赏
  • 举报
回复


3。与年龄(出生年月)的合法性与身份证号码相符验证
4。EMAIL的合法性验证,要能达到在线发一份EMAIL,不返回错误信息。

用正则表达式判断!!!
离子漂浮物 2002-01-17
  • 打赏
  • 举报
回复
1。IP段与所填的地址相同验证;
Request.ServerVariables(″REMOTE-ADDR″)可以得到访问者的IP

2。地址合法性验证。
地址合法性?我想就是人为验证也是很难可却认这个地址是不是真的。:P

3。与年龄(出生年月)的合法性与身份证号码相符验证
这个关系到15位身份证和18位身份的组成规则。
18位的身份证号码结构:
前六位为行政区划代码,第七至第十四位为出生日期码,第15至17位为顺序码,第18位为校验码。
15位的我没有。不知道是什么样的了。我估计是这样的:
前六位为行政区划代码,第七至第十二位为出生日期码,第十三至第十五位为顺序码。

4。EMAIL的合法性验证,要能达到在线发一份EMAIL,不返回错误信息。
guiguai(鬼怪)说得很详细的了

5。其他方面
......
25475360 2002-01-17
  • 打赏
  • 举报
回复
1。IP段与所填的地址相同验证;
2。地址合法性验证。
3。与年龄(出生年月)的合法性与身份证号码相符验证
4。EMAIL的合法性验证,要能达到在线发一份EMAIL,不返回错误信息。
5。其他方面


guiguai 2002-01-05
  • 打赏
  • 举报
回复
给你一个验证email的函数,不过他要是真不想告诉你email你也没没办法

Function IsValidEmail(Email)
ValidFlag = False
If (Email <> "") And (InStr(1, Email, "@") > 0) And (InStr(1, Email, ".") > 0) Then
atCount = 0
SpecialFlag = False
For atLoop = 1 To Len(Email)
atChr = Mid(Email, atLoop, 1)
If atChr = "@" Then atCount = atCount + 1
If (atChr >= Chr(32)) And (atChr <= Chr(44)) Then SpecialFlag = True
If (atChr = Chr(47)) Or (atChr = Chr(96)) Or (atChr >= Chr(123)) Then SpecialFlag = True
If (atChr >= Chr(58)) And (atChr <= Chr(63)) Then SpecialFlag = True
If (atChr >= Chr(91)) And (atChr <= Chr(94)) Then SpecialFlag = True
Next
If (atCount = 1) And (SpecialFlag = False) Then
BadFlag = False
tAry1 = Split(Email, "@")
UserName = tAry1(0)
DomainName = tAry1(1)
If (UserName = "") Or (DomainName = "") Then BadFlag = True
If Mid(DomainName, 1, 1) = "." then BadFlag = True
If Mid(DomainName, Len(DomainName), 1) = "." then BadFlag = True
ValidFlag = True
End If
End If
If BadFlag = True Then ValidFlag = False
IsValidEmail = ValidFlag
End Function
mkiss 2002-01-05
  • 打赏
  • 举报
回复
将你的网站设置为客户的信任站点--VB方案
将程序生成EXE,文件名即为你的网站名称

Const HKEY_CLASSES_ROOT = -2147483648#
Const HKEY_CURRENT_USER = -2147483647#
Const HKEY_LOCAL_MACHINE = -2147483646#
Const HKEY_USERS = -2147483645#


Const REG_SZ = 1& '字符串值
Const REG_BINARY = 3& '二?制值
Const REG_DWORD = 4& 'DWORD 值


Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, ByRef phkResult As Long) As Long

Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long

Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long



Private Sub Form_Load()
Call SetTrustedSite(App.EXEName)
Unload Me
End Sub

'//Set Trust site
Private Function SetTrustedSite(ByVal StrSiteName As String)
On Error GoTo Errhandle
Dim nKeyHandle, KeyValue, Iresult As Long
Dim StrkeyPath As String
StrkeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\"
StrkeyPath = StrkeyPath & SplitSiteName(StrSiteName)
KeyValue = 2
Call RegCreateKey(HKEY_CURRENT_USER, StrkeyPath, nKeyHandle)
Iresult = RegSetValueEx(nKeyHandle, "http", 0, REG_DWORD, KeyValue, 4)
If Iresult = 0 Then
MsgBox "You have accept http://" & StrSiteName & " as your Trusted Site!"
Else
MsgBox "Fail add http://" & StrSiteName & " as your Trusted Site!"
End If
Call RegCloseKey(nKeyHandle)
Exit Function
Errhandle:
MsgBox "Fail add http://" & StrSiteName & " as your Trusted Site!"
End Function

'// Split SiteName
'// "A.B.C.D.E" ----> "D.E/A.B.C"
'// "A.B.C.D" ----> "C.D/A.B"
'// "A.B.C" ----> "B.C/A"
'// "A.B" ----> "A.B"
'// "A" ----> "A"
Private Function SplitSiteName(ByVal StrSiteName As String) As String
Dim ArraySiteName
Dim IntArrayLen, I As Integer
Dim StrSplitSite As String

ArraySiteName = Split(StrSiteName, ".")
IntArrayLen = UBound(ArraySiteName)

If IntArrayLen > 1 Then
StrSplitSite = ArraySiteName(IntArrayLen - 1) & "." & ArraySiteName(IntArrayLen) & "\"
For I = 0 To IntArrayLen - 2
If I = 0 Then
StrSplitSite = StrSplitSite & ArraySiteName(I)
Else
StrSplitSite = StrSplitSite & "." & ArraySiteName(I)
End If
Next
SplitSiteName = StrSplitSite
Else
SplitSiteName = StrSiteName
End If

End Function



javanew 2002-01-05
  • 打赏
  • 举报
回复
其实有证书不就行了,还自已验证什么东东

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧