编程学习网 > PHP技术 > php中级 > php随机生成验证图片
2020
04-13

php随机生成验证图片

为了防止用户利用机器人自动注册、登录、灌水,现在的网站一般都采用了验证码技术,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。

v2-0cc90bc8f7e337a928afba00012f2e5e_720w.png


php代码如下:

文件名: idcode.php

<?php

session_start();//开启会话

$img = imagecreatetruecolor(60, 30);//创建真彩图像资源,大小60*30

$black = imagecolorallocate($img, 0x00, 0x00, 0x00);//分配一个黑色

$green = imagecolorallocate($img, 0x00, 0xFF, 0x00);//分配一个绿色

$white = imagecolorallocate($img, 0xFF, 0xFF, 0xFF);//分配一个白色

imagefill($img,0,0,$white);// 从左上角开始填充白色,即背景颜色为白色

//生成随机的验证码

$code = '';

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

    $code .= rand(0, 9);

}

$_SESSION['vCode']=$code;//加入会话变量中

imagestring($img, 5, 8, 8, $code, $black);//imagestring ($image , $font , $x , $y ,$s ,$col )

//加入噪点干扰,阻止机器识别

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

    imagesetpixel($img, rand(0, 60) , rand(0, 30) , $black);//在图片上绘出一点。参数 x、y 为欲绘点的坐标,参数 col 表示该点的颜色

    imagesetpixel($img, rand(0, 60) , rand(0, 30) , $green);//绘制绿色的点

}

//输出验证码

header("content-type: image/png");//说明欲输出的图片类型格式

imagepng($img);//函数用来建立一张 PNG 格式图形

imagedestroy($img);//销毁图像,释放与 $img 关联的内存


引入HTML中:

<img src="php/idcode.php" alt="">


最后效果如下:

v2-abf49d984a0e7b2543d44448fac12bab_720w.jpg

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取