article:
tag:
mod code publish @2011-06-28

JScript > jscript 随机数图片验证码生成函数 checkcode 上一篇 | 下一篇

validator, verify, validate, checkcode, jscript

1. 使用演示
2. checkcode.asp 源码


1. 使用演示
  1. <%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Typecontent="text/html; charset=utf-8" />
  6. <title>shawl.qiu template</title>
  7. </head>
  8. <body>
  9. <img src="checkcode.asp?length=5&sessionname=test" />
  10. <%
  11.  Response.Write("<li/>"+Session("test"));
  12. %>
  13. </body>
  14. </html

2. checkcode.asp 源码
  1. <%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>
  2. <%
  3.  var sessionName = "checkcode";
  4.  if(Request.QueryString("sessionname")+""!="undefined")
  5.  {
  6.   sessionName = Request.QueryString("sessionname")+"";
  7.  }
  8.  
  9.  var startNum = 1000;
  10.  var endNum = 9999;
  11.  
  12.  var length = Request.QueryString("length")+"";
  13.  
  14.  if(!isNaN(length))
  15.  {
  16.   length-=0;
  17.   var startNum = fStrPadRight(1, "0", length);
  18.   var endNum = fStrPadRight(9, "9", length);
  19.  }
  20.  
  21.  function fStrPadRight(sSrc, sPad, nLen)
  22.  {
  23.   if(!sSrc)return false;
  24.   if(!sPad)sPad='0';
  25.   if(!nLen)nLen=2;
  26.   sSrc+='';
  27.   if(sSrc.length>=nLen)return sSrc;
  28.   sPad=new Array(nLen+1).join(sPad);
  29.   var re=new RegExp('^(.{'+(nLen)+'}).*');
  30.   return (sSrc+sPad).replace(re,'$1');
  31.  } 
  32.  
  33.  checkcode(startNum-0, endNum-0, sessionName);
  34.  
  35.   function checkcode(nStart, nOver, sSession)
  36.   {
  37.   if(!nStart) nStart=1000;
  38.   if(!nOver) nOver=9999;
  39.   if(!sSession) sSession='checkcode';
  40.      var ar=[10];
  41.    //0
  42.    ar[0]=new Array('0x3c', '0x66', '0xc3', '0xc3', '0xc3', '0xc3', '0xc3', 
  43.     '0xc3', '0x66', '0x3c');
  44.    //1
  45.    ar[1]=new Array('0x18', '0x1c', '0x18', '0x18', '0x18', '0x18', '0x18', 
  46.     '0x18', '0x18', '0x7e');
  47.    //2
  48.    ar[2]=new Array('0x3c', '0x66', '0x60', '0x60', '0x30', '0x18', '0x0c', 
  49.     '0x06', '0x06', '0x7e');
  50.    //3
  51.    ar[3]=new Array('0x3c', '0x66', '0xc0', '0x60', '0x1c', '0x60', '0xc0', 
  52.     '0xc0', '0x66', '0x38');
  53.    //4
  54.    ar[4]=new Array('0x38', '0x3c', '0x36', '0x33', '0x33', '0x33', '0xff', 
  55.     '0x30', '0x30', '0xfe');
  56.    //5
  57.    ar[5]=new Array('0xfe', '0xfe', '0x06', '0x06', '0x3e', '0x60', '0xc0', 
  58.     '0xc3', '0x66', '0x3c');
  59.    //6
  60.    ar[6]=new Array('0x60', '0x30', '0x18', '0x0c', '0x3e', '0x63', '0xc3', 
  61.     '0xc3', '0x66', '0x3c');
  62.    //7
  63.    ar[7]=new Array('0xff', '0xc0', '0x60', '0x30', '0x18', '0x18', '0x18', 
  64.     '0x18', '0x18', '0x18');
  65.    //8
  66.    ar[8]=new Array('0x3c', '0x66', '0xc3', '0x66', '0x3c', '0x66', '0xc3', 
  67.     '0xc3', '0x66', '0x3c');
  68.    //9
  69.    ar[9]=new Array('0x3c', '0x66', '0xc3', '0xc3', '0x66', '0x3c', '0x18', 
  70.     '0x0c', '0x06', '0x03');
  71.     //Response.Buffer = false;
  72.     with(Response){
  73.    Expires = -1 ;
  74.    AddHeader("Pragma","no-cache") ;
  75.    AddHeader("cache-ctrol","no-cache"); 
  76.   }
  77.     var nNum=fRandomBy(nStart,nOver)+'';
  78.   Session(sSession)=nNum;
  79.     //Response.write(Session(sSession));
  80.     var arDg=[];
  81.   for(var i=0; i<nNum.length; i++){
  82.    arDg[i]=nNum.charAt(i);
  83.   }
  84.    var sMarker='\r\n';
  85.    var nWidth=8*arDg.length;
  86.   var nHeight=10; 
  87.     Response.ContentType = "image/x-xbitmap";
  88.     var sImg='#define counter_width '+nWidth+sMarker+
  89.     '#define counter_height '+nHeight+sMarker+
  90.     'static unsigned char counter_bits[] = {'+sMarker
  91.   for(var i=0, i_=ar.length; i<i_; i++){
  92.    for(var j=0, k=arDg.length; j<k; j++){
  93.     sImg+=ar[arDg[j]][i]+',';
  94.    }
  95.   }
  96.    sImg=sImg.replace(/\,$/,'');
  97.    sImg+='};'+sMarker;
  98.        Response.write(sImg)
  99.     function fRandomBy(nUnder, nOver){
  100.    switch(arguments.length){
  101.     case 1: return parseInt(Math.random()*nUnder+1);
  102.     case 2: return parseInt(Math.random()*(nOver-nUnder+1) + nUnder);
  103.     defaultreturn 0;
  104.    }
  105.   }  // shawl.qiu code
  106.  } // end function checkcode(nStart, nOver, sSession) // shawl.qiu code
  107. %> 

@suches
http://btbtd.com/mods/code/item.php?uid=1&item=3745

发表于 @ 2007-02-26 22:36:25

画画
评论内容:
昵称:
验证码: