Cara menggunakan PHP untuk melaksanakan kod pengesahan dan fungsi pengecaman grafik

WBOY
Lepaskan: 2023-09-05 10:50:01
asal
1804 orang telah melayarinya

如何使用 PHP 实现验证码和图形识别功能

Cara menggunakan PHP untuk melaksanakan kod pengesahan dan fungsi pengecaman corak

Captcha ialah mekanisme pengesahan dalam talian yang biasa digunakan untuk mengesahkan bahawa pengguna ialah pengguna sebenar dan bukan skrip automatik atau perisian hasad. Kod pengesahan sering ditemui semasa pendaftaran tapak web, log masuk, tetapan semula kata laluan dan operasi lain Dengan mengenal pasti kod pengesahan, kami boleh menghalang serangan berniat jahat oleh robot dan penghantaran mesej spam. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan kod pengesahan dan fungsi pengecaman grafik.

  1. Jana kod pengesahan

Pertama, kami perlu menjana imej kod pengesahan untuk dikenal pasti pengguna. Di bawah ialah fungsi PHP mudah yang menjana kod pengesahan angka dan abjad angka.

<?php
session_start();

function generateCaptcha($length = 4) {
    $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    $captcha = '';
    for ($i = 0; $i < $length; $i++) {
        $captcha .= $chars[rand(0, strlen($chars) - 1)];
    }
    $_SESSION['captcha'] = $captcha; // 将验证码保存到 session 中
    return $captcha;
}
Salin selepas log masuk
  1. Tunjukkan imej kod pengesahan

Selepas menjana kod pengesahan, kami perlu memaparkannya di halaman web untuk dimasukkan oleh pengguna. Di bawah ialah skrip PHP mudah yang menghasilkan imej captcha dan memaparkannya dalam penyemak imbas.

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

$captcha = generateCaptcha(); // 生成验证码

$width = 80; // 图像宽度
$height = 40; // 图像高度

$image = imagecreate($width, $height); // 创建图像

$background = imagecolorallocate($image, 255, 255, 255); // 设置图像背景色为白色
$textColor = imagecolorallocate($image, 0, 0, 0); // 设置文本颜色为黑色

// 将验证码绘制到图像上
imagestring($image, 5, 10, 12, $captcha, $textColor);

imagepng($image); // 输出图像
imagedestroy($image); // 销毁图像
?>
Salin selepas log masuk
  1. Sahkan kod pengesahan yang dimasukkan

Selepas pengguna melihat imej kod pengesahan dalam penyemak imbas, mereka perlu memasukkan kod pengesahan untuk meneruskan. Di bawah ialah fungsi PHP mudah untuk mengesahkan bahawa kod pengesahan yang dimasukkan oleh pengguna adalah betul.

<?php
session_start();

function validateCaptcha($input) {
    if (isset($_SESSION['captcha'])) {
        $captcha = $_SESSION['captcha'];
        unset($_SESSION['captcha']); // 验证码只能使用一次
        return strtolower($input) === strtolower($captcha);
    }
    return false;
}
Salin selepas log masuk
  1. Fungsi pengecaman grafik

Kadangkala, imej kod pengesahan akan menggunakan beberapa herotan kompleks, gangguan dan kesan lain untuk menghalang pengecaman automatik. Dalam kes ini, kami boleh menggunakan teknologi pengecaman corak untuk mengenal pasti kod pengesahan secara automatik. Di bawah ialah fungsi PHP mudah yang mengenali imej CAPTCHA.

<?php
function recognizeCaptcha($imagePath) {
    $image = imagecreatefrompng($imagePath);
    $width = imagesx($image);
    $height = imagesy($image);

    $captcha = '';
    for ($i = 0; $i < $width; $i++) {
        $color = imagecolorat($image, $i, $height / 2);
        $r = ($color >> 16) & 0xFF;
        $g = ($color >> 8) & 0xFF;
        $b = $color & 0xFF;
        $brightness = ($r + $g + $b) / (3 * 255);
        $captcha .= ($brightness < 0.5) ? '1' : '0';
    }

    imagedestroy($image);
    return $captcha;
}
Salin selepas log masuk

Di atas ialah contoh mudah menggunakan PHP untuk melaksanakan kod pengesahan dan fungsi pengecaman corak. Dengan menjana CAPTCHA, memaparkan imej CAPTCHA, mengesahkan input pengguna dan menggunakan teknologi pengecaman corak, kami boleh meningkatkan keselamatan dan pengalaman pengguna tapak web kami. Sudah tentu, aplikasi sebenar mungkin melibatkan kod pengesahan dan algoritma pengecaman corak yang lebih kompleks, yang perlu dilaraskan dan dioptimumkan mengikut keadaan tertentu.

Atas ialah kandungan terperinci Cara menggunakan PHP untuk melaksanakan kod pengesahan dan fungsi pengecaman grafik. 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!