真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

php如何制作的簡(jiǎn)單驗(yàn)證碼識(shí)別代碼-創(chuàng)新互聯(lián)

這篇文章主要講解了“php如何制作的簡(jiǎn)單驗(yàn)證碼識(shí)別代碼”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“php如何制作的簡(jiǎn)單驗(yàn)證碼識(shí)別代碼”吧!

創(chuàng)新互聯(lián)建站10多年成都定制網(wǎng)頁(yè)設(shè)計(jì)服務(wù);為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及高端網(wǎng)站定制服務(wù),成都定制網(wǎng)頁(yè)設(shè)計(jì)及推廣,對(duì)成都紗窗等多個(gè)方面擁有多年的網(wǎng)站營(yíng)銷經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。

一直想寫(xiě)這個(gè),過(guò)了很久今天興趣來(lái)了索性記錄下。

驗(yàn)證碼

全自動(dòng)區(qū)分計(jì)算機(jī)和人類的公開(kāi)圖靈測(cè)試(英語(yǔ):Completely Automated Public Turing test to tell Computers and Humans Apart,簡(jiǎn)稱CAPTCHA),俗稱驗(yàn)證碼,是一種區(qū)分用戶是計(jì)算機(jī)和人的公共全自動(dòng)程序。在CAPTCHA測(cè)試中,作為服務(wù)器的計(jì)算機(jī)會(huì)自動(dòng)生成一個(gè)問(wèn)題由用戶來(lái)解答。這個(gè)問(wèn)題可以由計(jì)算機(jī)生成并評(píng)判,但是必須只有人類才能解答。由于計(jì)算機(jī)無(wú)法解答CAPTCHA的問(wèn)題,所以回答出問(wèn)題的用戶就可以被認(rèn)為是人類。
百科介紹

說(shuō)的簡(jiǎn)單點(diǎn)就是隨機(jī)生成的字符,輸出在一張圖片上[這里不考慮其他形式的拖拽/短信驗(yàn)證碼等等]。

常見(jiàn)類型

php如何制作的簡(jiǎn)單驗(yàn)證碼識(shí)別代碼

思路

本文只做演示使用,故取第一張圖片驗(yàn)證碼作為講解示例。


php如何制作的簡(jiǎn)單驗(yàn)證碼識(shí)別代碼

圖片上的每一點(diǎn)都有其RGB值,通過(guò)取色器可以獲取到,肉眼觀察可以看出該圖驗(yàn)證碼是純數(shù)字純色背景

php如何制作的簡(jiǎn)單驗(yàn)證碼識(shí)別代碼

通過(guò)取色器看出該驗(yàn)證碼背景色RGB值為(212,214,204)

實(shí)現(xiàn)

下面我們來(lái)用PHP的imagecolorsforindex函數(shù)取得圖片所有點(diǎn)的RGB值:

$url = 'http://210.32.33.91:8080/reader/captcha.php';
$im = imagecreatefromgif($url);
imagegif($im, '1.gif');
$rgbArray = array();
$res = $im;
$size = getimagesize($url);

$wid = $size['0'];
$hid = $size['1'];
for ($i = 0; $i < $hid; ++ $i) {
 for ($j = 0; $j < $wid; ++ $j) {
  $rgb = imagecolorat($res, $j, $i);
  $rgbArray[$i][$j] = imagecolorsforindex($res, $rgb);
 }
}

結(jié)果如下:

php如何制作的簡(jiǎn)單驗(yàn)證碼識(shí)別代碼

各位可能想問(wèn)這有什么用呢? 下面我們換一種方式來(lái)顯示數(shù)據(jù),為背景色輸出,驗(yàn)證碼區(qū)域輸出,再來(lái)看下:

for ($i = 0; $i < $hid; $i ++) {
 for ($j = 0; $j < $wid; $j ++) {
  
  if ($rgbArray[$i][$j]['red'] == 212) {
   echo '□';
  } else {
   echo '■';
  }
 }
 echo "
"; }

效果:


php如何制作的簡(jiǎn)單驗(yàn)證碼識(shí)別代碼

這樣一下是不是很清楚了。

但是你可能還是有疑問(wèn),盡管可以看出來(lái)了,但是如何知道是多少呢?

下面我們來(lái)分析下:


php如何制作的簡(jiǎn)單驗(yàn)證碼識(shí)別代碼


每個(gè)驗(yàn)證碼直接間距4格,左右間距6/10格,上下間距16/10格。

我們?cè)賮?lái)去掉這些干擾點(diǎn),可以看得更清晰些:


php如何制作的簡(jiǎn)單驗(yàn)證碼識(shí)別代碼


是不是很清晰了?可能還是有人會(huì)問(wèn),你講這么多到底要怎么才能知道圖片上的數(shù)字是多少.

好吧,說(shuō)下我的思路,我們將剛剛的換為0和1,而這些數(shù)字形狀是固定的,這樣就可以得到0-9每一個(gè)字的每一個(gè)區(qū)域8*10都有0和1組成了,

php如何制作的簡(jiǎn)單驗(yàn)證碼識(shí)別代碼

我們?cè)賮?lái)進(jìn)行每8個(gè)切分,去掉4格間距,循環(huán)得出0-9的01組合值:


php如何制作的簡(jiǎn)單驗(yàn)證碼識(shí)別代碼

$dic = array(
 '00011000001111000110011011000011110000111100001111000011011001100011110000011000' => 0,
 '00011000001110000111100000011000000110000001100000011000000110000001100001111110' => 1,
 '00111100011001101100001100000011000001100000110000011000001100000110000011111111' => 2,
 '01111100110001100000001100000110000111000000011000000011000000111100011001111100' => 3,
 '00000110000011100001111000110110011001101100011011111111000001100000011000000110' => 4,
 '11111110110000001100000011011100111001100000001100000011110000110110011000111100' => 5,
 '00111100011001101100001011000000110111001110011011000011110000110110011000111100' => 6,
 '11111111000000110000001100000110000011000001100000110000011000001100000011000000' => 7,
 '00111100011001101100001101100110001111000110011011000011110000110110011000111100' => 8,
 '00111100011001101100001111000011011001110011101100000011010000110110011000111100' => 9
);

得出這10個(gè)后組合成數(shù)組,每次解析圖片RGB換成對(duì)應(yīng)數(shù)組值就得到驗(yàn)證碼值了。下面來(lái)演示下:

php如何制作的簡(jiǎn)單驗(yàn)證碼識(shí)別代碼

最后為了準(zhǔn)確性,取100個(gè)循環(huán)看看:


php如何制作的簡(jiǎn)單驗(yàn)證碼識(shí)別代碼

哈哈,準(zhǔn)確率100%

寫(xiě)在最后

本文的目的是為了讓W(xué)EB開(kāi)發(fā)者在生成驗(yàn)證碼時(shí)注意安全,請(qǐng)勿用于非法目的.


代碼已在github:

感謝各位的閱讀,以上就是“php如何制作的簡(jiǎn)單驗(yàn)證碼識(shí)別代碼”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)php如何制作的簡(jiǎn)單驗(yàn)證碼識(shí)別代碼這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!


新聞名稱:php如何制作的簡(jiǎn)單驗(yàn)證碼識(shí)別代碼-創(chuàng)新互聯(lián)
當(dāng)前地址:http://weahome.cn/article/dgipgj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部