Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengintegrasikan fungsi pengesahan kod pengesahan dalam bentuk PHP

Bagaimana untuk mengintegrasikan fungsi pengesahan kod pengesahan dalam bentuk PHP

WBOY
WBOYasal
2023-06-24 08:32:351600semak imbas

Dengan perkembangan pesat Internet, pendaftaran pengguna laman web dan log masuk telah menjadi fungsi penting. Walau bagaimanapun, untuk melindungi keselamatan akaun pengguna, kami mesti mengambil beberapa langkah untuk mencegah serangan berniat jahat dan tingkah laku retak. Antaranya, fungsi pengesahan kod pengesahan adalah langkah biasa untuk menghalang robot dan perangkak web.

Menyepadukan fungsi pengesahan kod pengesahan dalam borang PHP boleh menghalang robot dan serangan berniat jahat dengan berkesan serta meningkatkan keselamatan tapak web. Di bawah, kami akan memperkenalkan cara untuk mengintegrasikan fungsi pengesahan kod pengesahan dalam bentuk PHP:

Langkah 1: Jana kod pengesahan

Pertama, kita perlu menjana kod pengesahan dan menyimpannya pada sisi pelayan supaya Pengesahan seterusnya. Anda boleh menggunakan pustaka GD PHP untuk menjana imej kod pengesahan.

Kod pelaksanaan khusus adalah seperti berikut:

session_start(); // 开启会话

$length = 4; // 验证码长度
$width = 80; // 验证码宽度
$height = 30; // 验证码高度

$chars = 'abcdefghjklmnpqrstuvwxyz123456789'; // 验证码字符集合
$chars_length = strlen($chars);

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

$_SESSION['code'] = md5($code); // 将验证码保存到会话中

$image = imagecreatetruecolor($width, $height); // 创建画布
$background_color = imagecolorallocate($image, 255, 255, 255); // 设置背景颜色
imagefill($image, 0, 0, $background_color);

$fonts = ['arial.ttf', 'arialbd.ttf', 'ariali.ttf', 'arialbi.ttf']; // 设置字体集合
$font_colors = [
  imagecolorallocate($image, 55, 154, 196),
  imagecolorallocate($image, 250, 89, 84),
  imagecolorallocate($image, 200, 138, 45),
  imagecolorallocate($image, 82, 184, 76)
]; // 设置字体颜色集合

for ($i = 0; $i < $length; $i++) {
  $font = $fonts[mt_rand(0, count($fonts) - 1)];
  $font_color = $font_colors[mt_rand(0, count($font_colors) - 1)];
  imagettftext($image, 18, mt_rand(-30, 30), $width / $length * $i + mt_rand(0, 10), $height / 2 + mt_rand(-5, 5), $font_color, $font, $code[$i]);
}

header('Content-type: image/png'); // 设置验证码图片类型为png
imagepng($image); // 输出验证码图片
imagedestroy($image); // 释放内存

Gunakan kod di atas untuk menjana imej kod pengesahan dengan panjang 4 dan simpan pada sesi.

Langkah 2: Paparkan kod pengesahan

Selepas menjana kod pengesahan, kami perlu memaparkan kod pengesahan dalam borang dan membenarkan pengguna memasukkan kod pengesahan. Pelaksanaan khusus boleh memaparkan kod pengesahan dengan menambahkan teg imej pada borang HTML.

Kod pelaksanaan khusus adalah seperti berikut:

<img src="captcha.php" alt="验证码">
<input type="text" name="captcha" required>

Dalam contoh ini, kotak teks bernama "captcha" digunakan untuk menerima kod pengesahan yang dimasukkan oleh pengguna dan menetapkannya sebagai medan yang diperlukan .

Langkah 3: Sahkan kod pengesahan

Selepas pengguna menyerahkan borang, kami perlu menggunakan kod PHP untuk mengesahkan sama ada kod pengesahan yang dimasukkan oleh pengguna adalah betul. Pelaksanaan khusus boleh menentukan sama ada kod pengesahan adalah betul dengan membaca kod pengesahan yang disimpan dalam sesi dan membandingkannya dengan kod pengesahan yang dimasukkan oleh pengguna.

Kod pelaksanaan khusus adalah seperti berikut:

session_start(); // 开启会话

if ($_SESSION['code'] != md5($_POST['captcha'])) {
  echo '验证码错误';
  exit;
}

Dalam kod di atas, tentukan dahulu sama ada kod pengesahan yang disimpan dalam sesi adalah sama dengan kod pengesahan yang dimasukkan oleh pengguna. Jika mereka tidak sama, keluarkan "Ralat Kod Pengesahan" dan keluar dari program.

Melalui tiga langkah di atas, kami telah berjaya menyepadukan fungsi pengesahan kod pengesahan, sekali gus meningkatkan keselamatan tapak web.

Ringkasan

Menyepadukan fungsi pengesahan kod pengesahan dalam borang PHP dengan berkesan boleh menghalang robot dan serangan berniat jahat serta meningkatkan keselamatan tapak web. Artikel ini menerangkan cara menjana imej kod pengesahan melalui PHP dan menyimpannya ke sesi cara memaparkan kod pengesahan dalam bentuk HTML dan cara menggunakan kod PHP untuk mengesahkan bahawa kod pengesahan yang dimasukkan oleh pengguna adalah betul; Dalam projek sebenar, pembangun boleh menambah baik kod di atas mengikut keperluan khusus untuk mencapai fungsi pengesahan kod pengesahan yang lebih selamat dan cekap.

Atas ialah kandungan terperinci Bagaimana untuk mengintegrasikan fungsi pengesahan kod pengesahan dalam bentuk PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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