侧边栏壁纸
博主头像
三生石博主等级

梦想还是有的,就算做咸鱼,也要做最咸的。|

  • 累计撰写 31 篇文章
  • 累计创建 55 个标签
  • 累计收到 7 条评论
PHP

PHP验证码

三生石
2020-10-14 / 0 评论 / 0 点赞 / 18 阅读 / 1,823 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-04-07,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

php实现验证码功能

1一个长方形的底图
2验证码的内容(数字,数字+英文,中文)
3各色的干扰点
4长短颜色不一的干扰线段

验证码图是长方形的100*30的大小

<?php
//创建验证码画布
$img_w = 100;  //验证码的宽度
$img_h = 30;   //验证码的高度
$img = imagecreatetruecolor($img_w, $img_h);         //创建画布
$bg_color = imagecolorallocate($img,0xcc,0xcc,0xcc); //为画布分配颜色
imagefill($img,0,0,$bg_color);

$count = 4; //验证码位数
$charset = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789'; //随机因子
$charset_len = strlen($charset)-1; //计算随机因子长度(作为取出时的索引)
$code = ''; //保存生成的验证码
for($i=0; $i<$count; ++$i) {
    //通过索引取出字符,mt_rand()用于获取指定范围内的随机数
	$code .= $charset[mt_rand(0,$charset_len)];
}

//在画布中绘制验证码文本
$fontSize = 16;    //文字大小
$fontStyle = realpath('./SourceCodePro-Bold.ttf'); //字体样式
//生成指定长度的验证码
for($i=0; $i<$count; ++$i){
    //随机生成字体颜色
    $fontColor = imagecolorallocate($img,mt_rand(0,100),mt_rand(0,50),mt_rand(0,255));
    imagettftext (
	    $img,        //画布资源
         $fontSize,  //文字大小
	    mt_rand(0,20) - mt_rand(0,25),            //随机设置文字倾斜角度
	    $fontSize*$i+20,mt_rand($img_h/2,$img_h), //随机设置文字坐标,并自动计算间距
	    $fontColor,  //文字颜色
	    $fontStyle,  //文字字体
	    $code[$i] 	 //文字内容
	);
}

//为验证码图片生成彩色噪点
for($i=0; $i<300; ++$i){
    //随机生成颜色
    $color = imagecolorallocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
    //随机绘制干扰点
  	imagesetpixel($img,mt_rand(0,$img_w),mt_rand(0,$img_h),$color);
	
}
$color = imagecolorallocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
imagerectangle($img, mt_rand(0,$img_h), mt_rand(0,$img_h), mt_rand(0,$img_h), mt_rand(0,$img_h), $color);
imageellipse($img, mt_rand(0,$img_h), mt_rand(0,$img_h), 20, 20, $color);	
//绘制干扰线
for($i=0; $i<3; ++$i){
    //随机生成干扰线颜色
    $color = imagecolorallocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
    //随机绘制干扰线
	  imageline($img,mt_rand(0,$img_w),0,mt_rand(0,$img_h*5),$img_h,$color);
}
//将生成的文本保存到Session中
session_start();
$_SESSION['captcha'] = $code;
$fontfile =realpath('SourceCodePro-Bold.ttf');
//imagettftext($img, 16, 0, 20, 30, $red, $fontfile, $code);
//imagerectangle($canvas, 50, 50, 150, 150, $pink);	
header('Content-Type: image/gif');
imagegif($img);

​ 源码里没有html代码

0

评论区