以下是一个 PHP 验证码程序的示例代码,它结合了常见的防止破解技巧:

<?php
session_start();

// 生成验证码
$code = generateCode();
$_SESSION['code'] = $code;

// 输出图片
header('Content-Type: image/png');
$image = imagecreate(100, 30);
$background = imagecolorallocate($image, 255, 255, 255);
$textColor = imagecolorallocate($image, 0, 0, 0);
imagestring($image, 5, 10, 8, $code, $textColor);
imagepng($image);
imagedestroy($image);

// 生成验证码的函数
function generateCode() {
    $chars = '23456789ABCDEFGHJKLMNPQRSTUVWXYZ'; // 去掉易混淆的字符
    $length = 4; // 验证码长度
    $code = '';
    for ($i = 0; $i < $length; $i++) {
        $code .= $chars[mt_rand(0, strlen($chars) - 1)];
    }
    return $code;
}
?>

该程序的特点如下:

  1. 验证码由随机生成的字母和数字组成,去掉了易混淆的字符(如'0'和'O'、'1'和'I')。

  2. 验证码长度为4位,不易被破解。

  3. 验证码存储在 SESSION 中,而非直接输出到 HTML 中,增加了破解的难度。

  4. 输出的验证码图片使用了白色背景和黑色字体,不易被 OCR 软件识别。

  5. 为了防止自动化攻击,该程序应该加入一些用户交互的机制,例如要求用户点击图片或输入图中的某些字符才能提交表单。


原文地址: https://www.cveoy.top/t/topic/nQKZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录