php验证码生成图片,php生成图片验证码

php中GD扩展库可以对图像进行处理,php验证码的实现是生成随机码并保存到session,最后生成图片的过程。随机码保存到session后,服务端会把随机码保存到服务器的文件中,并生成一个Cookie,然后下发到客户端保存,并通过Cookie进行和服务端关联,来达到客户端和服务端进行验证的目的。

checkcode.php<?php

//checkcode.php

//开启session

session_start();

//宽

$w = 200;

//高

$h = 40;

//新建一个真彩色图像

$image = imagecreatetruecolor($w, $h);

//设置验证码颜色

$bgcolor = imagecolorallocate($image,255,255,255);

//填充背景色

imagefill($image, 0, 0, $bgcolor);

//10>设置变量

$captcha_code = "";

//随机种子

$char_str = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';

$char_str_len = strlen($char_str)-1;

$checkcode = $code = '';

//生成随机码

for($i=0;$i<4;$i++){

//设置字体大小

$fontsize = 6;

//设置字体颜色,随机颜色

$fontcolor = imagecolorallocate($image, rand(0,120),rand(0,120), rand(0,120));

//设置数字

$code = substr($char_str,rand(0,$char_str_len),1);

//拼接验证码

$checkcode .= $code;

//随机码宽度

$x = ($i*$w/4)+rand(5,10);

//随机码高度

$y = rand(5,$h/2);

imagestring($image,$fontsize,$x,$y,$code,$fontcolor);

}

//保存code到session

$_SESSION['checkcode'] = $checkcode;

//设置雪花点

for($i=0;$i<400;$i++){

//设置点的颜色

$pointcolor = imagecolorallocate($image,rand(50,200), rand(50,200), rand(50,200));

//imagesetpixel画一个单一像素

imagesetpixel($image, rand(0,$w), rand(0,$h), $pointcolor);

}

//增加干扰元素

for($i=0;$i<4;$i++){

//设置线的颜色

$linecolor = imagecolorallocate($image,rand(80,220), rand(80,220),rand(80,220));

//设置线,两点一线

imageline($image,rand(1,$w-1), rand(1,$h-1),rand(1,$w-1), rand(1,$h-1),$linecolor);

}

//设置图片头部

header('Content-Type: image/png');

//生成png图片

imagepng($image);

//销毁$image

imagedestroy($image);

check.htmlhtml>

登陆

        

效果:

e1e67238eb49d8283b2a92d21e04344d.png

服务端验证代码login.php:<?php

session_start();

$checkcode = $_POST["checkcode"];

if(strtolower($_SESSION["checkcode"]) == strtolower($checkcode)){

echo "验证码正确!";

}else{

echo "验证码不正确!";

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值