Bagaimana untuk membangunkan fungsi kod pengesahan menggunakan PHP

WBOY
Lepaskan: 2023-08-17 21:26:01
asal
1992 orang telah melayarinya

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中
Salin selepas log masuk
  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);
Salin selepas log masuk
  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);
Salin selepas log masuk
  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);
}
Salin selepas log masuk
  1. Keluarkan gambar kod pengesahan.
header('Content-type: image/png');  // 设置输出类型为PNG图片
imagepng($image);
imagedestroy($image);
Salin selepas log masuk

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 '验证码错误!';
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!