Langkah terperinci untuk menjana imej kod pengesahan menggunakan perpustakaan PHP dan GD
Kod pengesahan ialah mekanisme pengesahan keselamatan yang biasa digunakan yang boleh digunakan untuk menghalang program berniat jahat atau automasi robot. Serangan automatik boleh dicegah dengan berkesan dengan menghasilkan imej rawak yang memerlukan pengguna memasukkan kod pengesahan yang ditunjukkan dalam imej semasa log masuk atau mendaftar. Dalam artikel ini, kami akan memperkenalkan secara terperinci cara menggunakan pustaka PHP dan GD untuk menjana imej kod pengesahan.
Langkah 1: Pasang dan konfigurasikan pustaka GD
Mula-mula, pastikan persekitaran PHP anda telah memasang pustaka GD. Jika ia tidak dipasang, anda boleh memasangnya dengan mengedit fail php.ini atau menggunakan pengurus pakej sistem anda.
Langkah 2: Cipta fungsi penjanaan kod pengesahan
Buat fungsi dalam fail PHP untuk menjana imej kod pengesahan. Kami akan menggunakan fungsi pustaka GD untuk mencipta kanvas dan melukis teks rawak serta elemen pengalih padanya.
function generateCaptchaImage($width, $height, $length) { // 创建画布 $image = imagecreatetruecolor($width, $height); // 定义背景色和文字颜色 $bgColor = imagecolorallocate($image, 255, 255, 255); $textColor = imagecolorallocate($image, 0, 0, 0); // 填充背景色 imagefill($image, 0, 0, $bgColor); // 生成随机字符串 $characters = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789'; $captcha = ''; $strLength = strlen($characters); for ($i = 0; $i < $length; $i++) { $captcha .= $characters[rand(0, $strLength - 1)]; } // 在画布上绘制随机字符串 $fontSize = $height * 0.8; $fontFile = '/path/to/font.ttf'; // 替换为你自己的字体文件路径 $textX = ($width - $length * $fontSize) / 2; $textY = ($height - $fontSize) / 2 + $fontSize; imagettftext($image, $fontSize, 0, $textX, $textY, $textColor, $fontFile, $captcha); // 添加干扰元素 $lineColor = imagecolorallocate($image, 100, 100, 100); for ($i = 0; $i < 5; $i++) { imageline($image, rand(0, $width), rand(0, $height), rand(0, $width), rand(0, $height), $lineColor); } // 输出图像 header('Content-Type: image/png'); imagepng($image); imagedestroy($image); return $captcha; }
Langkah 3: Panggil fungsi penjanaan kod pengesahan
Dalam fail PHP anda, hasilkan imej kod pengesahan dengan memanggil fungsi generateCaptchaImage
di atas dan simpan nilai kod pengesahan dalam sesi atau kuki untuk Seterusnya pengesahan. generateCaptchaImage
函数来生成验证码图片,并将验证码值存储在会话或Cookie中供后续验证。
session_start(); $captcha = generateCaptchaImage(150, 50, 6); $_SESSION['captcha'] = $captcha;
步骤 4: 显示验证码图片
在HTML中,通过在<img>
标签的src
<img src="captcha.php" alt="验证码">
Dalam HTML, paparkan imej kod pengesahan dengan menentukan fail PHP dalam atribut src
bagi teg <img>
.
session_start(); if ($_POST['captcha'] === $_SESSION['captcha']) { // 验证码正确 } else { // 验证码错误 }
Apabila pengguna menyerahkan borang, sahkan sama ada kod pengesahan yang dimasukkan oleh pengguna adalah konsisten dengan nilai kod pengesahan yang disimpan.
rrreee🎜Melalui langkah di atas, kami berjaya menghasilkan imej kod pengesahan menggunakan pustaka PHP dan GD, dan mengesahkan kod pengesahan melalui sesi atau kuki. Ini boleh menghalang serangan automatik dan meningkatkan keselamatan sistem dengan berkesan. Anda boleh menyesuaikan dan mengembangkannya untuk memenuhi keperluan anda, seperti menambah gangguan yang lebih kompleks atau menggunakan fon yang berbeza. Saya harap artikel ini dapat membantu anda memahami penjanaan kod pengesahan. 🎜Atas ialah kandungan terperinci Langkah terperinci untuk menjana imej kod pengesahan menggunakan perpustakaan PHP dan GD. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!