Rumah  >  Artikel  >  pembangunan bahagian belakang  >  PHP melaksanakan penjanaan dan pengesahan kod pengesahan imej

PHP melaksanakan penjanaan dan pengesahan kod pengesahan imej

PHPz
PHPzasal
2023-09-13 11:30:39868semak imbas

PHP melaksanakan penjanaan dan pengesahan kod pengesahan imej

PHP melaksanakan penjanaan dan pengesahan kod pengesahan imej

Dalam pembangunan tapak web, untuk mengelakkan serangan mesin berniat jahat atau pendaftaran automatik, kami sering menggunakan kod pengesahan imej untuk pengesahan. Artikel ini akan memperkenalkan cara menggunakan PHP untuk menjana dan mengesahkan kod pengesahan imej, dan memberikan contoh kod khusus.

  1. Jana kod pengesahan gambar

Kunci untuk menjana kod pengesahan gambar ialah menjana rentetan kod pengesahan rawak dan melukisnya pada gambar. Berikut ialah contoh kod untuk menjana kod pengesahan imej:

<?php
session_start();

// 声明图片尺寸
$image_width = 100;
$image_height = 40;

// 创建图片资源
$image = imagecreatetruecolor($image_width, $image_height);

// 生成背景颜色
$bg_color = imagecolorallocate($image, mt_rand(200, 255), mt_rand(200, 255), mt_rand(200, 255));
imagefill($image, 0, 0, $bg_color);

// 生成验证码字符串
$chars = 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz23456789';
$code = '';
for ($i = 0; $i < 4; $i++) {
    $code .= $chars[mt_rand(0, strlen($chars) - 1)];
}

// 将验证码字符串保存到session中,用于验证
$_SESSION['captcha'] = $code;

// 绘制验证码文字
$font_file = 'path_to_your_font.ttf';  // 替换为你自己的字体文件路径
$text_color = imagecolorallocate($image, 0, 0, 0);  // 文字颜色为黑色
imagettftext($image, 20, 0, 10, 30, $text_color, $font_file, $code);

// 输出图片
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>

Dalam kod di atas, mula-mula buat sumber imej dengan lebar dan ketinggian yang ditentukan melalui fungsi imagecreatetruecolor dan kemudian gunakan fungsi imagecolorallocate Hasilkan warna latar belakang dan isikan keseluruhan imej, kemudian gunakan fungsi imagettftext pada kedudukan yang ditentukan untuk melukis rentetan kod pengesahan pada imej. Akhir sekali, imej yang dihasilkan dikeluarkan melalui fungsi imagepng. imagecreatetruecolor函数创建一个指定宽度和高度的图片资源,然后使用imagecolorallocate函数生成背景颜色并填充整个图片,接着在指定位置使用imagettftext函数将验证码字符串绘制到图片上。最后,将生成的图片通过imagepng函数输出。

  1. 验证图片验证码

验证图片验证码需要与用户输入的验证码进行比较。以下是一个验证图片验证码的示例代码:

<?php
session_start();

// 获取用户输入的验证码字符串
$user_input = $_POST['captcha'];

// 获取保存在session中的验证码字符串
$server_code = $_SESSION['captcha'];

// 验证用户输入的验证码与保存的验证码是否一致
if (strcasecmp($user_input, $server_code) === 0) {
    // 验证码正确,执行相应的操作
    // ...
    echo "验证码正确";
} else {
    // 验证码错误,提示用户重新输入
    echo "验证码错误";
}
?>

上述代码中,首先使用session_start函数开启session,然后通过$_POST超全局数组获取用户输入的验证码字符串,再使用$_SESSION超全局数组获取保存在session中的验证码字符串。最后,通过strcasecmp函数比较两个字符串是否相等,如果相等则表示验证码正确,执行相应的操作,如果不相等则表示验证码错误,提示用户重新输入。

通过以上两段代码,我们可以实现图片验证码的生成和验证。可以将生成图片验证码的代码保存为一个独立的文件,例如captcha.php

    Kod pengesahan imej pengesahan

    🎜Kod pengesahan imej pengesahan perlu dibandingkan dengan kod pengesahan yang dimasukkan oleh pengguna. Berikut ialah contoh kod untuk mengesahkan kod pengesahan imej: 🎜rrreee🎜Dalam kod di atas, mula-mula gunakan fungsi session_start untuk membuka sesi, dan kemudian dapatkan input pengguna melalui $ _POST tatasusunan super global Rentetan kod pengesahan, dan kemudian gunakan tatasusunan super global $_SESSION untuk mendapatkan rentetan kod pengesahan yang disimpan dalam sesi. Akhir sekali, fungsi strcasecmp digunakan untuk membandingkan sama ada dua rentetan adalah sama, ini bermakna kod pengesahan adalah betul dan operasi yang sepadan akan dilakukan. ini bermakna kod pengesahan adalah salah dan pengguna akan digesa untuk memasukkan semula. 🎜🎜Dengan dua keping kod di atas, kami boleh menjana dan mengesahkan kod pengesahan imej. Anda boleh menyimpan kod untuk menjana kod pengesahan imej sebagai fail berasingan, seperti captcha.php Apabila anda perlu menjana kod pengesahan, anda boleh mengakses fail secara terus. Kod untuk mengesahkan kod pengesahan imej boleh diletakkan pada halaman pemprosesan penyerahan borang tertentu. 🎜🎜Saya harap kod sampel dalam artikel ini dapat membantu anda menjana dan mengesahkan kod pengesahan imej. Sudah tentu, dalam aplikasi sebenar, anda juga mungkin perlu menambah beberapa langkah keselamatan, seperti menambah talian gangguan, menyulitkan kod pengesahan, dsb. 🎜

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