PHP语法如何生成验证码?

2024年09月09日 建站教程

验证码(CAPTCHA)是“完全自动公开区分计算机和人类的图灵测试”的缩写。它是一种常见的在线验证机制,用于确保用户是真实的人而不是机器人。

验证码通常由图像或声音组成,并要求用户输入正确答案以证明自己是真实用户。那么PHP语法如何生成验证码?​下面web建站小编给大家简单介绍一下具体实现语法!

php生成验证码代码​

<?php
session_start();
header("Content-type: image/png");
 
$width = 100;
$height = 40;
$length = 4;
 
// 生成验证码字符串
$chars = "0123456789";
$str = "";
for ($i = 0; $i < $length; $i++) {
  $str .= substr($chars, mt_rand(0, strlen($chars)-1), 1);
}
 
// 保存验证码到Session
$_SESSION["captcha"] = $str;
 
// 创建图像对象并绘制背景
$im = imagecreatetruecolor($width, $height);
$bgColor = imagecolorallocate($im, 242, 242, 242);
imagefill($im, 0, 0, $bgColor);
 
// 添加干扰线
$lineColor = imagecolorallocate($im, 200, 200, 200);
for ($i = 0; $i < 6; $i++) {
  imageline($im, 0, mt_rand(0, $height), $width, mt_rand(0, $height), $lineColor);
}
 
// 添加噪点
$pixelColor = imagecolorallocate($im, 0, 0, 0);
for ($i = 0; $i < 50; $i++) {
  imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $pixelColor);
}
 
// 绘制验证码字符串
$font = 5;
$fontColor = imagecolorallocate($im, 0, 0, 0);
$fontWidth = imagefontwidth($font);
$fontHeight = imagefontheight($font);
$x = ($width - $fontWidth * $length) / 2;
$y = ($height - $fontHeight) / 2;
for ($i = 0; $i < $length; $i++) {
  $char = substr($str, $i, 1);
  imagechar($im, $font, $x + $fontWidth * $i, $y, $char, $fontColor);
}
 
// 输出图像
imagepng($im);
imagedestroy($im);
?>

本文链接:http://so.lmcjl.com/news/12596/

展开阅读全文