Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk membangunkan fungsi kod pengesahan menggunakan PHP

Bagaimana untuk membangunkan fungsi kod pengesahan menggunakan PHP

WBOY
WBOYasal
2023-08-17 21:25:062028semak imbas

Bagaimana untuk membangunkan fungsi kod pengesahan menggunakan PHP

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:

  1. Jana rentetan kod pengesahan rawak, yang boleh terdiri daripada nombor dan huruf.
<?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中
  1. Buat imej kod pengesahan kosong dan tetapkan warna latar belakang dan warna fon.
$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);
  1. Lukis rentetan kod pengesahan pada gambar.
$fontSize = 20;  // 字体大小
$fontAngle = 0;  // 字体角度
$x = 30;  // 字体X坐标
$y = 30;  // 字体Y坐标
imagettftext($image, $fontSize, $fontAngle, $x, $y, $textColor, 'path/to/font.ttf', $code);
  1. Tambah garisan gangguan untuk meningkatkan kebolehbacaan dan keselamatan kod pengesahan.
$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);
}
  1. Keluarkan gambar kod pengesahan.
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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn