生成隨機(jī)線。<\/p>\n
現(xiàn)在,我們實(shí)際上是從使驗(yàn)證碼的失真部分開(kāi)始。在PHP中,線從起點(diǎn)(x1,y1)到終點(diǎn)(x2,y2)生成?,F(xiàn)在,當(dāng)我們希望線條觸摸盒子的兩端時(shí),我們將保持 > y坐標(biāo)是rand()*p給出的,因?yàn)檫@是我們盒子的高度,并且始終將返回50以下的值。您可以使用rand(0,50)。它們將產(chǎn)生相同的輸出范圍。 <\/p>\n <\/p>\n\n 生成隨機(jī)點(diǎn)。<\/p>\n 隨機(jī)點(diǎn)將以與隨機(jī)線相同的方式生成。使用的函數(shù)是ImagesetPixel()。此函數(shù)采用將點(diǎn)將點(diǎn)放在框中的坐標(biāo)值的值。 >我們將隨機(jī)指向字符串中的一個(gè)位置(其中包含在下層和高層中的字母),并將其分配給變量$ letter<\/p>>\n 放入循環(huán)時(shí),看起來(lái)像<\/p>\n 我們將解釋行<\/p>>\n 在下一節(jié)中。 <\/p>\n 函數(shù)Imagestring()在我們的圖像中寫(xiě)入文本。它有6個(gè)參數(shù):<\/p>\n X坐標(biāo)的計(jì)算是通過(guò)檢查完成的。大概,這些字母的間距約為35個(gè)像素(5($ i*30)),其中$ i = 0,1,2,3,4,5,6。這是因?yàn)槿绻覀儗⑦@個(gè)值保持在15-20px左右,則可能會(huì)有兩個(gè)字母重疊。如果該值超過(guò)40px,則完全不適合盒子。\n<\/p>這將生成6個(gè)字母驗(yàn)證碼文本。我們始終可以通過(guò)更改由于簡(jiǎn)單性(例如顏色,Y-Coordine等)來(lái)創(chuàng)造更多的隨機(jī)性,例如\n 最終的驗(yàn)證碼看起來(lái)像這樣<\/p>>\n <\/p> \n<\/p>每次您刷新頁(yè)面時(shí),在驗(yàn)證碼中寫(xiě)的文本都會(huì)更改。 \n可以通過(guò)使用像素或更改顏色或大小來(lái)創(chuàng)建設(shè)計(jì)來(lái)實(shí)現(xiàn)更多隨機(jī)性。 \n $ word。= $ letter; - 串聯(lián)操作員。用于一個(gè)接一個(gè)地附加所有單個(gè)字母,生成6個(gè)字母的單詞。 <\/p>\n $ _ session ['catcha_string'] = $ word;我們的驗(yàn)證碼字符串存儲(chǔ)在會(huì)話變量中,該變量將用于驗(yàn)證目的。<\/p>>\n\n<\/y1><\/x1><\/p>\n
imageLine()函數(shù)將x1,x2,y1,y2坐在該順序中作為參數(shù),除了線的圖像參考和顏色。線色已被分配,就像在上一步中分配了背景顏色一樣。 <\/h3>\n
$background_color = imagecolorallocate($image, 255, 255, 255); \n<\/span>imagefilledrectangle($image,0,0,200,50,$background_color);<\/span><\/pre>\n
>\n<\/p>\n
>通過(guò)使用rand()* 0隨機(jī)生成X坐標(biāo),因?yàn)檫@是我們盒子的寬度,這將始終返回200歲以下的值。您可以使用RAND(0,200)。它們將產(chǎn)生相同的輸出范圍。 y坐標(biāo)的生成如線步中。<\/h3>\n
<\/p>\n
生成隨機(jī)文本<\/h3>\n
<\/span>session_start();\n<\/span><\/span>?><\/span>\n<\/span>\n
亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱
style=\"background-color:#ddd; <\/span>\"<\/span><\/span>><\/span>\n<\/span>\n <\/span> create_image();\n<\/span><\/span> display();\n<\/span><\/span> \/***** definition of functions *****\/\n<\/span><\/span> function display()\n<\/span><\/span> {\n<\/span><\/span> ?><\/span>\n<\/span>\n ><\/span>TYPE THE TEXT YOU SEE IN THE IMAGE<\/h3<\/span>><\/span>\n<\/span> ><\/span>This is just to check if you are a robot<\/b<\/span>><\/span>\n<\/span>\n
src=\"image.png\"<\/span>><\/span>\n<\/span> <\/div<\/span>><\/span>\n<\/span> \/\/div1 ends\n <\/div<\/span>><\/span> \/\/div2 ends\n<\/span>\n <\/span> }\n<\/span><\/span>\n<\/span> function create_image()\n<\/span><\/span> {\n<\/span><\/span> $image = imagecreatetruecolor(200, 50);\n<\/span><\/span> imagepng($image, \"image.png\");\n<\/span><\/span> }\n<\/span><\/span>\n<\/span> ?><\/span>\n<\/span> <\/body<\/span>><\/span>\n<\/span><\/span>?><\/span><\/span><\/pre>\n
$background_color = imagecolorallocate($image, 255, 255, 255); \n<\/span>imagefilledrectangle($image,0,0,200,50,$background_color);<\/span><\/pre>\n
$line_color = imagecolorallocate($image, 64,64,64); \n<\/span>for($i=0;$i<10;$i++) {\n<\/span> imageline($image,0,rand()%50,200,rand()%50,$line_color);\n<\/span>}<\/span><\/pre>\n
\n
>\n<\/p>驗(yàn)證
>在這里采取用戶(hù)的響應(yīng),然后在處理后,他\/她會(huì)收到答復(fù)。首先,使用輸入文本框和提交按鈕制作一個(gè)簡(jiǎn)單的表單。根據(jù)復(fù)雜的Web應(yīng)用程序的要求,可以有許多方法來(lái)處理驗(yàn)證碼。但是,出于此示例,請(qǐng)保持簡(jiǎn)單,我們將在同一頁(yè)面上對(duì)其進(jìn)行處理。 <\/p>\n>在上一個(gè)代碼段中未解釋的兩行現(xiàn)在開(kāi)始發(fā)揮作用:
\n
<\/span>session_start();\n<\/span><\/span>?><\/span>\n<\/span>\n
><\/span>TYPE THE TEXT YOU SEE IN THE IMAGE<\/h3<\/span>><\/span>\n<\/span> ><\/span>This is just to check if you are a robot<\/b<\/span>><\/span>\n<\/span>\n