php 数学运算验证码实现代码

下面是“php 数学运算验证码实现代码”的完整攻略。

下面是“php 数学运算验证码实现代码”的完整攻略。

1. 确定验证码生成的规则

在实现数学运算验证码时,需要确定验证码的生成规则。一般情况下,数学运算验证码是由加减乘除四种运算符构成的简单算术题目,例如:6+2=?、4-1=?等等。确定好规则之后,可以使用PHP中的rand()函数生成随机的两个运算数和一个运算符,然后将其赋值给验证码。

2. 编写生成验证码的 PHP 代码

下面是用 PHP 编写生成验证码的代码示例:

<?php
session_start(); // 启用 SESSION 存储验证码信息

// 生成随机数和运算符
$num1 = rand(0, 10);
$num2 = rand(0, 10);
$operator = rand(1, 4); // 1表示加法,2表示减法,3表示乘法,4表示除法

// 计算真实答案
switch($operator) {
    case 1:
        $answer = $num1 + $num2;
        break;
    case 2:
        $answer = $num1 - $num2;
        break;
    case 3:
        $answer = $num1 * $num2;
        break;
    case 4:
        $answer = $num1 / $num2;
        break;
}

// 存储答案到 SESSION 中
$_SESSION['math_captcha'] = $answer;

// 输出验证码图片
header("Content-type: image/png");
$font = realpath('font.ttf'); // 字体文件的绝对路径
$image = imagecreatetruecolor(100, 30); // 创建图片

// 设定背景色和字体颜色
$bg_color = imagecolorallocate($image, 255, 255, 255); // 白色背景
$text_color = imagecolorallocate($image, 0, 0, 0); // 黑色字体

imagefilledrectangle($image, 0, 0, 100, 30, $bg_color); // 设定背景色

// 在图片上写入算法表达式
switch ($operator) {
    case 1:
        $symbol = '+';
        break;
    case 2:
        $symbol = '-';
        break;
    case 3:
        $symbol = '×';
        break;
    case 4:
        $symbol = '÷';
        break;
}
$expression = $num1 . $symbol . $num2 . '=?';
imagettftext($image, 18, 0, 10, 22, $text_color, $font, $expression); // 写入文字

// 输出图片
imagepng($image);

// 清空内存中的图片
imagedestroy($image);

上述代码会生成一个算法表达式的图片,并将答案存储到 PHP 的 SESSION 变量中,以待后续验证。

3. 编写验证用户输入的 PHP 代码

下面是用 PHP 编写验证用户输入的代码示例:

session_start(); // 启用 SESSION 存储验证码信息

// 验证用户输入的答案是否正确
if(isset($_POST['captcha']) && isset($_SESSION['math_captcha'])) {
    $user_input = $_POST['captcha'];
    $real_answer = $_SESSION['math_captcha'];

    if($user_input == $real_answer) {
        // 验证码正确
        echo '验证码正确';
    } else {
        // 验证码错误
        echo '验证码错误';
    }
} else {
    echo '未输入验证码或验证码已过期';
}

该代码会从 PHP 的 SESSION 变量中获取生成的验证码答案,并与用户输入的答案进行比较,判断验证码是否正确。

4. 在 HTML 中使用验证码

最后,我们可以在 HTML 页面中使用 PHP 生成的验证码,例如:

<form action="verify_captcha.php" method="post">
  <label for="captcha">验证码:</label>
  <img src="captcha.php" alt="验证码"><br>
  <input type="text" name="captcha" id="captcha" required><br>
  <input type="submit" value="提交">
</form>

上述 HTML 代码会向 captcha.php 脚本发起请求,获取一个算法表达式的图片作为验证码,并在用户输入框下面显示该图片。

另外,需要注意的是,每次生成验证码时都要更改 SESSION 变量的值,否则用户可能会通过回退页面来绕过验证。

本文标题为:php 数学运算验证码实现代码

基础教程推荐