php验证码功能怎么实现
时间: 2023-09-04 13:16:29 浏览: 49
验证码可以用 PHP GD 库来生成图像,然后把图像输出到浏览器上。以下是一个简单的 PHP 验证码实现:
```php
<?php
// 开始会话
session_start();
// 验证码中使用的字符集
$charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
// 创建一个随机字符串
$code = '';
for ($i = 0; $i < 4; $i++) {
$code .= $charset[mt_rand(0, strlen($charset) - 1)];
}
// 将随机字符串存储到会话中
$_SESSION['code'] = $code;
// 创建一个 100x30 像素的图像
$image = imagecreatetruecolor(100, 30);
// 设置背景色为白色
$bg_color = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bg_color);
// 生成干扰线
for ($i = 0; $i < 5; $i++) {
$line_color = imagecolorallocate($image, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
imageline($image, mt_rand(0, 100), mt_rand(0, 30), mt_rand(0, 100), mt_rand(0, 30), $line_color);
}
// 生成干扰点
for ($i = 0; $i < 50; $i++) {
$pixel_color = imagecolorallocate($image, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
imagesetpixel($image, mt_rand(0, 100), mt_rand(0, 30), $pixel_color);
}
// 将随机字符串写入图像
$text_color = imagecolorallocate($image, 0, 0, 0);
imagestring($image, 5, 20, 8, $code, $text_color);
// 发送图像到浏览器
header('Content-type: image/png');
imagepng($image);
// 销毁图像
imagedestroy($image);
?>
```
在 HTML 表单中使用验证码时,需要将用户输入的验证码和会话中存储的验证码进行比较,以验证用户输入的是否正确。比较的代码如下:
```php
<?php
// 开始会话
session_start();
if ($_POST['code'] == $_SESSION['code']) {
// 验证码输入正确
} else {
// 验证码输入错误
}
?>
```