導航:首頁 > 編程語言 > php模擬登錄驗證碼識別

php模擬登錄驗證碼識別

發布時間:2023-09-14 17:24:18

『壹』 php中模擬登錄的驗證碼問題應該如何解決

基本思路:

首先獲取一個cookies值,再帶著這個cookies去獲取驗證碼圖片,你再帶著驗證碼值和登錄數據去模擬post登錄。下面是一個模擬獲取驗證碼的。

這里忽略獲取cookies的過程。注意文件為UTF-8無BOM格式

?php
header('Content-Type:image/png');
$url="http://hbyw.e21.e.cn/global/gd.php";//圖片鏈接
$ch=curl_init();
//Cookie:PHPSESSID=
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_COOKIE,'PHPSESSID=');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,0);
curl_setopt($ch,CURLOPT_TIMEOUT,0);//忽略超時
curl_setopt($ch,CURLOPT_NOBODY,false);
$str=curl_exec($ch);
curl_close($ch);

『貳』 PHP圖形驗證碼識別

<?php
Header("Content-type: image/gif");
/*
* 初始化
*/
$border = 0; //是否要邊框 1要:0不要
$how = 4; //驗證碼位數
$w = $how*15; //圖片寬度
$h = 20; //圖片高度
$fontsize = 5; //字體大小
$alpha = "abcdefghijkmnopqrstuvwxyz"; //驗證碼內容1:字母
$number = "023456789"; //驗證碼內容2:數字
$randcode = ""; //驗證碼字元串初始化
srand((double)microtime()*1000000); //初始化隨機數種子

$im = ImageCreate($w, $h); //創建驗證圖片

/*
* 繪制基本框架
*/
$bgcolor = ImageColorAllocate($im, 255, 255, 255); //設置背景顏色
ImageFill($im, 0, 0, $bgcolor); //填充背景色
if($border)
{
$black = ImageColorAllocate($im, 0, 0, 0); //設置邊框顏色
ImageRectangle($im, 0, 0, $w-1, $h-1, $black);//繪制邊框
}

/*
* 逐位產生隨機字元
*/
for($i=0; $i<$how; $i++)
{
$alpha_or_number = mt_rand(0, 1); //字母還是數字
$str = $alpha_or_number ? $alpha : $number;
$which = mt_rand(0, strlen($str)-1); //取哪個字元
$code = substr($str, $which, 1); //取字元
$j = !$i ? 4 : $j+15; //繪字元位置
$color3 = ImageColorAllocate($im, mt_rand(0,100), mt_rand(0,100), mt_rand(0,100)); //字元隨即顏色
ImageChar($im, $fontsize, $j, 3, $code, $color3); //繪字元
$randcode .= $code; //逐位加入驗證碼字元串
}

/*
* 添加干擾
*/
for($i=0; $i<5; $i++)//繪背景干擾線
{
$color1 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干擾線顏色
ImageArc($im, mt_rand(-5,$w), mt_rand(-5,$h), mt_rand(20,300), mt_rand(20,200), 55, 44, $color1); //干擾線
}
for($i=0; $i<$how*40; $i++)//繪背景干擾點
{
$color2 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干擾點顏色
ImageSetPixel($im, mt_rand(0,$w), mt_rand(0,$h), $color2); //干擾點
}

//把驗證碼字元串寫入session
//session_start();
//$_SESSION['randcode'] = $randcode;
//把驗證碼字元寫入COOKIE
setcookie( "randcode", $randcode, (time() + 3600*24*30), "/" );
/*繪圖結束*/
Imagegif($im);
ImageDestroy($im);
/*繪圖結束*/
?>

閱讀全文

與php模擬登錄驗證碼識別相關的資料

熱點內容
pdf閱讀器電腦版exe 瀏覽:905
易語言加殼怎麼編譯 瀏覽:521
qt下編譯生成mqtt庫 瀏覽:541
南京中興招收專科程序員嗎 瀏覽:297
代理商php源碼 瀏覽:983
蘋果手機怎麼解壓軟體app 瀏覽:650
游戲資源被編譯 瀏覽:152
代碼編譯後黑屏 瀏覽:8
程序員情侶寫真 瀏覽:505
python3孿生素數 瀏覽:36
計算楊輝三角Python 瀏覽:404
linux目錄重命名 瀏覽:196
演算法設計的最終形態是代碼 瀏覽:262
程序員社團招新橫幅 瀏覽:238
拖鞋解壓視頻大全 瀏覽:887
租伺服器主機鏈接軟體叫什麼 瀏覽:856
交叉編譯工具的linux版本號 瀏覽:156
python開發應用軟體 瀏覽:32
hdl綜合器與c編譯器的區別 瀏覽:899
編譯原理最左推導代碼 瀏覽:702