Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk menjana imej kod pengesahan menggunakan PHP

Bagaimana untuk menjana imej kod pengesahan menggunakan PHP

WBOY
Lepaskan: 2023-08-19 14:14:01
asal
1984 orang telah melayarinya

Bagaimana untuk menjana imej kod pengesahan menggunakan PHP

Cara menjana imej kod pengesahan menggunakan PHP

Kod pengesahan Captcha (CAPTCHA) ialah teknologi biasa yang digunakan untuk mengesahkan pengguna atau menyekat akses kepada program automatik. Dengan menjana imej rawak dan memerlukan pengguna mengenal pasti aksara atau imej yang betul, CAPTCHA boleh menghalang serangan bot dan pendaftaran spam dengan berkesan. Dalam artikel ini, kami akan memperkenalkan cara menggunakan PHP untuk menjana imej kod pengesahan dan memaparkannya pada halaman.

  1. Pertama, kita perlu mencipta fail PHP untuk menjana imej kod pengesahan. Anda boleh menamakannya captcha.php dan pastikan sambungan fail ialah .php.
  2. Dalam fail captcha.php, kita perlu menentukan beberapa pembolehubah untuk menetapkan lebar, ketinggian dan bilangan aksara imej kod pengesahan. Kita juga boleh menentukan tatasusunan untuk menyimpan semua aksara yang mungkin. Contoh kod adalah seperti berikut:
<?php
$width = 120; // 验证码图片的宽度
$height = 40; // 验证码图片的高度
$characters = 4; // 验证码字符个数

$possibleChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
Salin selepas log masuk
  1. Seterusnya, kita perlu mencipta imej kosong dan menetapkan beberapa sifat imej asas, seperti warna dan fon. Contoh kod adalah seperti berikut:
$image = imagecreatetruecolor($width, $height);

$backgroundColor = imagecolorallocate($image, 255, 255, 255); // 背景颜色为白色
$textColor = imagecolorallocate($image, 0, 0, 0); // 文字颜色为黑色

imagefill($image, 0, 0, $backgroundColor);

$font = 'path/to/your/font.ttf'; // 字体文件路径,可以根据自己的需求修改
Salin selepas log masuk
  1. Kini, kita perlu menjana aksara secara rawak dan melukisnya pada gambar. Kita boleh menggunakan fungsi rawak PHP untuk memilih aksara daripada tatasusunan aksara dan menggunakan fungsi imagettftext untuk menulis aksara pada imej. Contoh kod adalah seperti berikut:
$captcha = '';

for ($i = 0; $i < $characters; $i++) {
    $randomChar = $possibleChars[rand(0, strlen($possibleChars) - 1)];
    $captcha .= $randomChar;

    $x = ($width / $characters) * $i + 10; // 10为字体边距
    $y = $height / 2 + 15; // 15为字体居中偏移量

    imagettftext($image, 20, 0, $x, $y, $textColor, $font, $randomChar);
}
Salin selepas log masuk
  1. Akhir sekali, kita perlu menyimpan kod pengesahan yang dijana dalam sesi untuk pengesahan seterusnya. Contoh kod adalah seperti berikut:
session_start();
$_SESSION['captcha'] = $captcha;
Salin selepas log masuk
  1. Langkah terakhir adalah untuk mengeluarkan imej kod pengesahan yang dijana dan menetapkan maklumat pengepala yang sepadan. Contoh kod adalah seperti berikut:
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
Salin selepas log masuk

Kesimpulan

Melalui langkah di atas, kami berjaya menghasilkan imej kod pengesahan mudah dan memaparkannya pada halaman web. Setiap kali pengguna memuat semula halaman, dia akan mendapat kod pengesahan baharu untuk memastikan keunikan dan keselamatan kod pengesahan. Dalam aplikasi praktikal, kita boleh membandingkan kod pengesahan yang dimasukkan oleh pengguna dengan kod pengesahan yang disimpan dalam sesi untuk mengesahkan identiti pengguna.

Ini adalah contoh mudah PHP menjana imej kod pengesahan Anda boleh menambah baik dan mengembangkan fungsi ini mengikut keperluan anda sendiri. Saya harap artikel ini akan membantu anda memahami dan menggunakan teknologi kod pengesahan!

Atas ialah kandungan terperinci Bagaimana untuk menjana imej 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