网上找的vbscript验证码生成代码,调用后可以显示验证码图片<%
Option Explicit
Response.buffer=true
Call Com_CreatValidCode("CHKCode")Sub Com_CreatValidCode(CHKCode)
Response.Expires = -9999 
Response.AddHeader "Pragma","no-cache"
Response.AddHeader "cache-ctrol","no-cache"
Response.ContentType = "Image/BMP"RandomizeDim i, ii, iiiConst cOdds = 6 ' 杂点出现的机率
Const cAmount = 26 ' 文字数量
Const cCode = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"' 颜色的数据(字符,背景)
Dim vColorData(1)
vColorData(0) = ChrB(255) & ChrB(50) & ChrB(50)  ' 蓝0,绿0,红0(黑色)
vColorData(1) = ChrB(255) & ChrB(255) & ChrB(255) ' 蓝250,绿236,红211(浅蓝色)' 随机产生字符
Dim vCode(4), vCodes
For i = 0 To 3
vCode(i) = Int(Rnd * cAmount)
vCodes = vCodes & Mid(cCode, vCode(i) + 1, 1)
Next
Session(CHKCode) = vCodes  '记录入Session,大写转换成小写LCase反之UCase.
' 字符的数据,
Dim vNumberData(35)
vNumberData(0) = "1110000111110111101111011110111101001011110100101111010010111101001011110111101111011110111110000111"
vNumberData(1) = "1111011111110001111111110111111111011111111101111111110111111111011111111101111111110111111100000111"
vNumberData(2) = "1110000111110111101111011110111111111011111111011111111011111111011111111011111111011110111100000011"
vNumberData(3) = "1110000111110111101111011110111111110111111100111111111101111111111011110111101111011110111110000111"
vNumberData(4) = "1111101111111110111111110011111110101111110110111111011011111100000011111110111111111011111111000011"
vNumberData(5) = "1100000011110111111111011111111101000111110011101111111110111111111011110111101111011110111110000111"
vNumberData(6) = "1111000111111011101111011111111101111111110100011111001110111101111011110111101111011110111110000111"
vNumberData(7) = "1100000011110111011111011101111111101111111110111111110111111111011111111101111111110111111111011111"
vNumberData(8) = "1110000111110111101111011110111101111011111000011111101101111101111011110111101111011110111110000111"
vNumberData(9) = "1110001111110111011111011110111101111011110111001111100010111111111011111111101111011101111110001111"
vNumberData(10) = "1111011111111101111111101011111110101111111010111111101011111100000111110111011111011101111000100011"
vNumberData(11) = "1000000111110111101111011110111101110111110000111111011101111101111011110111101111011110111000000111"
vNumberData(12) = "1110000011110111101110111110111011111111101111111110111111111011111111101111101111011101111110001111"
vNumberData(13) = "1000001111110111011111011110111101111011110111101111011110111101111011110111101111011101111000001111"
vNumberData(14) = "1000000111110111101111011011111101101111110000111111011011111101101111110111111111011110111000000111"
vNumberData(15) = "1000000111110111101111011011111101101111110000111111011011111101101111110111111111011111111000111111"
vNumberData(16) = "1110000111110111011110111101111011111111101111111110111111111011100011101111011111011101111110001111"
vNumberData(17) = "1000100011110111011111011101111101110111110000011111011101111101110111110111011111011101111000100011"
vNumberData(18) = "1100000111111101111111110111111111011111111101111111110111111111011111111101111111110111111100000111"
vNumberData(19) = "1110000011111110111111111011111111101111111110111111111011111111101111111110111110111011111000011111"
vNumberData(20) = "1000100011110111011111011011111101011111110001111111010111111101101111110110111111011101111000100011"
vNumberData(21) = "1000111111110111111111011111111101111111110111111111011111111101111111110111111111011110111000000011"
vNumberData(22) = "1000100011110010011111001001111100100111110101011111010101111101010111110101011111010101111001010011"
vNumberData(23) = "1000100011110011011111001101111101010111110101011111010101111101100111110110011111011001111000110111"
vNumberData(24) = "1110001111110111011110111110111011111011101111101110111110111011111011101111101111011101111110001111"
vNumberData(25) = "1000000111110111101111011110111101111011110000011111011111111101111111110111111111011111111000111111"
vNumberData(26) = "1110001111110111011110111110111011111011101111101110111110111011111011101001101111011001111110001011"
vNumberData(27) = "1000001111110111011111011101111101110111110000111111010111111101101111110110111111011101111000110011"
vNumberData(28) = "1110000011110111101111011110111101111111111001111111111001111111111011110111101111011110111100000111"
vNumberData(29) = "1000000011101101101111110111111111011111111101111111110111111111011111111101111111110111111110001111"
vNumberData(30) = "1000100011110111011111011101111101110111110111011111011101111101110111110111011111011101111110001111"
vNumberData(31) = "1000100011110111011111011101111101110111111010111111101011111110101111111010111111110111111111011111"
vNumberData(32) = "1001010011110101011111010101111101010111110101011111001001111110101111111010111111101011111110101111"
vNumberData(33) = "1000100011110111011111101011111110101111111101111111110111111110101111111010111111011101111000100011"
vNumberData(34) = "1000100011110111011111011101111110101111111010111111110111111111011111111101111111110111111110001111"
vNumberData(35) = "1100000011110111011111111101111111101111111110111111110111111111011111111011111111101110111100000011"' 输出图像文件头
Response.BinaryWrite ChrB(66) & ChrB(77) & ChrB(230) & ChrB(4) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) &_
  ChrB(0) & ChrB(0) & ChrB(54) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(40) & ChrB(0) &_
  ChrB(0) & ChrB(0) & ChrB(40) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(10) & ChrB(0) &_
  ChrB(0) & ChrB(0) & ChrB(1) & ChrB(0)' 输出图像信息头
Response.BinaryWrite ChrB(24) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(176) & ChrB(4) &_
  ChrB(0) & ChrB(0) & ChrB(18) & ChrB(11) & ChrB(0) & ChrB(0) & ChrB(18) & ChrB(11) &_
  ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) &_
  ChrB(0) & ChrB(0)For i = 9 To 0 Step -1  ' 历经所有行
  For ii = 0 To 3  ' 历经所有字
   For iii = 1 To 10 ' 历经所有像素
    ' 逐行、逐字、逐像素地输出图像数据
    If Rnd * 99 + 1 < cOdds Then ' 随机生成杂点
Response.BinaryWrite vColorData(0)
    Else
Response.BinaryWrite vColorData(Mid(vNumberData(vCode(ii)), i * 10 + iii, 1))
    End If
   Next
  Next
Next
End Sub
%>然后我将它翻成javascript的代码,但调用之后验证码图片就是显示不出来,代码如下:Response.Buffer = true;
var cAmount = 35; //文字数量
var cCode = new String("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ");
//随机产生字符
var vCode= new Array();//保存对应cCode中某个字符的下标的数组
var vCodes = "";//将要保存到section中的字符串
for(var i = 0;i<4;i++)
{
vCode[i] = Math.round(Math.random()*cAmount);
vCodes = vCodes + cCode.charAt(vCode[i]);
}
var vNumberData = new Array();
        ..............//vNumberData赋值一楼显示
var cOdds = 6; //杂点出现的机率
//颜色的数据(字符,背景)
var vColorData = new Array();
vColorData[0] = String.fromCharCode(255,50,50);  //蓝0,绿0,红0(黑色)
vColorData[1] = String.fromCharCode(255,255,255); //蓝250,绿236,红211(浅蓝色)
        // 输出图像文件头
Response.BinaryWrite(String.fromCharCode(66,77,230,4,0,0,0,0,0,0,54,0,0,0,40,0,0,0,40,0,0,0,10,0,0,0,1,0));
        // 输出图像信息头
Response.BinaryWrite(String.fromCharCode(24,0,0,0,0,0,176,4,0,0,18,11,0,0,18,11,0,0,0,0,0,0,0,0,0,0));
        for(var i=9;i>=0;i--) //历经所有行
{
for(var ii=0;ii<4;ii++) //历经所有字
{
for(var iii=0;iii<10;iii++) //历经所有像素
{
//逐行、逐字、逐像素地输出图像数据
if((Math.random()*99+1) < cOdds)//随机生成杂点
{
Response.BinaryWrite(vColorData[0]);
}
else
{
           Response.BinaryWrite(vColorData[parseInt(vNumberData[vCode[ii]].charAt(i*10+iii))]);
}
}
}
}
Response.Expires = -9999;
Response.AddHeader("Pragma","no-cache");
Response.AddHeader("Cache-Control","no-cache");
Response.ContentType="image/BMP";
%>下面是我的用来调用代码,以上的vbscript和javascript调试时放在getSafeCode.asp文件中<%@ language="javascript"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
        <script type="text/javascript">
function aOnclick()
{
document.getElementById("safecode").src="getSafeCode.asp";
}
</script>
    </head>
    <body>
    <div><a herf="javascript:void(0);" onclick="aOnclick();"><img id="safecode" src="getSafeCode.asp"/></a></div>
    </body>
</html>
vbscript转javascript验证码图片无法输出asp

解决方案 »

  1.   

    这是javascript种的vNumberData的赋值vNumberData[0] = "1110000111110111101111011110111101001011110100101111010010111101001011110111101111011110111110000111";
    vNumberData[1] = "1111011111110001111111110111111111011111111101111111110111111111011111111101111111110111111100000111";
    vNumberData[2] = "1110000111110111101111011110111111111011111111011111111011111111011111111011111111011110111100000011";
    vNumberData[3] = "1110000111110111101111011110111111110111111100111111111101111111111011110111101111011110111110000111";
    vNumberData[4] = "1111101111111110111111110011111110101111110110111111011011111100000011111110111111111011111111000011";
    vNumberData[5] = "1100000011110111111111011111111101000111110011101111111110111111111011110111101111011110111110000111";
    vNumberData[6] = "1111000111111011101111011111111101111111110100011111001110111101111011110111101111011110111110000111";
    vNumberData[7] = "1100000011110111011111011101111111101111111110111111110111111111011111111101111111110111111111011111";
    vNumberData[8] = "1110000111110111101111011110111101111011111000011111101101111101111011110111101111011110111110000111";
    vNumberData[9] = "1110001111110111011111011110111101111011110111001111100010111111111011111111101111011101111110001111";
    vNumberData[10] = "1111011111111101111111101011111110101111111010111111101011111100000111110111011111011101111000100011";
    vNumberData[11] = "1000000111110111101111011110111101110111110000111111011101111101111011110111101111011110111000000111";
    vNumberData[12] = "1110000011110111101110111110111011111111101111111110111111111011111111101111101111011101111110001111";
    vNumberData[13] = "1000001111110111011111011110111101111011110111101111011110111101111011110111101111011101111000001111";
    vNumberData[14] = "1000000111110111101111011011111101101111110000111111011011111101101111110111111111011110111000000111";
    vNumberData[15] = "1000000111110111101111011011111101101111110000111111011011111101101111110111111111011111111000111111";
    vNumberData[16] = "1110000111110111011110111101111011111111101111111110111111111011100011101111011111011101111110001111";
    vNumberData[17] = "1000100011110111011111011101111101110111110000011111011101111101110111110111011111011101111000100011";
    vNumberData[18] = "1100000111111101111111110111111111011111111101111111110111111111011111111101111111110111111100000111";
    vNumberData[19] = "1110000011111110111111111011111111101111111110111111111011111111101111111110111110111011111000011111";
    vNumberData[20] = "1000100011110111011111011011111101011111110001111111010111111101101111110110111111011101111000100011";
    vNumberData[21] = "1000111111110111111111011111111101111111110111111111011111111101111111110111111111011110111000000011";
    vNumberData[22] = "1000100011110010011111001001111100100111110101011111010101111101010111110101011111010101111001010011";
    vNumberData[23] = "1000100011110011011111001101111101010111110101011111010101111101100111110110011111011001111000110111";
    vNumberData[24] = "1110001111110111011110111110111011111011101111101110111110111011111011101111101111011101111110001111";
    vNumberData[25] = "1000000111110111101111011110111101111011110000011111011111111101111111110111111111011111111000111111";
    vNumberData[26] = "1110001111110111011110111110111011111011101111101110111110111011111011101001101111011001111110001011";
    vNumberData[27] = "1000001111110111011111011101111101110111110000111111010111111101101111110110111111011101111000110011";
    vNumberData[28] = "1110000011110111101111011110111101111111111001111111111001111111111011110111101111011110111100000111";
    vNumberData[29] = "1000000011101101101111110111111111011111111101111111110111111111011111111101111111110111111110001111";
    vNumberData[30] = "1000100011110111011111011101111101110111110111011111011101111101110111110111011111011101111110001111";
    vNumberData[31] = "1000100011110111011111011101111101110111111010111111101011111110101111111010111111110111111111011111";
    vNumberData[32] = "1001010011110101011111010101111101010111110101011111001001111110101111111010111111101011111110101111";
    vNumberData[33] = "1000100011110111011111101011111110101111111101111111110111111110101111111010111111011101111000100011";
    vNumberData[34] = "1000100011110111011111011101111110101111111010111111110111111111011111111101111111110111111110001111";
    vNumberData[35] = "1100000011110111011111111101111111101111111110111111110111111111011111111011111111101110111100000011";