本文共 1882 字,大约阅读时间需要 6 分钟。
实现的效果
具体实现
captcha.php
/*PHP实现验证码*/
session_start();//开启会话
//创建画布
$image = imagecreatetruecolor(100, 38);
//背景颜色
$bgcolor = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bgcolor);
$captch_code = '';//存储验证码
// //随机选取4个数字
// for ($i = 0; $i < 4; $i++) {
// $fontsize = 10; //
// $fontcolor = imagecolorallocate($image, rand(0, 120), rand(0, 120), rand(0, 120));//随机颜色
// $fontcontent = rand(0, 9);
// $captch_code .= $fontcontent;
// $x = ($i * 100 / 4) + rand(5, 10); //随机坐标
// $y = rand(5, 10);
// imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
// }
//字母和数字混合验证码
for ($i = 0; $i < 4; $i++) {
$fontsize = 10; //
$fontcolor = imagecolorallocate($image, rand(0, 120), rand(0, 120), rand(0, 120));//??????
$data = 'abcdefghijklmnopqrstuvwxyz1234567890'; //数据字典
$fontcontent = substr($data, rand(0, strlen($data)), 1);
$captch_code .= $fontcontent;
$x = ($i * 100 / 4) + rand(5, 10);
$y = rand(5, 10);
imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
}
$_SESSION['captch_code'] = $captch_code;
//增加干扰点
for ($i = 0; $i < 200; $i++) {
$pointcolor = imagecolorallocate($image, rand(50, 200), rand(50, 200), rand(50, 200));
imagesetpixel($image, rand(1, 99), rand(1, 29), $pointcolor);//
}
//增加干扰线
for ($i = 0; $i < 3; $i++) {
$linecolor = imagecolorallocate($image, rand(80, 280), rand(80, 220), rand(80, 220));
imageline($image, rand(1, 99), rand(1, 29), rand(1, 99), rand(1, 29), $linecolor);
}
//输出格式
header('content-type: image/png');
imagepng($image);
//销毁图片
imagedestroy($image);
?>
index.php
session_start();//开启会话
?>
验证码:
login.php
session_start();//开启会话
if(isset($_SESSION['user_code'])){
if($_SESSION['user_code'] && $_SESSION['user_code'] !== $_POST['user_code']){
die('验证码错误');
}
else{
echo '验证码正确';
}
// 验证码重置
$_SESSION['user_code'] = '';
}else{
die('请输入验证码');
}
?>
看法
没想到一个验证码功能这么简单,我以前想的太过复杂了。
0
0
vote
Article Rating
转载地址:http://ildnv.baihongyu.com/