page contents

php随机生成验证图片

以下内容希望帮助到大家!

attachments-2020-04-GmeMztSC5e93dab62b077.jpg

为了防止用户利用机器人自动注册、登录、灌水,现在的网站一般都采用了验证码技术,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止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


attachments-2020-04-It9eCC5s5e93da868ffec.jpg

  • 发表于 2020-04-13 11:21
  • 阅读 ( 363 )
  • 分类:PHP开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1135 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1316 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章