Cara menggunakan PHP untuk membangunkan fungsi kod pengesahan
Kod pengesahan (CAPTCHA) ialah cara teknikal yang digunakan untuk menentukan sama ada pengguna adalah orang sebenar atau mesin. Dalam aplikasi rangkaian, kod pengesahan sering digunakan dalam pendaftaran, log masuk, tetapan semula kata laluan, dll. untuk mengelakkan serangan mesin berniat jahat dan log masuk haram. Artikel ini akan memperkenalkan cara menggunakan PHP untuk membangunkan fungsi kod pengesahan dan menyediakan contoh kod yang sepadan.
1. Hasilkan imej kod pengesahan
Dalam PHP, kami boleh menggunakan perpustakaan GD untuk menjana imej kod pengesahan. Pertama, kita perlu mencipta fail PHP untuk menjana imej kod pengesahan, seperti captcha.php. Dalam fail ini, kita perlu melaksanakan langkah berikut:
<?php session_start(); $code = ''; $length = 4; // 验证码长度 $charset = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; // 验证码字符集 $charsetLen = strlen($charset); for ($i = 0; $i < $length; $i++) { $code .= $charset[mt_rand(0, $charsetLen - 1)]; } $_SESSION['captcha_code'] = $code; // 将验证码保存到session中
$width = 150; // 图片宽度 $height = 50; // 图片高度 $image = imagecreatetruecolor($width, $height); $bgColor = imagecolorallocate($image, 255, 255, 255); // 背景颜色为白色 $textColor = imagecolorallocate($image, 0, 0, 0); // 字体颜色为黑色 imagefill($image, 0, 0, $bgColor);
$fontSize = 20; // 字体大小 $fontAngle = 0; // 字体角度 $x = 30; // 字体X坐标 $y = 30; // 字体Y坐标 imagettftext($image, $fontSize, $fontAngle, $x, $y, $textColor, 'path/to/font.ttf', $code);
$lineColor = imagecolorallocate($image, 200, 200, 200); // 干扰线颜色为灰色 for ($i = 0; $i < 5; $i++) { imageline($image, mt_rand(0, $width), mt_rand(0, $height), mt_rand(0, $width), mt_rand(0, $height), $lineColor); }
header('Content-type: image/png'); // 设置输出类型为PNG图片 imagepng($image); imagedestroy($image);
2. Sahkan input pengguna
Semasa menjana imej kod pengesahan, kami juga perlu menulis kod untuk mengesahkan sama ada kod pengesahan yang dimasukkan oleh pengguna adalah betul. Dalam operasi seperti log masuk, kod pengesahan yang dimasukkan oleh pengguna biasanya diserahkan kepada pelayan melalui borang. Kami boleh mengesahkan sama ada input pengguna adalah betul dengan membandingkannya dengan kod pengesahan dalam sesi. Berikut ialah contoh mudah:
<?php session_start(); if ($_SERVER['REQUEST_METHOD'] == 'POST') { $inputCode = $_POST['code']; $captchaCode = $_SESSION['captcha_code']; if (strcasecmp($inputCode, $captchaCode) === 0) { echo '验证通过!'; } else { echo '验证码错误!'; } }
Selepas pengguna menyerahkan kod pengesahan, kita boleh mendapatkan kod pengesahan yang dimasukkan oleh pengguna melalui $_POST['kod'], dan menggunakan fungsi strcasecmp() (tidak sensitif huruf besar-kecil) dengan kod pengesahan dalam sesi Kod pengesahan dibandingkan. Jika mereka sama, ini bermakna kod pengesahan telah diluluskan.
Ringkasan:
Artikel ini memperkenalkan cara menggunakan PHP untuk membangunkan fungsi kod pengesahan dan menyediakan contoh kod yang sepadan. Dengan menjana imej kod pengesahan dan mengesahkan kod pengesahan yang dimasukkan oleh pengguna, kami boleh meningkatkan keselamatan tapak web dan menghalang serangan berniat jahat dan log masuk haram. Dalam aplikasi praktikal, kami boleh menyesuaikan gaya, panjang, set aksara, dll. kod pengesahan mengikut keperluan. Pada masa yang sama, untuk menambah baik pengalaman pengguna, kami juga boleh menambah fungsi menyegarkan kod pengesahan untuk memudahkan pengguna mendapatkan imej kod pengesahan baharu.
Atas ialah kandungan terperinci Bagaimana untuk membangunkan fungsi kod pengesahan menggunakan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!