探討如何在php168_cms中提取驗(yàn)證碼
<?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);
//填充背景顏色(這個(gè)東西類似油桶)
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個(gè)隨機(jī)文字
//$imstr[0]["s"] = $Str[rand(0,2)][rand(0,25)];
$imstr[0]["x"] = rand(2,5);
$imstr[0]["y"] = rand(1,4);
//獲取第2個(gè)隨機(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個(gè)隨機(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個(gè)隨機(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;
}
/*==隱逸鳥==*/
?>
這個(gè)生成的驗(yàn)證碼只是單純的數(shù)字,背景填充很簡(jiǎn)單了只是26根直線填充的。前邊看到他是想要4為隨機(jī)字母加數(shù)字的序列,可是后來(lái)生成序列的時(shí)候卻僅僅用了數(shù)字,字母卻并沒(méi)有用。下面重新修改為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中文驗(yàn)證碼實(shí)現(xiàn)示例分享
- PHP實(shí)現(xiàn)變色驗(yàn)證碼實(shí)例
- 一個(gè)好用的PHP驗(yàn)證碼類實(shí)例分享
- 生成隨機(jī)字符串和驗(yàn)證碼的類的PHP實(shí)例
- PHP生成Gif圖片驗(yàn)證碼
- PHP 驗(yàn)證碼不顯示只有一個(gè)小紅叉的解決方法
- PHP驗(yàn)證碼函數(shù)代碼(簡(jiǎn)單實(shí)用)
- php生成圖形驗(yàn)證碼幾種方法小結(jié)
- PHP生成驗(yàn)證碼時(shí)“圖像因其本身有錯(cuò)無(wú)法顯示”的解決方法
- 一個(gè)漂亮的php驗(yàn)證碼類(分享)
- PHP5中GD庫(kù)生成圖形驗(yàn)證碼(有漢字)
- php仿QQ驗(yàn)證碼的實(shí)例分析
- php 驗(yàn)證碼(傾斜,正弦干擾線,黏貼,旋轉(zhuǎn))
- php ci框架驗(yàn)證碼實(shí)例分析
- PHP實(shí)現(xiàn)的封裝驗(yàn)證碼類詳解
- PHP自定義大小驗(yàn)證碼的方法詳解
- 如何用php生成扭曲及旋轉(zhuǎn)的驗(yàn)證碼圖片
- php實(shí)現(xiàn)加減法驗(yàn)證碼代碼
相關(guān)文章
php在頁(yè)面中調(diào)用fckeditor編輯器的方法
fckeditor編輯器的代碼可以寫成一個(gè)函數(shù)或者類別,直接調(diào)用,不用每次都要寫那么多代碼!2011-06-06
linux使用crontab實(shí)現(xiàn)PHP執(zhí)行計(jì)劃定時(shí)任務(wù)
前幾天寫過(guò)一篇文章,利用單純的php實(shí)現(xiàn)定時(shí)執(zhí)行任務(wù),但是效率不佳,對(duì)于linux來(lái)說(shuō)用crontab實(shí)現(xiàn)更加合理2014-05-05
php5與php7的區(qū)別點(diǎn)總結(jié)
在本篇文章里小編給大家整理的是關(guān)于php5與php7的區(qū)別是什么的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們學(xué)習(xí)下。2019-10-10
php頁(yè)面函數(shù)設(shè)置超時(shí)限制的方法
這篇文章主要介紹了php頁(yè)面函數(shù)設(shè)置超時(shí)限制的方法,可通過(guò)函數(shù)控制超時(shí)限制,也可通過(guò)修改php配置文件實(shí)現(xiàn)修改超時(shí)限制,需要的朋友可以參考下2014-12-12
php中轉(zhuǎn)義mysql語(yǔ)句的實(shí)現(xiàn)代碼
如果你需要向數(shù)據(jù)庫(kù),插入形如’你好’,這樣包含有單引號(hào)或者雙引號(hào)的字符串怎么辦,當(dāng)然可以使用反斜杠進(jìn)行轉(zhuǎn)義,但是如果內(nèi)容太多呢?2011-06-06
php實(shí)現(xiàn)三級(jí)級(jí)聯(lián)下拉框
這篇文章主要介紹了php實(shí)現(xiàn)三級(jí)級(jí)聯(lián)下拉框,上網(wǎng)翻找了許多三級(jí)級(jí)聯(lián)下拉框?qū)崿F(xiàn)的資料,下面分享給大家2016-04-04
php+mysql數(shù)據(jù)庫(kù)查詢實(shí)例
這篇文章主要介紹了php+mysql數(shù)據(jù)庫(kù)查詢的方法,實(shí)例分析了數(shù)據(jù)庫(kù)查詢的原理與完整實(shí)現(xiàn)步驟,并進(jìn)行了針對(duì)性的分析說(shuō)明,需要的朋友可以參考下2015-01-01

