PHP基础-如何实现验证码

本文详细介绍了一个使用PHP生成验证码的完整过程。从初始化session到创建随机字符串,再到利用GD库生成带有背景色、随机噪点及扭曲文字的图片验证码,文章深入浅出地解析了每一步的技术实现细节。
<?php
/**
 * Created by PhpStorm.
 */

session_start();
$chars = '23456789ABCDEFGHJKLMNPRSTWXY';
$string = '';
for($i=0; $i<4; $i++)
{
    $rand1 = rand(0,strlen($chars)-1); // 减1是为了避免出现3位的验证码,例如随机数为最后一个字符
    $string .= substr($chars,$rand1,1);

}
//echo $string."<br>";   在header前不能有任何输出,否则出现错误
$_SESSION['string'] = $string;

$image_width = 120;
$image_height = 30;
$im = imagecreate($image_width,$image_height);
$back_color = imagecolorallocate($im,rand(220,255),rand(220,255),rand(220,255));
imagefilledrectangle($im,0,0,$image_width,$image_height,$back_color);

for($i=0; $i<100; $i++)
{
    $dot_color = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
    $x = rand(0,$image_width);
    $y = rand(0,$image_height);
    imagesetpixel($im,$x,$y,$dot_color);
}

for($i=0; $i<strlen($string); $i++)
{
    $font_color = imagecolorallocate($im,rand(0,120),rand(0,120),rand(0,120));
    imagestring($im,10, rand(20*$i+1,20*$i+10),rand(0,8),substr($string,$i,1),$font_color);
}
header('Content-type:image/x-png');
imagepng($im);
imagedestroy($im);
exit();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虾米大王

有你的支持,我会更有动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值