A-A+

个人常用的一款PHP验证码

2013年10月24日 PHP源码分享 评论 23 条 阅读 1,134 views 次

个人常用的一款PHP验证码,比较好用,使用方法也很简单 <img src="引用这个文件" />,验证码在网页中的应用是很重要的。

这里大概说下制作PHP验证码的原理,验证码通常分为图片和文字验证码,当然图片上也是文字,文字又可以分为多种了,这是在制作验证码时需要考虑的问题,比如生成中文的,字母的,大小写的等等,直接生成文字就是文字验证码了,再把生成的验证码合成图片,就是图片验证码,道理是不是很简单。

对于生成的验证码文字,不能是按照指定的规律来生成了,那么我们利用 PHP 函数来随机生成一个验证码,rand(1-5) 函数,这个函数就是随机生成1-5之间的数字的,也可以利用 random() 函数使随机验证码更复杂一些。

生成好验证码后,将验证码保存到 $_SESSION中,然后将 $_ESSION中的验证码与提交过来的验证码进行对比,如果一样,则通过,否则则不通过。

为了躲避机器人的识别,我们可以将验证码进行模糊,这就需要模糊函数了,最后通过 @header("Content-Type:image/png"); 设置 head 信息,输出图片。

验证码的基本原理就是这样的,当然,这么简单肯定是不行的,这里为了学习,利用上面的原理制作的一款 PHP 验证码如下,里面有注释,可用作学习研究使用。。

<?php
 session_start();
 function random($len)
 {

   $str="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
   $s="";
   for($i=0;$i <$len;$i++){
   $s.=$str&#91;rand(0,35)&#93;;
   }

 return strtoupper($s);
 }
 $code=random(4); //随机生成的字符串
 $width = 50; //验证码图片的宽度
 $height = 20; //验证码图片的高度

 $_SESSION&#91;"code"&#93; = $code;
 $im=imagecreate($width,$height);
 //背景色
 $back=imagecolorallocate($im,255, 255, 255);
 //模糊点颜色
 $pix=imagecolorallocate($im,187,230,247);
 //字体色
 $font=imagecolorallocate($im,41,163,238);
 //绘模糊作用的点
 for($i=0;$i <1000;$i++)
 {
  imagesetpixel($im,rand(0,$width),rand(0,$height),$pix);
 }
 imagestring($im, 5, 7, 2,$code, $font);
 imagerectangle($im,0,0,$width-1,$height-1,$font);
 //设置head信息,输出图片
 @header("Content-Type:image/png");
 imagepng($im);
 imagedestroy($im);
?>
标签:

23 条留言  访客:23 条  博主:0 条

  1. 海棠秋客

    不错,先留着,暂时用不到

  2. 好运品牌鞋

    网站头部有的浏览器打开有代码,有代码可以解决吗?博主?

    • smiling

      嗯,去了你网站几次,都是顶端有错误代码,但是可以评论成功,可以试一下容错语句屏蔽错误。

      • 好运品牌鞋

        还是慢慢学吧,看不大懂。不知怎么加代码。汗死了。

  3. 牛逼思维

    直接前台验证么

    • smiling

      嗯,放在前台进行验证使用的。

  4. 一往情深

    第一次来访,嘿嘿!学习了。

    • smiling

      欢迎来访了。

  5. 罗胜

    给了源码我,还是不会弄。0.0

  6. IT职场博客

    博主 为嘛你的网站打开感觉有点慢哦

    • smiling

      速度还差不多呀,你从哪里打开的。

  7. 李明

    验证码对防止机器人发布垃圾评论起了很大作用,所以一定要学习学习。

  8. 新蜂网

    博主啥时候做几个主题

    • smiling

      wp 刚开始研究没多久,说实话,还真不会做主题。

  9. 社新社

    验证码不能显示的话,就很悲剧了。

  10. 宿迁波仔博客

    这个好,很实用啊

  11. 麦田一根葱

    哈哈马克一个挺实用

  12. PHP二次开发

    这个不错,博主很勤快呢。

  13. 正版软件爱分享

    用验证码不太友好。

  14. 21氪

    现在有那个广告验证码

  15. 海涛

    来看看,好玩不好玩,还是得玩玩。呵呵。。

  16. 锋子

    验证码不好玩啊……

给我留言