没有外部 API 调用的验证码

Captcha without external API call

我目前正在与一些朋友一起参与一个非常古老的项目,该项目已经几个月无法使用了。我将它托管在我的提供商的免费托管服务上,因为没有人愿意为域和托管付费。

问题就在这里:我有一个联系表,我想用 Google 的 reCaptcha 来保护它。我知道如何让它发挥作用,我以前做过。不幸的是,我的提供商禁止调用任何外部资源...

此外,我无法访问服务器,因此我无法添加任何库或编辑设置(这太容易了......)。 PHP 主机上的版本是 5.1.3(请不要大喊大叫,我知道...)。

那么问题来了:有没有不依赖外部资源,不需要安装库的验证码方案?

谢谢!

您可以使用simple-php-captcha

它允许使用自定义图案和字体,使用起来非常简单:

可以找到Demo和用法here。这是直接来自上述 link:

的摘要
<?php
session_start();
include("simple-php-captcha.php");
$_SESSION['captcha'] = simple_php_captcha();
?>

显示 CAPTCHA 图像,使用 $_SESSION['captcha']['image_src'] 作为 src 属性创建一个 HTML <img>

在下一页加载时(或在 AJAX 请求中)验证 CAPTCHA 值,请针对 $_SESSION['captcha']['code'] 进行测试。您可以使用 strtolower()strtoupper() 来执行不区分大小写的匹配。

配置:

$_SESSION['captcha'] = simple_php_captcha( array(
    'min_length' => 5,
    'max_length' => 5,
    'backgrounds' => array(image.png', ...),
    'fonts' => array('font.ttf', ...),
    'characters' => 'ABCDEFGHJKLMNPRSTUVWXYZabcdefghjkmnprstuvwxyz23456789',
    'min_font_size' => 28,
    'max_font_size' => 28,
    'color' => '#666',
    'angle_min' => 0,
    'angle_max' => 10,
    'shadow' => true,
    'shadow_color' => '#fff',
    'shadow_offset_x' => -1,
    'shadow_offset_y' => 1
));