免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3502 | 回复: 5
打印 上一主题 下一主题

如何使用PHP添加GIF动态图片验证码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-01-23 10:21 |只看该作者 |倒序浏览
现在很多网站都有验证功能,我也想弄一个但是代码不会写,有知道的朋友麻烦指点指点

20120525095344462.gif (13.52 KB, 下载次数: 54)

20120525095344462.gif

20120525095344462.gif (13.52 KB, 下载次数: 64)

20120525095344462.gif

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:55:28
2 [报告]
发表于 2013-01-23 10:59 |只看该作者
楼主可以研究下gd函数库,验证码都是用gd动态生成的。

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
3 [报告]
发表于 2013-01-23 12:15 |只看该作者
lz最后别用,小心激怒客户。

论坛徽章:
0
4 [报告]
发表于 2013-01-24 09:41 |只看该作者
 我上次刚好看到一篇关于动态验证码的文章,觉得挺有用的,你可以看看,希望对你有帮助
   转载地址http://www.php0731.cn/index.php?article-show.html&id=1575
/**

  * ImageCode 生成GIF图片验证

  * @param $string 字符串

  * @param $width 宽度

  * @param $height 高度

  * */
  1.  function ImageCode($string = '', $width = 75, $height = 25)

  2.   {

  3.   $authstr = $string ? $string : ((time() % 2 == 0) ? mt_rand(1000, 9999) : mt_rand(10000, 99999));

  4.   $board_width = $width;

  5.   $board_height = $height;

  6.   // 生成一个32帧的GIF动画

  7.   for($i = 0; $i < 32; $i++)

  8.   {

  9.   ob_start();

  10.   $image = imagecreate($board_width, $board_height);

  11.   imagecolorallocate($image, 0,0,0);

  12.   // 设定文字颜色数组

  13.   $colorList[] = ImageColorAllocate($image, 15,73,210);

  14.   $colorList[] = ImageColorAllocate($image, 0,64,0);

  15.   $colorList[] = ImageColorAllocate($image, 0,0,64);

  16.   $colorList[] = ImageColorAllocate($image, 0,128,128);

  17.   $colorList[] = ImageColorAllocate($image, 27,52,47);

  18.   $colorList[] = ImageColorAllocate($image, 51,0,102);

  19.   $colorList[] = ImageColorAllocate($image, 0,0,145);

  20.   $colorList[] = ImageColorAllocate($image, 0,0,113);

  21.   $colorList[] = ImageColorAllocate($image, 0,51,51);

  22.   $colorList[] = ImageColorAllocate($image, 158,180,35);

  23.   $colorList[] = ImageColorAllocate($image, 59,59,59);

  24.   $colorList[] = ImageColorAllocate($image, 0,0,0);

  25.   $colorList[] = ImageColorAllocate($image, 1,128,180);

  26.   $colorList[] = ImageColorAllocate($image, 0,153,51);

  27.   $colorList[] = ImageColorAllocate($image, 60,131,1);

  28.   $colorList[] = ImageColorAllocate($image, 0,0,0);

  29.   $fontcolor = ImageColorAllocate($image, 0,0,0);

  30.   $gray = ImageColorAllocate($image, 245,245,245);

  31.   $color = imagecolorallocate($image, 255,255,255);

  32.   $color2 = imagecolorallocate($image, 255,0,0);

  33.   imagefill($image, 0, 0, $gray);

  34.   $space = 15; // 字符间距

  35.   if($i > 0) // 屏蔽第一帧

  36.   {

  37.   for ($k = 0; $k < strlen($authstr); $k++)

  38.   {

  39.   $colorRandom = mt_rand(0,sizeof($colorList)-1);

  40.   $float_top = rand(0,4);

  41.   $float_left = rand(0,3);

  42.   imagestring($image, 6, $space * $k, $top + $float_top, substr($authstr, $k, 1), $colorList[$colorRandom]);

  43.   }

  44.   }

  45.   for ($k = 0; $k < 20; $k++)

  46.   {

  47.   $colorRandom = mt_rand(0,sizeof($colorList)-1);

  48.   imagesetpixel($image, rand()%70 , rand()%15 , $colorList[$colorRandom]);

  49.   }

  50.   // 添加干扰线

  51.   for($k = 0; $k < 3; $k++)

  52.   {

  53.   $colorRandom = mt_rand(0, sizeof($colorList)-1);

  54.   // $todrawline = rand(0,1);

  55.   $todrawline = 1;

  56.   if($todrawline)

  57.   {

  58.   imageline($image, mt_rand(0, $board_width), mt_rand(0,$board_height), mt_rand(0,$board_width), mt_rand(0,$board_height), $colorList[$colorRandom]);

  59.   }

  60.   else

  61.   {

  62.   $w = mt_rand(0,$board_width);

  63.   $h = mt_rand(0,$board_width);

  64.   imagearc($image, $board_width - floor($w / 2) , floor($h / 2), $w, $h, rand(90,180), rand(180,270), $colorList[$colorRandom]);

  65.   }

  66.   }

  67.   imagegif($image);

  68.   imagedestroy($image);

  69.   $imagedata[] = ob_get_contents();

  70.   ob_clean();

  71.   ++$i;

  72.   }

  73.   $gif = new GIFEncoder($imagedata);

  74.   Header ('Content-type:image/gif');

  75.   echo $gif->GetAnimation();

  76.   }
复制代码
有关GIFEncoder类,可在网络中得到下载

论坛徽章:
0
5 [报告]
发表于 2013-02-01 13:19 |只看该作者
使用ImageMagick 效率更高

论坛徽章:
0
6 [报告]
发表于 2013-02-01 15:40 |只看该作者
我靠,这么跳动,很难辨认。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP