服务器由于重新编辑了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 ;
}
?>
/*
* 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 ;
}
?>