2024-08-25 08:25:33 | 我爱编程网
PHP生成验证码的原理:使用PHP的GD库,生成一张带验证码的图片,并将验证码保存在Session中。PHP生成验证码的大致流程有:
1、产生一张png的图片;
2、为图片设置背景色;
3、设置字体颜色和样式;
4、产生4位数的随机的验证码;
5、把产生的每个字符调整旋转角度和位置画到png图片上;
6、加入噪点和干扰线防止注册机器分析原图片来恶意破解验证码;
7、输出图片;
8、释放图片所占内存。 我爱编程网
session_start();
getCode(4,60,20);
function getCode($num,$w,$h) {
$code = "";
for ($i = 0; $i < $num; $i++) {
$code .= rand(0, 9);
}
//4位验证码也可以用rand(1000,9999)直接生成
//将生成的验证码写入session,备验证时用
$_SESSION["helloweba_num"] = $code;
//创建图片,定义颜色值
header("Content-type: image/PNG");
$im = imagecreate($w, $h);
$black = imagecolorallocate($im, 0, 0, 0);
$gray = imagecolorallocate($im, 200, 200, 200);
$bgcolor = imagecolorallocate($im, 255, 255, 255);
//填充背景
imagefill($im, 0, 0, $gray);
//画边框
imagerectangle($im, 0, 0, $w-1, $h-1, $black);
//随机绘制两条虚线,起干扰作用
$style = array ($black,$black,$black,$black,$black,
$gray,$gray,$gray,$gray,$gray
);
imagesetstyle($im, $style);
$y1 = rand(0, $h);
$y2 = rand(0, $h);
$y3 = rand(0, $h);
$y4 = rand(0, $h);
imageline($im, 0, $y1, $w, $y3, IMG_COLOR_STYLED);
imageline($im, 0, $y2, $w, $y4, IMG_COLOR_STYLED);
//在画布上随机生成大量黑点,起干扰作用;
for ($i = 0; $i < 80; $i++) {
imagesetpixel($im, rand(0, $w), rand(0, $h), $black);
}
//将数字随机显示在画布上,字符的水平间距和位置都按一定波动范围随机生成
$strx = rand(3, 8);
for ($i = 0; $i < $num; $i++) {
$strpos = rand(1, 6);
imagestring($im, 5, $strx, $strpos, substr($code, $i, 1), $black);
$strx += rand(8, 12);
}
imagepng($im);//输出图片
imagedestroy($im);//释放图片所占内存
}
我爱编程网(https://www.52biancheng.com)小编还为大家带来如何用php实现验证码的制作的相关内容。
<?php如何用PHP生成验证码PHP生成验证码的原理:使用PHP的GD库,生成一张带验证码的图片,并将验证码保存在Session中。PHP生成验证码的大致流程有:1、产生一张png的图片;2、为图片设置背景色;3、设置字体颜色和样式;4、产生4位数的随机的验证码;5、把产生的每个字符调整旋转角度和位置画到png图片上;6、加入噪点和干扰线防止注册机器分析原图片来
PHP网站短信验证码如何防止被刷1、加验证码;2、加时间限制,间隔一定时间才能有效;3、数据库存储手机发送情况,如手机号,时间,IP;4、根据收集数据,判断是否刷机,禁用IP或者手机号等等,设置禁用时间5、根据实际情况,设置单天同个IP,手机号一天短信数量PHP中短信验证码怎样存到数据库中,并设置失效时间?php做短信验证码,需要将手机号,发送的验证码和时间这几个存到数
php如何实现登陆后返回原页面访问网站页面时,有的页面需要授权才能访问,这时候就会要求用户登录,跳转到登录页面login.php,怎么实现登录后返回到刚才访问的页面项目需求访问网站页面时,有的页面需要授权才能访问,这时候就会要求用户登录,跳转到登录页面login.php,怎么实现登录后返回到刚才访问的页面。解决思路1:在跳转到登录页面之前要将当前访问页面的url保存到c
thinkphp验证码怎么调用一、首先需要在控制器中加入验证码方法admin/Lib/Action/LoginAction.class.php知识点:1、ob_clean函数用途2、import方法调用think默认类库3、Image类buildImageVerify方法使用代码如下:.代码如下:Publicfunctionverify(){ob_clean
php如何实现递归遍历文件目录只需要一个递归函数:function Folders($folder) { if (!is_dir($folder)) return false; foreach (scandir($folder) AS $f) { if ($f == '.' or $f == '..') continue; echo $f, '<hr/>'; Fold
在thinkphp中进行验证时,如何调用common.php中的带参数函数进行验证?默认带的参数就是需要验证的表单名称,所以你上面的写法应该是没问题的但是需要注意的是:checkidcard($sfzh)函数的返回值应改为true或者false,分别表示验证通过或失败function checkidcard($sfzh){ if(!preg_match('// 验证正则
php如何显示当前登录用户的头像用session一般保存用户的id和name,只要写个function用id作为条件去数据库取数据就可以了。比如functiongetUserAvatarByUserId($uid){#链接数据库代码……$ql='vatarfromuserwhereuserid='.$uid;#执行sql代码……急!今天面试PHP遇到个问题是在想不出请
PHP字符串替换问题,把随机的姓名后面的一个汉字换成一个”*”,两个就是”**”,哪位高人指点一下.在线等~写了个函数给你,我测试了的<?phpfunctioncut_str($str,$len){$j=strlen($str)/2-1;$m="";for($i=1;$i<=$j;$i++){$m=$m."*";}$n=0;$tempstr='';
2025-02-01 20:24:39
2024-01-05 14:11:24
2025-02-12 03:21:37
2025-02-10 15:19:48
2025-01-28 17:58:32
2024-11-22 05:08:01