服务器由于重新编辑了PHP,漏掉了GD2的安装,图形验证码全部失效,只好搞过另一个图形验证码程序。
下面只提供生成图片的代码:
<?php
/*
* Filename: ck.php
* Author: flashlm
* Update: 07-06-18
*/
session_start();
$auth_num="";
srand((double)microtime()*1000000);
$auth_num_k=md5(rand(0,9999));
$auth_num=substr($auth_num_k,10,4);
session_register('auth_num');
//判断是否安装了GD2,如果装了
if(function_exists('imagecreate') && function_exists('imagecolorallocate') && function_exists('imagepng') &&
function_exists('imagesetpixel') && function_exists('imageString') && function_exists('imagedestroy') && function_exists('imagefilledrectangle') && function_exists('imagerectangle')){
Header("Content-type:image/PNG");
$im=imagecreate(63,20);
$black=ImageColorAllocate($im,255,255,255);
$white=ImageColorAllocate($im,255,255,255);
$gray=ImageColorAllocate($im,20,20,20);
//ImageFill($im,63,20,$black);//这行不知道为什么在我公司的服务器上出错误,换个空间ok
imagestring($im,5,10,3,$auth_num,$gray);
for($i=0;$i<200;$i++)
{
$randcolor=ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im,rand()%70,rand()%30,$randcolor);
}
ImagePNG($im);
ImageDestroy($im);
}else{//如果没有安装GD2
//禁止缓存
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);
//0-9,a-z字符的数据
$_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";
$_Num[10] = "1111011111111101111111101011111110101111111010111111101011111100000111110111011111011101111000100011";
$_Num[11] = "1000000111110111101111011110111101110111110000111111011101111101111011110111101111011110111000000111";
$_Num[12] = "1110000011110111101110111110111011111111101111111110111111111011111111101111101111011101111110001111";
$_Num[13] = "1000001111110111011111011110111101111011110111101111011110111101111011110111101111011101111000001111";
$_Num[14] = "1000000111110111101111011011111101101111110000111111011011111101101111110111111111011110111000000111";
$_Num[15] = "1000000111110111101111011011111101101111110000111111011011111101101111110111111111011111111000111111";
$_Num[16] = "1110000111110111011110111101111011111111101111111110111111111011100011101111011111011101111110001111";
$_Num[17] = "1000100011110111011111011101111101110111110000011111011101111101110111110111011111011101111000100011";
$_Num[18] = "1100000111111101111111110111111111011111111101111111110111111111011111111101111111110111111100000111";
$_Num[19] = "1110000011111110111111111011111111101111111110111111111011111111101111111110111110111011111000011111";
$_Num[20] = "1000100011110111011111011011111101011111110001111111010111111101101111110110111111011101111000100011";
$_Num[21] = "1000111111110111111111011111111101111111110111111111011111111101111111110111111111011110111000000011";
$_Num[22] = "1000100011110010011111001001111100100111110101011111010101111101010111110101011111010101111001010011";
$_Num[23] = "1000100011110011011111001101111101010111110101011111010101111101100111110110011111011001111000110111";
$_Num[24] = "1110001111110111011110111110111011111011101111101110111110111011111011101111101111011101111110001111";
$_Num[25] = "1000000111110111101111011110111101111011110000011111011111111101111111110111111111011111111000111111";
$_Num[26] = "1110001111110111011110111110111011111011101111101110111110111011111011101001101111011001111110001011";
$_Num[27] = "1000001111110111011111011101111101110111110000111111010111111101101111110110111111011101111000110011";
$_Num[28] = "1110000011110111101111011110111101111111111001111111111001111111111011110111101111011110111100000111";
$_Num[29] = "1000000011101101101111110111111111011111111101111111110111111111011111111101111111110111111110001111";
$_Num[30] = "1000100011110111011111011101111101110111110111011111011101111101110111110111011111011101111110001111";
$_Num[31] = "1000100011110111011111011101111101110111111010111111101011111110101111111010111111110111111111011111";
$_Num[32] = "1001010011110101011111010101111101010111110101011111001001111110101111111010111111101011111110101111";
$_Num[33] = "1000100011110111011111101011111110101111111101111111110111111110101111111010111111011101111000100011";
$_Num[34] = "1000100011110111011111011101111110101111111010111111110111111111011111111101111111110111111110001111";
$_Num[35] = "1100000011110111011111111101111111101111111110111111110111111111011111111011111111101110111100000011";
//输出图像文件头
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{
$flm=get_int($auth_num[$j]);//取得0-35的对应数字(转化)
echo $Color[substr($_Num[$flm], $i * 10 + $k, 1)];
}
}
}
}
}
$auth_num=md5($auth_num);

/*
*取得0-35的对应数字(转化)
*
*/
function get_int($temp){
$num=explode(",","0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z");
for($i=0;$i<36;$i++){
if(strcmp($num[$i],$temp)==0){
return $i;
}
}
return 0;
}
?>
下面只提供生成图片的代码:












































































































