Cara menggunakan PHP untuk menjana imej kod pengesahan responsif
Dengan perkembangan pesat Internet, orang ramai memberi lebih perhatian kepada keselamatan maklumat semakin tinggi. Untuk mengelakkan penyerang berniat jahat daripada melakukan operasi berniat jahat melalui skrip automatik, tapak web sering menggunakan kod pengesahan sebagai cara untuk mengesahkan ketulenan pengguna. Imej CAPTCHA ialah bentuk biasa kod pengesahan yang menjana imej rawak dan aksara angka, yang memerlukan pengguna memasukkan berdasarkan aksara pada imej untuk mengesahkan identiti mereka.
Artikel ini akan memperkenalkan cara menggunakan PHP untuk menjana imej kod pengesahan responsif dan menyediakan contoh kod khusus.
Untuk menjana imej kod pengesahan, anda perlu menentukan saiz dan fon imej. Secara umumnya, saiz imej kod pengesahan hendaklah sederhana, cukup jelas tetapi tidak mengambil terlalu banyak ruang halaman. Apabila memilih fon, anda harus memilih fon yang jelas dan mudah dikenal pasti.
Gunakan fungsi nombor rawak PHP untuk menjana aksara rawak dan menyimpan aksara yang dijana kepada pembolehubah.
$characters = 'abcdefghijklmnopqrstuvwxyz0123456789'; $randomString = ''; $length = 6; for ($i = 0; $i < $length; $i++) { $randomString .= $characters[rand(0, strlen($characters) - 1)]; }
Dalam kod di atas, set aksara yang mengandungi huruf dan nombor digunakan. Menjana 6 aksara secara rawak melalui gelung dan menggabungkannya menjadi rentetan.
Buat imej kod pengesahan kosong, dan tetapkan warna latar belakang dan jidar.
$image = imagecreatetruecolor(120, 40); $backgroundColor = imagecolorallocate($image, 255, 255, 255); $borderColor = imagecolorallocate($image, 0, 0, 0); imagefilledrectangle($image, 0, 0, 120, 40, $backgroundColor); imagerectangle($image, 0, 0, 120, 40, $borderColor);
Dalam kod di atas, gunakan fungsi imagecreatetruecolor()
untuk mencipta imej kosong 120x40 piksel dan gunakan fungsi imagecolorallocate()
untuk tetapkan latar belakang imej dan warna sempadan. Kemudian gunakan imagefilledrectangle()
dan imagerectangle()
untuk mengisi latar belakang dan jidar masing-masing. imagecreatetruecolor()
函数创建一个120x40像素大小的空白图片,并用 imagecolorallocate()
函数设置图片的背景和边框颜色。接着使用 imagefilledrectangle()
和 imagerectangle()
分别填充背景和边框。
为了增加验证码的难度,我们可以在验证码图片中添加一些干扰线,以及随机的字符。
for ($i = 0; $i < 5; $i++) { $lineColor = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255)); imageline($image, rand(0, 120), rand(0, 40), rand(0, 120), rand(0, 40), $lineColor); } $fontColor = imagecolorallocate($image, 0, 0, 0); imagettftext($image, 20, 0, 10, 30, $fontColor, 'path/to/font.ttf', $randomString);
上述代码中,通过循环多次,在验证码图片上生成随机的干扰线。随后,使用 imagettftext()
函数将随机字符绘制在验证码图片上。
生成验证码图片后,需要将其输出给用户,并在使用后销毁相关资源。
header('Content-type: image/png'); imagepng($image); imagedestroy($image);
上述代码中,通过设置 header('Content-type: image/png')
将输出的内容类型设置为图片,并使用 imagepng()
函数将验证码图片输出至客户端。最后,使用 imagedestroy()
Untuk meningkatkan kesukaran kod pengesahan, kami boleh menambah imej kod pengesahan Beberapa baris yang mengganggu, dan aksara rawak.
rrreee#🎜🎜#Dalam kod di atas, garisan gangguan rawak dijana pada imej kod pengesahan dengan menggelung beberapa kali. Kemudian, gunakan fungsiimagettftext()
untuk melukis aksara rawak pada imej captcha. #🎜🎜#header('Content-type: image/png')
dan gunakan imagepng( ) Fungsi
mengeluarkan imej kod pengesahan kepada klien. Akhir sekali, gunakan fungsi imagedestroy()
untuk memusnahkan sumber imej. #🎜🎜##🎜🎜#Ringkasnya, kami boleh menjana imej kod pengesahan responsif menggunakan PHP dengan mudah. Dengan menentukan saiz dan fon aksara imej kod pengesahan, menjana aksara rawak, mencipta imej kod pengesahan, menambah baris gangguan dan aksara rawak, mengeluarkan imej dan memusnahkan sumber, kami boleh melaksanakan fungsi kod pengesahan yang mudah tetapi berkesan. #🎜🎜##🎜🎜# Saya harap kandungan di atas akan membantu anda! Jika anda mempunyai sebarang soalan, sila berasa bebas untuk bertanya! #🎜🎜#Atas ialah kandungan terperinci Cara menggunakan PHP untuk menjana imej kod pengesahan responsif. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!