Dengan perkembangan Internet, keselamatan laman web semakin mendapat perhatian. Antaranya, kod pengesahan imej digunakan secara meluas dalam pendaftaran pengguna, log masuk dan senario lain untuk menghalang operasi automatik oleh robot berniat jahat. Artikel ini akan memperkenalkan cara menggunakan PHP untuk membangunkan dan melaksanakan fungsi kod pengesahan imej mudah.
1. Apakah itu kod pengesahan imej
Kod pengesahan imej ialah kaedah pengesahan keselamatan berasaskan imej Satu rentetan rawak biasanya terdiri daripada nombor dan huruf dipaparkan dalam imej, memerlukan pengguna mengenal pasti dan memasukkannya dengan betul dalam input. kotak . Hanya apabila pengguna memasukkan kod pengesahan yang betul boleh operasi berikutnya diteruskan, dengan itu berkesan menghalang serangan automatik dan penyalahgunaan oleh robot berniat jahat.
2. Persediaan persekitaran pembangunan
Sebelum memulakan pembangunan, kita perlu menyediakan persekitaran pembangunan PHP. Anda boleh memilih untuk membina persekitaran berjalan PHP secara tempatan, atau anda boleh menggunakan beberapa persekitaran pembangunan bersepadu (IDE) seperti XAMPP, WAMP, dll.
3. Hasilkan imej kod pengesahan
Pertama, kita perlu menjana imej kod pengesahan yang mengandungi rentetan rawak. PHP menyediakan perpustakaan GD, yang boleh digunakan untuk menjana dan memanipulasi imej.
Berikut ialah contoh fungsi mudah untuk menjana imej kod pengesahan:
function generateCaptcha($length = 4, $width = 100, $height = 40) { $code = ''; $charset = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $charset_length = strlen($charset); // 生成随机字符串 for ($i = 0; $i < $length; $i++) { $code .= $charset[random_int(0, $charset_length - 1)]; } // 创建画布 $image = imagecreatetruecolor($width, $height); // 设置背景色和文本颜色 $bg_color = imagecolorallocate($image, 255, 255, 255); $text_color = imagecolorallocate($image, 0, 0, 0); // 填充背景色 imagefill($image, 0, 0, $bg_color); // 写入验证码文本 $font_size = 20; $x = ($width - $font_size * $length) / 2; $y = ($height + $font_size) / 2; for ($i = 0; $i < $length; $i++) { $angle = random_int(-30, 30); imagettftext($image, $font_size, $angle, $x, $y, $text_color, 'path/to/font.ttf', $code[$i]); $x += $font_size; } // 添加干扰线 for ($i = 0; $i < 5; $i++) { $line_color = imagecolorallocate($image, random_int(0, 255), random_int(0, 255), random_int(0, 255)); imageline($image, random_int(0, $width), random_int(0, $height), random_int(0, $width), random_int(0, $height), $line_color); } // 输出图像 header('Content-Type: image/png'); imagepng($image); // 销毁图像资源 imagedestroy($image); // 返回验证码字符串 return $code; }
Fungsi di atas menjana imej kod pengesahan dengan panjang, lebar dan ketinggian yang ditentukan dengan memanggil fungsi yang disediakan oleh perpustakaan GD, dan menambah rawak rentetan dan garisan gangguan.
4. Gunakan fungsi kod pengesahan
Untuk menggunakan fungsi kod pengesahan pada halaman Web, anda perlu membenamkan imej kod pengesahan yang dijana ke dalam HTML dan mengesahkannya apabila pengguna menyerahkan borang.
Berikut ialah contoh kod pengesahan mudah:
<!DOCTYPE html> <html> <head> <title>验证码示例</title> </head> <body> <form action="verify.php" method="POST"> <label for="captcha">验证码:</label> <input type="text" name="captcha" id="captcha"> <img src="captcha.php" alt="验证码"> <input type="submit" value="提交"> </form> </body> </html>
Dalam kod HTML di atas, kami menambahkan kotak input, imej kod pengesahan dan butang hantar pada borang. Atribut src bagi imej kod pengesahan menghala ke fail bernama captcha.php, yang digunakan untuk menjana imej kod pengesahan secara dinamik.
Berikut ialah contoh kod fail captcha.php:
session_start(); $code = generateCaptcha(); // 调用生成验证码函数生成随机字符串 // 将验证码保存在session中 $_SESSION['captcha'] = $code; // 输出验证码图片 header('Content-Type: image/png'); imagepng($image);
Dalam fail captcha.php, kami merangkum proses menjana kod pengesahan ke dalam fungsi dan menyimpan rentetan rawak yang dijana dalam sesi.
Apabila borang diserahkan, kami perlu mengesahkan kod pengesahan yang dimasukkan oleh pengguna, seperti yang ditunjukkan di bawah:
session_start(); $captcha = $_POST['captcha']; // 获取用户输入的验证码 $code = $_SESSION['captcha']; // 获取保存在session中的验证码 // 比较用户输入的验证码和保存在session中的验证码 if (strtolower($captcha) === strtolower($code)) { // 验证码输入正确 echo "验证码输入正确"; } else { // 验证码输入错误 echo "验证码输入错误"; } // 清空保存在session中的验证码 unset($_SESSION['captcha']);
Dalam kod di atas, kami membandingkan kod pengesahan yang dimasukkan oleh pengguna dengan kod pengesahan yang disimpan dalam sesi. Jika mereka sama, Ini bermakna kod pengesahan dimasukkan dengan betul, jika tidak, ia bermakna kod pengesahan dimasukkan dengan salah.
Melalui langkah di atas, kami telah berjaya melaksanakan fungsi kod pengesahan imej yang mudah. Dalam projek sebenar, panjang, set aksara dan saiz imej kod pengesahan boleh disesuaikan mengikut keperluan untuk meningkatkan keselamatan. Selain itu, untuk mengelakkan serangan oleh robot berniat jahat, beberapa sekatan boleh ditambah pada proses pengesahan, seperti mengehadkan bilangan percubaan oleh pengguna dalam masa yang ditentukan, menambah mekanisme penyegaran semula kod pengesahan, dsb.
Ringkasan
Artikel ini memperkenalkan cara menggunakan PHP untuk membangunkan dan melaksanakan fungsi kod pengesahan imej yang ringkas. Dengan menggunakan pustaka GD untuk menjana rentetan rawak, membenamkannya ke dalam imej kod pengesahan, dan kemudian menyimpan kod pengesahan dalam sesi untuk pengesahan, ini berkesan menghalang operasi automatik oleh robot berniat jahat. Saya harap artikel ini berguna kepada anda, terima kasih kerana membaca!
Atas ialah kandungan terperinci 30 perkataan itu ditulis semula seperti berikut: Panduan Pembangunan PHP: Pelaksanaan Mudah Kod Pengesahan Imej. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!