Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan kod pengesahan dalam PHP

Bagaimana untuk melaksanakan kod pengesahan dalam PHP

WBOY
WBOYasal
2023-05-20 11:31:515963semak imbas

Dengan pembangunan Internet yang berterusan, semakin banyak tapak web perlu menggunakan kod pengesahan untuk memastikan keselamatan. Kod pengesahan ialah teknologi pengesahan yang bergantung pada keupayaan manusia dan tidak boleh dipecahkan oleh komputer Ia digunakan secara meluas dalam pendaftaran laman web, log masuk, mendapatkan kata laluan dan fungsi lain. Berikut akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi kod pengesahan.

1. Hasilkan imej kod pengesahan

Penjanaan imej kod pengesahan ialah teras fungsi kod pengesahan Ia perlu menjana aksara rawak dan menjadikannya sebagai imej untuk dipaparkan kepada pengguna. Dalam PHP, anda boleh menggunakan perpustakaan GD untuk menjana imej.

Pustaka GD ialah sambungan PHP untuk mencipta imej secara dinamik Ia menyediakan pelbagai fungsi yang boleh digunakan untuk mencipta imej, mengubah suai imej, menyimpan imej dan operasi lain. Imej kod pengesahan boleh dibuat dengan mudah melalui pustaka GD.

Langkah untuk menjana kod pengesahan adalah seperti berikut:

  1. Tetapkan saiz imej, warna dan atribut lain
  2. Jana rentetan rawak
  3. Renderkan rentetan kepada
  4. Tambah garisan gangguan, titik gangguan, dsb. dalam imej

Berikut ialah pelaksanaan kod khusus:

<?php
//设置图片大小,这里是120x40
$image_width = 120;
$image_height = 40;

//创建画布
$image = imagecreatetruecolor($image_width, $image_height);

//设置背景色为白色
$bg_color = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bg_color);

//生成随机字符串
$code = "";
$charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$charset_length = strlen($charset);

for ($i = 0; $i < 4; $i++) {
    $rand_index = rand(0, $charset_length - 1);
    $rand_char = substr($charset, $rand_index, 1);
    $code .= $rand_char;
}

//将字符串渲染到图像中
$font_size = 20;
$font_color = imagecolorallocate($image, 0, 0, 0);

$x = 10;
$y = ($image_height - $font_size) / 2;
for ($i = 0; $i < 4; $i++) {
    $char = substr($code, $i, 1);
    imagettftext($image, $font_size, rand(-10, 10), $x, $y, $font_color, "arial.ttf", $char);
    $x += $font_size + rand(-5, 5);
}

//添加干扰线、干扰点等
for ($i = 0; $i < 6; $i++) {
    $line_color = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255));
    imageline($image, rand(0, $image_width), rand(0, $image_height), rand(0, $image_width), rand(0, $image_height), $line_color);
}

for ($i = 0; $i < 50; $i++) {
    $point_color = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255));
    imagesetpixel($image, rand(0, $image_width), rand(0, $image_height), $point_color);
}

//输出图像
header("Content-type:image/png");
imagepng($image);

//销毁图像
imagedestroy($image);
?>

Kod di atas akan menjana imej kod pengesahan rawak, dan Paparkannya dalam penyemak imbas. Antaranya, fon Arial, teks hitam, latar belakang putih, 6 garisan gangguan dan 50 titik gangguan digunakan. Boleh disesuaikan mengikut keperluan.

2. Pengesahan kod pengesahan

Selepas menjana imej kod pengesahan, anda perlu membandingkan kod pengesahan yang dimasukkan oleh pengguna dengan kod pengesahan yang dijana untuk mengesahkan sama ada pengguna telah memasukkan yang betul kod pengesahan. Dalam PHP, rentetan kod pengesahan yang dijana boleh disimpan dalam sesi untuk pengesahan seterusnya.

Langkah khusus adalah seperti berikut:

  1. Simpan rentetan kod pengesahan yang dijana dalam sesi
  2. Pengguna memasukkan kod pengesahan
  3. Sahkan input pengguna Adakah kod pengesahan sama dengan kod pengesahan yang disimpan dalam sesi itu? untuk menyimpan rentetan kod pengesahan yang dijana, dan Bandingkan kod pengesahan yang dimasukkan dengan kod pengesahan yang disimpan dalam sesi. Antaranya, fungsi strcasecmp ialah fungsi yang membandingkan dua rentetan tanpa mengira kes Jika ia sama, ia mengembalikan 0, jika ia berbeza, ia mengembalikan nilai bukan sifar.
Ringkasan

Melaksanakan fungsi kod pengesahan melalui PHP boleh memastikan keselamatan tapak web dengan berkesan. Apabila menjana imej kod pengesahan, anda boleh membuat imej kod pengesahan dengan mudah dalam pelbagai warna dan fon dengan bantuan pustaka GD dan menambah garisan gangguan, titik gangguan, dsb. untuk meningkatkan keselamatan. Semasa mengesahkan kod pengesahan, rentetan kod pengesahan yang dijana perlu disimpan dalam sesi untuk perbandingan seterusnya.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan kod pengesahan dalam 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