查看完整版本: 验证码的代码问题

xinglu1983 2008-4-9 16:28

验证码的代码问题

这段代码可以不借助gd库函数,生成四位的验证码,可视代码里80%部分都看不懂,有没有高手能给详细讲解一下,感激不尽~
[php]
<?php
header("Pragma:no-cache");
header("Cache-control:no-cache");
header("ContentType: Image/BMP");
$Color[0] = chr(0).chr(0).chr(0);
$Color[1] = chr(255).chr(255).chr(255);
$_Num[0]  = "1110000111110111101111011110111101001011110100101111010010111101001011110111101111011110111110000111";
$_Num[1]  = "1111011111110001111111110111111111011111111101111111110111111111011111111101111111110111111100000111";
$_Num[2]  = "1110000111110111101111011110111111111011111111011111111011111111011111111011111111011110111100000011";
$_Num[3]  = "1110000111110111101111011110111111110111111100111111111101111111111011110111101111011110111110000111";
$_Num[4]  = "1111101111111110111111110011111110101111110110111111011011111100000011111110111111111011111111000011";
$_Num[5]  = "1100000011110111111111011111111101000111110011101111111110111111111011110111101111011110111110000111";
$_Num[6]  = "1111000111111011101111011111111101111111110100011111001110111101111011110111101111011110111110000111";
$_Num[7]  = "1100000011110111011111011101111111101111111110111111110111111111011111111101111111110111111111011111";
$_Num[8]  = "1110000111110111101111011110111101111011111000011111101101111101111011110111101111011110111110000111";
$_Num[9]  = "1110001111110111011111011110111101111011110111001111100010111111111011111111101111011101111110001111";
echo chr(66).chr(77).chr(230).chr(4).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(54).chr(0).chr(0).chr(0).chr(40).chr(0).chr(0).chr(0).chr(40).chr(0).chr(0).chr(0).chr(10).chr(0).chr(0).chr(0).chr(1).chr(0);
echo chr(24).chr(0).chr(0).chr(0).chr(0).chr(0).chr(176).chr(4).chr(0).chr(0).chr(18).chr(11).chr(0).chr(0).chr(18).chr(11).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0);
for ($i=9;$i>=0;$i--){
  for ($j=0;$j<=3;$j++){
   for ($k=1;$k<=10;$k++){
    if(mt_rand(0,7)<1){
     echo $Color[mt_rand(0,1)];
    }else{
     echo $Color[substr($_Num[$nmsg[$j]], $i * 10 + $k, 1)];
    }
   }
  }
}
?>
[/php]

[[i] 本帖最后由 enze 于 2008-4-9 18:12 编辑 [/i]]

chris 2008-4-9 16:35

[quote]header(&quot;ContentType: Image/BMP&quot;);[/quote]

关键在这一句上,就是根据bmp文件的格式直接写一个文件

xinglu1983 2008-4-9 16:38

[quote]原帖由 [i]chris[/i] 于 2008-4-9 16:35 发表 [url=http://bbs.nowphp.com/redirect.php?goto=findpost&pid=2534&ptid=782][img]http://bbs.nowphp.com/images/common/back.gif[/img][/url]


关键在这一句上,就是根据bmp文件的格式直接写一个文件
[/quote]
那后面就是开始写bmp的二进制代码了吧?
这样的话,就不研究了,暂时还没到这么深的水准研究这个。。。哈哈

chris 2008-4-9 17:28

哈哈,这个需要对bmp文件格式非常了解

sunjava 2008-4-9 17:29

[quote]原帖由 [i]chris[/i] 于 2008-4-9 17:28 发表 [url=http://www.nowphp.com/redirect.php?goto=findpost&pid=2539&ptid=782][img]http://www.nowphp.com/images/common/back.gif[/img][/url]
哈哈,这个需要对bmp文件格式非常了解 [/quote]

哈哈,现在应该没必要用这玩意,现在的空间都支持GD

enze 2008-4-9 18:30

剑走偏锋咯
页: [1]
查看完整版本: 验证码的代码问题