Buat kod pengesahan mudah
Apakah itu kod pengesahan?
Kod pengesahan adalah untuk menjana gambar daripada rentetan nombor atau simbol yang dijana secara rawak Beberapa piksel gangguan ditambahkan pada gambar (untuk menghalang OCR Pengguna boleh mengenal pasti maklumat kod pengesahan dengan mata kasar dan memasukkannya borang untuk diserahkan untuk pengesahan tapak web , fungsi hanya boleh digunakan selepas pengesahan berjaya.
Peranan kod pengesahan:
Secara berkesan menghalang penggodam daripada membuat percubaan log masuk berterusan kepada pengguna berdaftar tertentu menggunakan program khusus untuk kekerasan. Malah, kod pengesahan moden secara amnya menghalang mesin daripada mendaftar dalam kelompok dan menghalang mesin daripada menyiarkan balasan dalam kelompok. Pada masa ini, banyak tapak web menggunakan teknologi kod pengesahan untuk menghalang pengguna daripada menggunakan robot untuk mendaftar, log masuk dan spam secara automatik.
Apa yang kami bincangkan di sini ialah kod pengesahan gambar digital rawak. Watak-watak pada gambar adalah agak tetap, ada yang mungkin ditambah interferon rawak, dan ada yang mempunyai warna watak rawak.
Terbitkan imej asas yang menghasilkan kod pengesahan imej png:
1 Jana imej png
2 Tetapkan warna latar belakang untuk imej
3 Tetapkan warna dan gaya fon
4 Kod pengesahan
5. Laraskan sudut putaran dan kedudukan setiap aksara yang dihasilkan dan lukiskannya pada imej png
6 Tambah bunyi dan garisan gangguan untuk menghalang mesin pendaftaran menganalisis imej asal untuk pendaftaran berniat jahat
7 8. Lepaskan memori yang diduduki oleh imej
Berikut ialah contoh kod pengesahan PHP:
<?php //設(shè)置session,必須處于腳本最頂部 session_start(); $image = imagecreatetruecolor(100, 30); //1>設(shè)置驗(yàn)證碼圖片大小的函數(shù) //5>設(shè)置驗(yàn)證碼顏色 imagecolorallocate(int im, int red, int green, int blue); $bgcolor = imagecolorallocate($image,255,255,255); //#ffffff //6>區(qū)域填充 int imagefill(int im, int x, int y, int col) (x,y) 所在的區(qū)域著色,col 表示欲涂上的顏色 imagefill($image, 0, 0, $bgcolor); //10>設(shè)置變量 $captcha_code = ""; //7>生成隨機(jī)數(shù)字 for($i=0;$i<4;$i++){ //設(shè)置字體大小 $fontsize = 6; //設(shè)置字體顏色,隨機(jī)顏色 $fontcolor = imagecolorallocate($image, rand(0,120),rand(0,120), rand(0,120)); //0-120深顏色 //設(shè)置數(shù)字 $fontcontent = rand(0,9); //10>.=連續(xù)定義變量 $captcha_code .= $fontcontent; //設(shè)置坐標(biāo) $x = ($i*100/4)+rand(5,10); $y = rand(5,10); imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor); } //10>存到session $_SESSION['authcode'] = $captcha_code; //8>增加干擾元素,設(shè)置雪花點(diǎn) for($i=0;$i<200;$i++){ //設(shè)置點(diǎn)的顏色,50-200顏色比數(shù)字淺,不干擾閱讀 $pointcolor = imagecolorallocate($image,rand(50,200), rand(50,200), rand(50,200)); //imagesetpixel — 畫一個(gè)單一像素 imagesetpixel($image, rand(1,99), rand(1,29), $pointcolor); } //9>增加干擾元素,設(shè)置橫線 for($i=0;$i<4;$i++){ //設(shè)置線的顏色 $linecolor = imagecolorallocate($image,rand(80,220), rand(80,220),rand(80,220)); //設(shè)置線,兩點(diǎn)一線 imageline($image,rand(1,99), rand(1,29),rand(1,99), rand(1,29),$linecolor); } //2>設(shè)置頭部,image/png header('Content-Type: image/png'); //3>imagepng() 建立png圖形函數(shù) imagepng($image); //4>imagedestroy() 結(jié)束圖形函數(shù) 銷毀$image imagedestroy($image); ?>Selepas menggunakan fail kod pengesahan, anda akan mendapat gambar seperti berikut:
Klik