加载中...
查看文章
  • Asp生成随机字符的函数
  • 作者:未知 来源:本站整理 添加时间:2009年7月10日 字体:
  • 85379随机字符在asp中用途很多,比如给上传的图片文件命名,登陆验证码,还有文章类网站的干扰码等等,下面列举了8个常用的随机字符的函数.
    "9! ,F
    "9! ,F1.
    "9! ,Ffunction MyRandc(n)
    "9! ,F’生成随机字符,n为字符的个数 ,该随机函数由大小写字母组成,不含数字
    "9! ,Fdim thechr
    "9! ,Fthechr = ""
    "9! ,Ffor i=1 to n
    "9! ,F dim zNum,zNum2
    "9! ,F Randomize
    "9! ,F zNum = cint(25*Rnd)
    "9! ,F zNum2 = cint(10*Rnd)
    "9! ,F if zNum2 mod 2 = 0 then
    "9! ,F zNum = zNum + 97
    "9! ,F else
    "9! ,F zNum = zNum + 65
    "9! ,F end if
    "9! ,F thechr = thechr & chr(zNum)
    "9! ,Fnext
    "9! ,FMyRandc = thechr
    "9! ,Fend function
    "9! ,F
    "9! ,F使用方法:
    "9! ,F
    "9! ,FMyRandc(n) 生成随机字符,n为字符的个数,
    "9! ,F
    "9! ,F如:
    "9! ,Fresponse.write MyRandn(10)
    "9! ,F输出10个随机英文字母字符
    "9! ,F
    "9! ,F2.’功能说明:生成指定长度的随机字符,大小写英文字母加数字
    "9! ,Ffunction gen_key(digits)
    "9! ,F’定义并初始化数组
    "9! ,Fdim char_array(80)
    "9! ,F’初始化数字
    "9! ,Ffor i = 0 to 9
    "9! ,Fchar_array(i) = cstr(i)
    "9! ,Fnext
    "9! ,F’初始化大写字母
    "9! ,Ffor i = 10 to 35
    "9! ,Fchar_array(i) = chr(i + 55)
    "9! ,Fnext
    "9! ,F’初始化小写字母
    "9! ,Ffor i = 36 to 61
    "9! ,Fchar_array(i) = chr(i + 61)
    "9! ,Fnext
    "9! ,Frandomize ’初始化随机数生成器。
    "9! ,Fdo while len(output) < digits
    "9! ,Fnum = char_array(int((61 - 0 + 1) * rnd + 0))
    "9! ,Foutput = output + num
    "9! ,Floop
    "9! ,F’设置返回值
    "9! ,Fgen_key = output
    "9! ,Fend function使用方法:
    "9! ,F把结果返回给浏览器
    "9! ,Fresponse.write "本实例生成的十三位随机字符串为:"
    "9! ,Fresponse.write "
    "
    "9! ,Fresponse.write gen_key(13) ‘这里可以更改长度
    "9! ,Fresponse.write "
    "
    "9! ,F
    "9! ,F3.这个虽然不是函数,也不是常规的随机函数,但是当我"9! ,F们想让它随机输出我"9! ,F们指定的字符时,可以用到下面的方法。
    "9! ,F
    "9! ,Fdim a(5)
    "9! ,Frandomize
    "9! ,Ft=int(rnd*5)
    "9! ,Fa(0)="yingyu"
    "9! ,Fa(1)="laoda"
    "9! ,Fa(2)="wangzhan"
    "9! ,Fa(3)="maiwangzhan"
    "9! ,Fa(4)="hehe"
    "9! ,F使用方法:
    "9! ,Fresponse.Write(a(t))
    "9! ,F
    "9! ,F
    "9! ,F4.功能说明:返回16位随机字符,大小写英文字母加数字
    "9! ,Fpublic function Generate_Key()
    "9! ,F
    "9! ,FRandomize
    "9! ,F
    "9! ,Fdo
    "9! ,Fnum = Int((75 * Rnd)+48)
    "9! ,Ffound = false
    "9! ,Fif num >= 58 and num <= 64 then
    "9! ,Ffound = true
    "9! ,Felse
    "9! ,Fif num >=91 and num <=96 then
    "9! ,Ffound = true
    "9! ,Fend if
    "9! ,Fend if
    "9! ,Fif found = false then
    "9! ,FRSKey = RSKey+Chr(num)
    "9! ,Fend if
    "9! ,Floop until len(RSKey)=16
    "9! ,F
    "9! ,FGenerate_Key=RSKey
    "9! ,F
    "9! ,Fend function 使用方法:
    "9! ,FResponse.Write Generate_Key()
    "9! ,F
    "9! ,F5.功能说明:返回指定长度的随机字符,大小写英文字母加数字组成
    "9! ,F
    "9! ,Ffunction makePassword(byVal maxLen)
    "9! ,FDim strNewPass
    "9! ,FDim whatsNext, upper, lower, intCounter
    "9! ,FRandomize
    "9! ,FFor intCounter = 1 To maxLen
    "9! ,FwhatsNext = Int((1 - 0 + 1) * Rnd + 0)
    "9! ,FIf whatsNext = 0 Then
    "9! ,Fupper = 90
    "9! ,Flower = 65
    "9! ,FElse
    "9! ,Fupper = 57
    "9! ,Flower = 48
    "9! ,FEnd If
    "9! ,FstrNewPass = strNewPass & Chr(Int((upper - lower + 1) * Rnd + lower))
    "9! ,FNext
    "9! ,FmakePassword = strNewPass
    "9! ,Fend function使用方法:dim radpass
    "9! ,Fresponse.write makePassword(6) ’6位字符
    "9! ,F6.
    "9! ,F功能说明:生成任意位随机数的函数
    "9! ,F'strLong是随机数字的位数,返回指定长度的数字串,不含字母
    "9! ,FFunction rndNum (strLong)
    "9! ,FDim temNum
    "9! ,FRandomize
    "9! ,FDo While Len(RndNum) < strLong
    "9! ,FtemNum=CStr(Chr((57-48)*rnd+48))
    "9! ,FRndNum=RndNum&temNum
    "9! ,Floop
    "9! ,FEnd Function
    "9! ,F使用方法:
    "9! ,Fresponse.write rndNum(6)
    "9! ,F
    "9! ,F
    "9! ,F7.功能说明:取指定范围内的指定个数的随机数,无重复数
    "9! ,F
    "9! ,F指定5个参数:
    "9! ,FiLessCount----取最少n个数(Integer)
    "9! ,FiMostCount----取最多n个数(Integer)
    "9! ,FiLessNumber----取数最小范围(Integer)
    "9! ,FiMostNumber----取数最大范围(Integer)
    "9! ,FcutZero----是否要剔除无效零(Boolean)[例:true-->3,false-->003]
    "9! ,F
    "9! ,FFunction rndNumber(iLessCount,iMostCount,iLessNumber,iMostNumber,cutZero)
    "9! ,F If iLessCount = 0 OR iMostCount < iLessCount OR NOT _
    "9! ,F isnumeric(iLessCount) OR NOT isnumeric(iMostCount) OR NOT _
    "9! ,F isnumeric(iLessNumber) OR NOT isnumeric(iMostNumber) _
    "9! ,F OR (iLessNumber = iMostNumber) Then Exit Function
    "9! ,F ’最少个数零、最大个数小于最小个数、4个参数不为数字、最小数等于最大数就退出函数
    "9! ,F Randomize
    "9! ,F Dim iRnd,sZero
    "9! ,F Dim sOutput
    "9! ,F Dim iLength
    "9! ,F Dim sTempOutput
    "9! ,F Dim i
    "9! ,F Dim iCount
    "9! ,F iCount = int(rnd*(iMostCount-iLessCount+1))+iLessCount’计算随机取几个数
    "9! ,F iLength = len(iMostNumber)*iCount+(iCount*2)
    "9! ,F ’长度为最大数长度乘以随机个数加上随机个数乘以2(每个数前后各一个逗号,用来全字匹配)
    "9! ,F Do While len(sOutput) < iLength’输出小于长度时循环
    "9! ,F iRnd = int(rnd*(iMostNumber-iLessNumber+1))+iLessNumber’取随机数
    "9! ,F If Len(iRnd) < len(iMostNumber) Then’随机数长度小于取最大数长度
    "9! ,F For i = 1 To len(iMostNumber) - len(iRnd)’那么就要在首位加缺少的零
    "9! ,F sZero = sZero & "0"
    "9! ,F Next
    "9! ,F End If
    "9! ,F iRnd = sZero & iRnd’把零加在随机数前面
    "9! ,F sZero = empty’清空首位零,循环后还要调用
    "9! ,F If Instr(sOutput,","&iRnd&",") < 1 Then’不在输出变量中就放进去0
    "9! ,F sOutput = sOutput & "," & iRnd & ","
    "9! ,F End If
    "9! ,F Loop
    "9! ,F
    "9! ,F sOutput = mid(sOutput,2,len(sOutput)-2)’去掉首尾逗号
    "9! ,F sOutput = Replace(sOutput,",,",",")’把双逗号替换成单逗号
    "9! ,F
    "9! ,F If cutZero = true Then’如果要去除首位多余的零
    "9! ,F sTempOutput = split(sOutput,",")’拆分为数组
    "9! ,F sOutput = empty’清空,后面要重新放入
    "9! ,F For i = 0 To Ubound(sTempOutput)’逐个转换成数值后放入
    "9! ,F sOutput = sOutput & Clng(sTempOutput(i)) & ","
    "9! ,F Next
    "9! ,F sOutput = mid(sOutput,1,len(sOutput)-1)’去掉末尾逗号
    "9! ,F End If
    "9! ,F rndNumber = sOutput’输出
    "9! ,FEnd Function
    "9! ,F使用方法:
    "9! ,FResponse.Write rndNumber(1,3,5,15,false)
    "9! ,F
    "9! ,F8.功能说明:生成随机字符串,包括大小写字母,数字,和其它符合,常用于干扰码。
    "9! ,F
    "9! ,F参数说明:stars--干扰码最小长度,ends--干扰码最大长度
    "9! ,F
    "9! ,Ffunction rndcode(byVal stars,byVal ends)
    "9! ,F'by 天空诚 from:aspxhome.com
    "9! ,Fdim rndlen,i
    "9! ,Frandomize
    "9! ,FrndLen = int(stars*rnd+ends-stars)
    "9! ,Ffor i = 1 to rndLen
    "9! ,F randomize
    "9! ,F rndcode = rndcode & chr(int(127*rnd+1))
    "9! ,Fnext
    "9! ,Fend function
    "9! ,F使用方法:response.write rndcode(20,100)85376
  • 返回页面顶端
  • 上一篇:css教程:DIV布局网页的常见错误
  • 下一篇:爆笑情侣北京方言对骂
  • 返回上一页 打印本文 加入收藏
  • 页面最后更新时间:2011年5月18日