Cara menggunakan PHP untuk melaksanakan kod pengesahan mesin manusia

WBOY
Lepaskan: 2023-06-27 14:36:01
asal
1616 orang telah melayarinya

Kod pengesahan mesin manusia ialah bentuk kod pengesahan yang biasa digunakan, yang boleh menghalang serangan robot hasad dan pendaftaran hasad dengan berkesan. Sebagai bahasa sebelah pelayan, PHP sangat sesuai untuk melaksanakan fungsi kod pengesahan mesin manusia. Dalam artikel ini, kami akan memperkenalkan cara melaksanakan kod pengesahan mesin manusia menggunakan PHP.

  1. Jana imej kod pengesahan
    Pertama, kita perlu menjana imej kod pengesahan. Proses ini boleh dicapai dengan menggunakan perpustakaan GD. Pustaka GD ialah perpustakaan pemprosesan imej sumber terbuka yang boleh digunakan untuk menjana dan memanipulasi pelbagai jenis imej. Dalam PHP, anda boleh menggunakannya dengan memasang sambungan GD.

Berikut ialah contoh kod untuk menjana imej kod pengesahan:

<?php
session_start();
$code = rand(1000, 9999);
$_SESSION["code"] = $code;
$width = 100;
$height = 50;
$image = imagecreatetruecolor($width, $height);
$textColor = imagecolorallocate($image, 0, 0, 0); //设置文本颜色
$bgColor = imagecolorallocate($image, 255, 255, 255); //设置背景颜色
imagefilledrectangle($image, 0, 0, $width, $height, $bgColor); //绘制矩形背景

//绘制验证码字符串
$font = 'arial.ttf'; //字体
$fontSize = 24; //字体大小
$x = 20; //x轴位置
$y = 30; //y轴位置
for ($i = 0; $i < 4; $i++) {
    $char = substr(str_shuffle("ABCDEFGHJKMNPQRSTUVWXYZ23456789"), 0, 1);
    imagettftext($image, $fontSize, rand(-15, 15), $x, $y, $textColor, $font, $char);
    $x += 20;
}

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

Kod ini akan menjana imej kod pengesahan di bahagian pelayan dan mengeluarkannya ke penyemak imbas untuk paparan.

  1. Sahkan input pengguna
    Seterusnya, kami perlu mengesahkan bahawa input pengguna adalah betul. Semasa menjana kod pengesahan, kami telah menyimpan kod pengesahan dalam Sesi. Oleh itu, selepas pengguna menyerahkan input mereka, kami boleh membandingkan kod pengesahan yang dimasukkan oleh pengguna dengan kod pengesahan yang disimpan dalam Sesi.

Berikut ialah contoh kod untuk mengesahkan input pengguna:

<?php
session_start();
if($_POST["code"] != $_SESSION["code"]) {
    echo "验证码输入错误";
} else {
    echo "验证码输入正确";
}
?>
Salin selepas log masuk

Kod ini akan mengesahkan sama ada kod pengesahan yang diserahkan oleh pengguna adalah sama dengan kod pengesahan yang disimpan dalam Sesi. Jika mereka tidak sama, mesej ralat akan dikeluarkan jika mereka adalah sama, ini bermakna input pengguna adalah betul.

  1. Dibenamkan ke dalam borang
    Akhir sekali, kami perlu membenamkan kod pengesahan mesin manusia ke dalam borang. Untuk mengelakkan penyerang berniat jahat daripada menyerahkan borang secara langsung tanpa memasukkan kod pengesahan, kami perlu memaparkan skrip penjanaan kod pengesahan dan borang pada halaman yang sama, dan mengesahkannya selepas penyerahan.

Berikut ialah contoh kod untuk membenamkan kod pengesahan mesin manusia ke dalam borang:

<form method="post" action="verify.php">
    <p>用户名:</p>
    <input type="text" name="username">
    <p>密码:</p>
    <input type="password" name="password">
    <p>验证码:</p>
    <input type="text" name="code">
    <img src="code.php" alt="验证码">
    <input type="submit" value="提交">
</form>
Salin selepas log masuk

Kod ini akan menambah imej pada borang untuk memaparkan kod pengesahan. Pengguna perlu memasukkan kod pengesahan yang ditunjukkan dalam imej untuk menyerahkan borang. Selepas mengklik butang hantar, borang akan melompat ke kod skrip pengesahan dan melakukan pengesahan.

Ringkasan
Artikel ini memperkenalkan cara menggunakan PHP untuk melaksanakan kod pengesahan mesin manusia. Dengan menjana imej kod pengesahan dan menyimpannya ke Sesi, serangan berniat jahat dan pendaftaran boleh dicegah dengan berkesan. Membenamkan kod pengesahan mesin manusia dalam borang boleh meningkatkan keselamatan tapak web dan pengalaman pengguna dengan berkesan.

Atas ialah kandungan terperinci Cara menggunakan PHP untuk melaksanakan kod pengesahan mesin manusia. 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