Rumah > pembangunan bahagian belakang > tutorial php > PHP melaksanakan penjanaan dan pengesahan kod pengesahan

PHP melaksanakan penjanaan dan pengesahan kod pengesahan

王林
Lepaskan: 2023-06-18 10:36:02
asal
1609 orang telah melayarinya

PHP ialah bahasa skrip sebelah pelayan yang biasa digunakan yang bukan sahaja berkuasa tetapi juga mudah dipelajari dan ditulis. Dalam pembangunan laman web, penjanaan dan pengesahan kod pengesahan adalah langkah keselamatan yang sangat penting. Dalam artikel ini, kami akan memperkenalkan cara menggunakan PHP untuk menjana dan mengesahkan kod pengesahan.

1. Apakah itu kod pengesahan?

CAPTCHA ialah singkatan daripada "Ujian Turing Awam Automatik Sepenuhnya untuk membezakan Komputer dan Manusia". Ia adalah mekanisme pengesahan dalam talian yang biasa digunakan untuk memastikan bahawa pengguna adalah orang sebenar dan bukan bot. Kod pengesahan biasanya terdiri daripada imej atau bunyi yang memerlukan pengguna memasukkan jawapan yang betul untuk membuktikan bahawa mereka adalah pengguna sebenar.

2. Hasilkan kod pengesahan

Dalam PHP, proses menjana imej kod pengesahan dibahagikan kepada beberapa langkah. Pertama, kita perlu menjana imej latar belakang rawak dan melukis beberapa garisan gangguan dan titik hingar padanya untuk meningkatkan keselamatan kod pengesahan. Kemudian, kami menggunakan perpustakaan GD untuk melukis aksara yang dijana secara rawak pada imej, dan akhirnya mengeluarkan imej.

Berikut ialah contoh kod yang boleh menjana imej kod pengesahan 4 digit ringkas:

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

$width = 100;
$height = 40;
$length = 4;

// 生成验证码字符串
$chars = "0123456789";
$str = "";
for ($i = 0; $i < $length; $i++) {
    $str .= substr($chars, mt_rand(0, strlen($chars)-1), 1);
}

// 保存验证码到Session
$_SESSION["captcha"] = $str;

// 创建图像对象并绘制背景
$im = imagecreatetruecolor($width, $height);
$bgColor = imagecolorallocate($im, 242, 242, 242);
imagefill($im, 0, 0, $bgColor);

// 添加干扰线
$lineColor = imagecolorallocate($im, 200, 200, 200);
for ($i = 0; $i < 6; $i++) {
    imageline($im, 0, mt_rand(0, $height), $width, mt_rand(0, $height), $lineColor);
}

// 添加噪点
$pixelColor = imagecolorallocate($im, 0, 0, 0);
for ($i = 0; $i < 50; $i++) {
    imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $pixelColor);
}

// 绘制验证码字符串
$font = 5;
$fontColor = imagecolorallocate($im, 0, 0, 0);
$fontWidth = imagefontwidth($font);
$fontHeight = imagefontheight($font);
$x = ($width - $fontWidth * $length) / 2;
$y = ($height - $fontHeight) / 2;
for ($i = 0; $i < $length; $i++) {
    $char = substr($str, $i, 1);
    imagechar($im, $font, $x + $fontWidth * $i, $y, $char, $fontColor);
}

// 输出图像
imagepng($im);
imagedestroy($im);
?>
Salin selepas log masuk

3 perlu Mengesahkan CAPTCHA yang dimasukkan oleh pengguna semasa menghantar borang. Dalam PHP, kami boleh mengesahkan dengan membandingkan kod pengesahan yang dimasukkan oleh pengguna dengan kod pengesahan yang disimpan dalam Sesi.

Berikut ialah contoh kod yang boleh mengesahkan kod pengesahan yang dimasukkan oleh pengguna dan memaparkan maklumat berkaitan:

<?php
session_start();

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $captcha = $_POST["captcha"];
    if (!empty($captcha) && strtolower($captcha) == strtolower($_SESSION["captcha"])) {
        echo "验证码输入正确!";
    } else {
        echo "验证码输入错误!"; 
    }
}
?>
<form method="post">
    <input type="text" name="captcha" placeholder="请输入验证码">
    <img src="captcha.php" onclick="this.src='captcha.php?t='+Math.random()">
    <input type="submit" value="提交">
</form>
Salin selepas log masuk

Dalam kod ini, kami menambah kotak input imej dan "refresh" ke butang borang. Apabila pengguna mengklik butang "Muat Semula", imej captcha baharu akan dijana secara rawak. Selepas pengguna memasukkan, kod pengesahan akan disahkan selepas mengklik butang "Serah".

4. Kesimpulan

Menggunakan PHP untuk menjana dan mengesahkan kod pengesahan boleh menghalang robot atau penyerang berniat jahat daripada menyerang tapak web. Melalui contoh kod di atas, kita dapat melihat bahawa proses melaksanakan kod pengesahan dalam kod PHP juga sangat mudah Terutama apabila menggunakan perpustakaan GD untuk menghasilkan imej, kod tersebut boleh dibuat dengan lebih ringkas. Oleh itu, menggunakan kod PHP untuk menjana kod pengesahan boleh melindungi privasi dan keselamatan tapak web dan pengguna anda dengan lebih berkesan.

Atas ialah kandungan terperinci PHP melaksanakan penjanaan dan pengesahan kod pengesahan. 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