扫盲 2026.10.31 18:28 17 次浏览 0 条评论

PHP生成简单图片验证码

验证码就是防机器人乱提交,PHP 用 GD 库画一张图就行,不用装什么框架。

先说前提:php.ini 里把 gd 扩展打开,小皮面板在软件设置里勾一下就完事。输出图片前不能有任何 echo 或空格,不然图片会花掉。验证码存 session,用户提交后比对,比完记得销毁。

<?php
session_start();
$chars = 'ABCDEFGHJKLMNPQRSTUVWXY3456789'; // 去掉易混的 I O 0 1 2
$code = '';
for ($i = 0; $i < 4; $i++) $code .= $chars[mt_rand(0, 29)];
$_SESSION['code'] = $code;   // 存起来,后面比对用

$img = imagecreatetruecolor(100, 40);
imagefill($img, 0, 0, imagecolorallocate($img, 240, 240, 240));

for ($i = 0; $i < 4; $i++) {   // 一个字一个字画,Y 轴随机抖动
    $c = imagecolorallocate($img, mt_rand(0, 90), mt_rand(0, 90), mt_rand(0, 90));
    imagestring($img, 5, 12 + $i * 20, mt_rand(6, 16), $code[$i], $c);
}

header('Content-Type: image/png');
imagepng($img);
imagedestroy($img);

页面上直接 <img src="code.php"> 就能显示。点一下换一张,给 src 加个随机参数绕开缓存。

想看效果注意别刷新太快,session 里的值会被覆盖成新的。

说点什么 0

行思随记

欢迎来到:行思随记