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 //设置session,必须处于脚本最顶部 session_start(); $image = imagecreatetruecolor(100, 30); //1>设置验证码图片大小的函数 //5>设置验证码颜色 imagecolorallocate(int im, int red, int green, int blue); $bgcolor = imagecolorallocate($image,255,255,255); //#ffffff //6>区域填充 int imagefill(int im, int x, int y, int col) (x,y) 所在的区域着色,col 表示欲涂上的颜色 imagefill($image, 0, 0, $bgcolor); //10>设置变量 $captcha_code = ""; //7>生成随机数字 for($i=0;$i<4;$i++){ //设置字体大小 $fontsize = 6; //设置字体颜色,随机颜色 $fontcolor = imagecolorallocate($image, rand(0,120),rand(0,120), rand(0,120)); //0-120深颜色 //设置数字 $fontcontent = rand(0,9); //10>.=连续定义变量 $captcha_code .= $fontcontent; //设置坐标 $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>增加干扰元素,设置雪花点 for($i=0;$i<200;$i++){ //设置点的颜色,50-200颜色比数字浅,不干扰阅读 $pointcolor = imagecolorallocate($image,rand(50,200), rand(50,200), rand(50,200)); //imagesetpixel — 画一个单一像素 imagesetpixel($image, rand(1,99), rand(1,29), $pointcolor); } //9>增加干扰元素,设置横线 for($i=0;$i<4;$i++){ //设置线的颜色 $linecolor = imagecolorallocate($image,rand(80,220), rand(80,220),rand(80,220)); //设置线,两点一线 imageline($image,rand(1,99), rand(1,29),rand(1,99), rand(1,29),$linecolor); } //2>设置头部,image/png header('Content-Type: image/png'); //3>imagepng() 建立png图形函数 imagepng($image); //4>imagedestroy() 结束图形函数 销毁$image imagedestroy($image); ?>Selepas menggunakan fail kod pengesahan, anda akan mendapat gambar seperti berikut:
Klik
pada gambar kod pengesahan di penjuru kiri sebelah atas, dan nombor 4 digit yang diperolehi akan berubah .