Bagaimana untuk melaksanakan captcha imej dalam PHP

PHPz
Lepaskan: 2023-09-24 09:48:01
asal
972 orang telah melayarinya

Bagaimana untuk melaksanakan captcha imej dalam PHP

Cara melaksanakan captcha imej dalam PHP

Ikhtisar:
Captcha imej ialah bentuk captcha biasa yang digunakan untuk mengesahkan sama ada input pengguna adalah betul. Apabila menulis tapak web atau aplikasi, kami selalunya perlu menggunakan kod pengesahan imej dalam senario seperti pendaftaran, log masuk, tetapan semula kata laluan, dll. untuk mengelakkan serangan berniat jahat dan penyerahan automatik. Dalam PHP, kod pengesahan imej boleh dilaksanakan dengan mudah dengan menggunakan perpustakaan GD. Artikel ini akan memperkenalkan cara menggunakan PHP dan perpustakaan GD untuk menjana dan mengesahkan kod pengesahan imej serta memberikan contoh kod khusus.

Langkah:
1 Buat kod pengesahan imej:
Pertama, kita perlu menjana rentetan kod pengesahan rawak dan menyimpannya dalam sesi untuk pengesahan seterusnya. Dalam proses menjana kod pengesahan, kita boleh menggunakan huruf rawak, nombor atau aksara tertentu sebagai kandungan kod pengesahan.

<?php
session_start();

$code = '';
$length = 4; // 验证码长度
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; // 验证码字符集

for ($i = 0; $i < $length; $i++) {
  $code .= $chars[mt_rand(0, strlen($chars) - 1)];
}

$_SESSION['captcha'] = $code; // 将验证码存储到session中
Salin selepas log masuk

2. Hasilkan imej kod pengesahan:
Seterusnya, kita boleh menggunakan perpustakaan GD untuk menjana imej kod pengesahan. Pustaka GD ialah perpustakaan sambungan PHP untuk pemprosesan imej, yang boleh melaksanakan beberapa operasi imej biasa.

<?php
header("Content-type: image/png");

$imageWidth = 120; // 图像宽度
$imageHeight = 40; // 图像高度

$image = imagecreate($imageWidth, $imageHeight);
$bgColor = imagecolorallocate($image, 255, 255, 255); // 背景色为白色
$textColor = imagecolorallocate($image, 0, 0, 0); // 文本颜色为黑色

for ($i = 0; $i < strlen($code); $i++) {
  $char = substr($code, $i, 1);
  $x = $imageWidth / strlen($code) * $i + 5;
  $y = mt_rand(10, $imageHeight - 20);
  imagestring($image, 5, $x, $y, $char, $textColor);
}

imagepng($image); // 输出图像
imagedestroy($image); // 释放资源
Salin selepas log masuk

3. Sahkan kod pengesahan:
Apabila pengguna menyerahkan borang, kami perlu mengesahkan sama ada kod pengesahan yang dimasukkan oleh pengguna adalah konsisten dengan kod pengesahan yang dijana sebelum ini. Pengesahan dilakukan dengan membandingkan kod pengesahan yang disimpan dalam sesi dengan kod pengesahan yang dimasukkan oleh pengguna.

<?php
session_start();

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  $captcha = $_SESSION['captcha']; // 获取之前生成的验证码
  $userInput = $_POST['captcha']; // 用户输入的验证码
  if (strtolower($captcha) === strtolower($userInput)) {
    // 验证码正确
    // 执行其他操作
  } else {
    // 验证码错误
    // 给出错误提示
  }
}
Salin selepas log masuk

Ringkasan:
Melalui langkah di atas, kami boleh melaksanakan kod pengesahan imej dalam PHP. Mula-mula, jana rentetan kod pengesahan rawak dan simpannya dalam sesi. Kemudian, gunakan pustaka GD untuk menjana imej kod pengesahan. Akhir sekali, apabila borang diserahkan, sahkan sama ada kod pengesahan yang dimasukkan oleh pengguna adalah konsisten dengan kod pengesahan yang dijana sebelum ini. Dengan melaksanakan kod pengesahan imej, anda boleh meningkatkan keselamatan tapak web atau aplikasi anda, dengan berkesan menghalang serangan berniat jahat dan penyerahan automatik.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan captcha imej dalam 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!