探討如何在php168_cms中提取驗證碼
<?php
function yzImg($nmsg){
if (function_exists('imagecreatetruecolor')){
$imstr[0]["s"]=$nmsg[0];
$imstr[1]["s"]=$nmsg[1];
$imstr[2]["s"]=$nmsg[2];
$imstr[3]["s"]=$nmsg[3];
//文件頭...
header("Content-type: image/png");
//創(chuàng)建真彩色白紙
$im = @imagecreatetruecolor(50, 20) or die("建立圖像失敗");
//獲取背景顏色
$background_color = imagecolorallocate($im, 255, 255, 255);
//填充背景顏色(這個東西類似油桶)
imagefill($im,0,0,$background_color);
//獲取邊框顏色
$border_color = imagecolorallocate($im,200,200,200);
//畫矩形,邊框顏色200,200,200
imagerectangle($im,0,0,49,19,$border_color);
//逐行炫耀背景,全屏用1或0
for($i=2;$i<28;$i++){
//獲取隨機(jī)淡色
$line_color = imagecolorallocate($im,rand(180,255),rand(180,255),rand(180,255));
//畫線
imageline($im,2,$i,47,$i,$line_color);
}
//設(shè)置字體大小
$font_size=12;
//設(shè)置印上去的文字
$Str[0] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$Str[1] = "abcdefghijklmnopqrstuvwxyz";
$Str[2] = "01234567891234567890123456";
//獲取第1個隨機(jī)文字
//$imstr[0]["s"] = $Str[rand(0,2)][rand(0,25)];
$imstr[0]["x"] = rand(2,5);
$imstr[0]["y"] = rand(1,4);
//獲取第2個隨機(jī)文字
//$imstr[1]["s"] = $Str[rand(0,2)][rand(0,25)];
$imstr[1]["x"] = $imstr[0]["x"]+$font_size-1+rand(0,1);
$imstr[1]["y"] = rand(1,3);
//獲取第3個隨機(jī)文字
//$imstr[2]["s"] = $Str[rand(0,2)][rand(0,25)];
$imstr[2]["x"] = $imstr[1]["x"]+$font_size-1+rand(0,1);
$imstr[2]["y"] = rand(1,4);
//獲取第4個隨機(jī)文字
//$imstr[3]["s"] = $Str[rand(0,2)][rand(0,25)];
$imstr[3]["x"] = $imstr[2]["x"]+$font_size-1+rand(0,1);
$imstr[3]["y"] = rand(1,3);
//寫入隨機(jī)字串
for($i=0;$i<4;$i++){
//獲取隨機(jī)較深顏色
$text_color = imagecolorallocate($im,rand(80,180),rand(80,180),rand(80,180));
//畫文字
imagechar($im,$font_size,$imstr[$i]["x"],$imstr[$i]["y"],$imstr[$i]["s"],$text_color);
}
//顯示圖片
imagepng($im);
//銷毀圖片
imagedestroy($im);
exit;
} else {
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++){
echo $Color[substr($_Num[$nmsg[$j]], $i * 10 + $k, 1)];
}
}
}
exit;
}
}
$string_yzimg=yzImgNumRand(4);
yzImg($string_yzimg);
function yzImgNumRand($lenth){
mt_srand((double)microtime() * 1000000);
for($i=0;$i<$lenth;$i++){
$randval.= mt_rand(1,9);
}
return $randval;
}
/*==隱逸鳥==*/
?>
這個生成的驗證碼只是單純的數(shù)字,背景填充很簡單了只是26根直線填充的。前邊看到他是想要4為隨機(jī)字母加數(shù)字的序列,可是后來生成序列的時候卻僅僅用了數(shù)字,字母卻并沒有用。下面重新修改為4位字母加數(shù)字的序列:
function yzImgNumRand($lenth){
mt_srand((double)microtime() * 1000000);
$Str[0] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$Str[1] = "abcdefghijklmnopqrstuvwxyz";
$Str[2] = "01234567891234567890123456";
for($i=0;$i<$lenth;$i++){
$randval.= $Str[rand(0,2)][rand(0,25)];
}
return $randval;
}
- php中文驗證碼實現(xiàn)示例分享
- PHP實現(xiàn)變色驗證碼實例
- 一個好用的PHP驗證碼類實例分享
- 生成隨機(jī)字符串和驗證碼的類的PHP實例
- PHP生成Gif圖片驗證碼
- PHP 驗證碼不顯示只有一個小紅叉的解決方法
- PHP驗證碼函數(shù)代碼(簡單實用)
- php生成圖形驗證碼幾種方法小結(jié)
- PHP生成驗證碼時“圖像因其本身有錯無法顯示”的解決方法
- 一個漂亮的php驗證碼類(分享)
- PHP5中GD庫生成圖形驗證碼(有漢字)
- php仿QQ驗證碼的實例分析
- php 驗證碼(傾斜,正弦干擾線,黏貼,旋轉(zhuǎn))
- php ci框架驗證碼實例分析
- PHP實現(xiàn)的封裝驗證碼類詳解
- PHP自定義大小驗證碼的方法詳解
- 如何用php生成扭曲及旋轉(zhuǎn)的驗證碼圖片
- php實現(xiàn)加減法驗證碼代碼
相關(guān)文章
php實現(xiàn)登錄tplink WR882N獲取IP和重啟的方法
這篇文章主要介紹了php實現(xiàn)登錄tplink WR882N獲取IP和重啟的方法,涉及php基于curl的登陸及數(shù)據(jù)傳輸相關(guān)技巧,需要的朋友可以參考下2016-07-07PHP實現(xiàn)生成vcf vcard文件功能類定義與使用方法詳解【附demo源碼下載】
這篇文章主要介紹了PHP實現(xiàn)生成vcf vcard文件功能類定義與使用方法,結(jié)合具體實例形式分析了vcf vcard功能類的具體定義與使用方法,并附帶VCardIFL.class.php類文件源碼供讀者下載參考,需要的朋友可以參考下2017-09-09PHP進(jìn)階學(xué)習(xí)之命名空間基本用法分析
這篇文章主要介紹了PHP進(jìn)階學(xué)習(xí)之命名空間基本用法,簡單分析了php命名空間的基本概念、功能并結(jié)合實例形式描述了命名空間的用法與相關(guān)操作注意事項,需要的朋友可以參考下2019-06-06phplock(php進(jìn)程鎖) v1.0 beta1
PHP在多進(jìn)程模式下(并發(fā)的web訪問)由于沒有內(nèi)置的鎖支持,在處理一些資源的之后,很容易出現(xiàn)并發(fā)性問題。2009-11-11