中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

PHP實(shí)現(xiàn)簡(jiǎn)單驗(yàn)證碼識(shí)別,非常詳細(xì)!

一直想寫這個(gè),過了很久今天興趣來了索性記錄下。

十多年的太平網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整太平建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)公司從事“太平網(wǎng)站設(shè)計(jì)”,“太平網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。驗(yàn)證碼
全自動(dòng)區(qū)分計(jì)算機(jī)和人類的公開圖靈測(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è)問題由用戶來解答。這個(gè)問題可以由計(jì)算機(jī)生成并評(píng)判,但是必須只有人類才能解答。由于計(jì)算機(jī)無法解答CAPTCHA的問題,所以回答出問題的用戶就可以被認(rèn)為是人類。
百科介紹

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

常見類型

思路

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

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

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

實(shí)現(xiàn)

下面我們來用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é)果如下:


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

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

效果:

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

但是你可能還是有疑問,盡管可以看出來了,但是如何知道是多少呢?

下面我們來分析下:

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

我們?cè)賮砣サ暨@些干擾點(diǎn),可以看得更清晰些:

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

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

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

$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)證碼值了。下面來演示下:

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

驗(yàn)證碼識(shí)別!

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

寫在最后

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

本項(xiàng)目所演示的站點(diǎn)(杭州電子科技大學(xué)圖書館->我的圖書館)無法打開,各位參考原理即可

代碼已在github:https://github.com/chaclee/sf

文章題目:PHP實(shí)現(xiàn)簡(jiǎn)單驗(yàn)證碼識(shí)別,非常詳細(xì)!
網(wǎng)頁(yè)鏈接:http://www.rwnh.cn/article10/cpgsdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、網(wǎng)站導(dǎo)航品牌網(wǎng)站制作、App設(shè)計(jì)、網(wǎng)站設(shè)計(jì)公司定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
宁化县| 秭归县| 丹凤县| 长乐市| 阳高县| 海丰县| 株洲市| 南宁市| 乌拉特中旗| 西城区| 遵义县| 鹿泉市| 南丰县| 金山区| 兴义市| 安徽省| 遂宁市| 南开区| 武鸣县| 渑池县| 伊吾县| 布尔津县| 资源县| 定襄县| 博罗县| 乌鲁木齐市| 聊城市| 进贤县| 高淳县| 文化| 广元市| 思茅市| 叶城县| 闵行区| 南康市| 四平市| 香格里拉县| 清新县| 眉山市| 康乐县| 灌云县|