Langkah terperinci untuk menjana imej kod pengesahan yang tidak teratur menggunakan perpustakaan PHP dan GD

WBOY
Lepaskan: 2023-07-12 19:16:02
asal
826 orang telah melayarinya

Langkah terperinci untuk menghasilkan imej kod pengesahan yang tidak teratur menggunakan perpustakaan PHP dan GD

1 Pengenalan
Captcha (CAPTCHA) ialah teknologi yang digunakan untuk membezakan mesin dan manusia. Ia sering digunakan untuk menghalang program berniat jahat daripada mengautomasikan serangan tapak web, spam dan pendaftaran berniat jahat. Menjana imej kod pengesahan yang tidak teratur boleh meningkatkan kerumitan kod pengesahan dan meningkatkan keselamatan. Artikel ini akan memperkenalkan langkah terperinci tentang cara menggunakan pustaka PHP dan GD untuk menjana imej kod pengesahan yang tidak teratur dan memberikan contoh kod yang berkaitan.

2. Persediaan

  1. Pastikan PHP dipasang dan perpustakaan GD didayakan. Pustaka GD ialah perpustakaan sambungan untuk memproses imej. Ia boleh dihidupkan dengan mendayakan perpustakaan gd dalam fail php.ini.
  2. Buat fail PHP baharu bernama captcha.php.

3. Hasilkan imej kod pengesahan
Berikut ialah langkah terperinci untuk menjana imej kod pengesahan yang tidak teratur:

  1. Buat imej kosong dan tetapkan warna latar belakang.

    $imageWidth = 150;
    $imageHeight = 50;
    $image = imagecreatetruecolor($imageWidth, $imageHeight);
    $backgroundColor = imagecolorallocate($image, 255, 255, 255);
    imagefill($image, 0, 0, $backgroundColor);
    Salin selepas log masuk
  2. Jana rentetan kod pengesahan rawak.

    $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    $length = 6;
    $code = '';
    for ($i = 0; $i < $length; $i++) {
     $code .= $characters[rand(0, strlen($characters) - 1)];
    }
    Salin selepas log masuk
  3. Lukis rentetan kod pengesahan pada gambar.

    $font = 'arial.ttf';
    $fontSize = 20;
    $fontColor = imagecolorallocate($image, 0, 0, 0);
    imagettftext($image, $fontSize, 0, 10, 30, $fontColor, $font, $code);
    Salin selepas log masuk
  4. Tambahkan garisan yang mengganggu secara rawak.

    $lineColor = imagecolorallocate($image, 128, 128, 128);
    for ($i = 0; $i < 5; $i++) {
     imageline($image, rand(0, $imageWidth), rand(0, $imageHeight), rand(0, $imageWidth), rand(0, $imageHeight), $lineColor);
    }
    Salin selepas log masuk
  5. Tambah bunyi rawak.

    $pixelColor = imagecolorallocate($image, 0, 0, 0);
    for ($i = 0; $i < 50; $i++) {
     imagesetpixel($image, rand(0, $imageWidth), rand(0, $imageHeight), $pixelColor);
    }
    Salin selepas log masuk
  6. Keluarkan imej dan musnahkan sumber imej.

    header('Content-Type: image/png');
    imagepng($image);
    imagedestroy($image);
    Salin selepas log masuk

4. Penggunaan bahagian hadapan
Gunakan teg img dalam HTML untuk memaparkan imej kod pengesahan pada halaman hujung hadapan.

<img src="captcha.php" alt="验证码">
Salin selepas log masuk

5. Ringkasan
Artikel ini memperincikan langkah untuk menjana imej kod pengesahan yang tidak teratur menggunakan perpustakaan PHP dan GD, dan menyediakan contoh kod yang sepadan. Kerumitan dan keselamatan kod pengesahan boleh ditingkatkan melalui teknik seperti menyesuaikan warna latar belakang, rentetan kod pengesahan, garisan gangguan dan titik hingar. Imej kod pengesahan yang dijana menggunakan kaedah ini boleh menghalang robot dan serangan berniat jahat dengan berkesan. Saya harap artikel ini dapat membantu pembaca memahami dengan lebih baik cara menjana imej kod pengesahan yang tidak teratur dan menggunakannya pada projek sebenar.

Atas ialah kandungan terperinci Langkah terperinci untuk menjana imej kod pengesahan yang tidak teratur menggunakan perpustakaan PHP dan GD. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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