当前位置:首页 > PHP

php验证码实现

2026-02-27 11:18:27PHP

验证码生成与验证的实现

在PHP中实现验证码功能通常包括生成验证码图片和验证用户输入两部分。以下是完整的实现方法:

生成验证码图片

创建名为captcha.php的文件,用于生成验证码图像:

php验证码实现

<?php
session_start();
$width = 120;
$height = 40;
$image = imagecreatetruecolor($width, $height);
$bgColor = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bgColor);

// 生成随机验证码
$chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789';
$length = 4;
$captcha = '';
for ($i = 0; $i < $length; $i++) {
    $captcha .= $chars[rand(0, strlen($chars) - 1)];
}
$_SESSION['captcha'] = $captcha;

// 添加干扰元素
for ($i = 0; $i < 5; $i++) {
    $color = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255));
    imageline($image, rand(0, $width), rand(0, $height), rand(0, $width), rand(0, $height), $color);
}

// 绘制验证码文字
for ($i = 0; $i < $length; $i++) {
    $color = imagecolorallocate($image, rand(0, 100), rand(0, 100), rand(0, 100));
    $fontSize = rand(16, 24);
    $x = ($width / $length) * $i + rand(5, 10);
    $y = rand($fontSize, $height - 5);
    imagettftext($image, $fontSize, rand(-15, 15), $x, $y, $color, 'arial.ttf', $captcha[$i]);
}

header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>

在HTML中显示验证码

在表单页面中插入验证码图片:

php验证码实现

<form action="submit.php" method="post">
    <img src="captcha.php" alt="CAPTCHA" onclick="this.src='captcha.php?'+Math.random()">
    <input type="text" name="captcha" required>
    <button type="submit">提交</button>
</form>

验证用户输入

创建submit.php文件处理表单验证:

<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $userCaptcha = strtoupper(trim($_POST['captcha']));
    $sessionCaptcha = $_SESSION['captcha'];

    if ($userCaptcha === $sessionCaptcha) {
        echo "验证码正确";
    } else {
        echo "验证码错误";
    }

    unset($_SESSION['captcha']); // 验证后清除
}
?>

安全性增强措施

使用更复杂的验证码字符集,避免使用易混淆的字符如0和O。增加验证码过期时间限制:

$_SESSION['captcha_time'] = time();
// 验证时检查是否超过5分钟
if (time() - $_SESSION['captcha_time'] > 300) {
    echo "验证码已过期";
}

对于生产环境,考虑使用Google reCAPTCHA等第三方服务提供更强大的验证码保护。

标签: 验证码php
分享给朋友:

相关文章

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…

php 实现单链表

php 实现单链表

单链表的基本概念 单链表是一种线性数据结构,由节点组成,每个节点包含数据域和指向下一个节点的指针域。链表的头节点是访问整个链表的入口。 单链表的节点类实现 在PHP中,可以通过类来定义链表节点。每个…

php 队列的实现

php 队列的实现

PHP 队列的实现方法 使用数据库实现队列 创建一个数据表存储队列任务,包含任务ID、状态、创建时间等字段。通过SQL语句实现任务的入队和出队操作。 // 入队操作 INSERT INTO queu…

php实现mvc

php实现mvc

PHP 实现 MVC 架构 MVC(Model-View-Controller)是一种常用的软件设计模式,将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller…

php实现过程

php实现过程

PHP 实现过程 PHP 是一种广泛使用的服务器端脚本语言,特别适合 Web 开发。以下是 PHP 实现过程的关键步骤和注意事项。 安装与配置 下载并安装 PHP,可以从官方 PHP 网站获取最新版…

php 链表实现

php 链表实现

在 PHP 中实现链表可以通过类来模拟链表节点(Node)和链表(LinkedList)结构。以下是链表的完整实现示例,包含基础操作如插入、删除、遍历等。 链表节点类(Node) 链表的基本单元是节…