php专区

 首页 > php专区 > PHP应用 > CMS建站 > PHP混合验证码生成程序代码

PHP混合验证码生成程序代码

分享到:
【字体:
导读:
          验证码通常是用来安全保证我们网站注册或登录不被注入的,但为了更安全我们通常会生成一些混合验证码了,下面一起来看看例子. 在我们开发登录模块或者是论坛的灌水模块的时候,为...

验证码通常是用来安全保证我们网站注册或登录不被注入的,但为了更安全我们通常会生成一些混合验证码了,下面一起来看看例子.

在我们开发登录模块或者是论坛的灌水模块的时候,为了防止恶意提交,需要用到验证码,验证码就是用来区分人和机器的一种手段,当然这种手段不是万无一失,但总归会起到一些作用.

验证码的实现需要GD库的支持,没有开启GD库的童鞋需开启GD库,其实验证码的制作和使用非常的简单,仅仅只是需要4个步骤就可以搞定:创建验证码底图,显示验证码内容,增加干扰元素,输出验证码,下面我们来进行步骤拆分:

第一步:创建验证码底图

  1. $image = imagecreatetruecolor(100, 30); // 创建一个宽为 100 高为 30 的底图  该底图的背景色 为黑色  是系统定义的 
  2. $bgcolor = imagecolorallocate($image, 255, 255, 255);   // 为上面创建的底图分配 白色的背景颜色 
  3. imagefill($image, 0, 0, $bgcolor);  // 填充白色背景色 

第二步:显示验证码内容

  1. // 输出验证码内容 
  2. for ($i=0; $i < 4; $i++) { 
  3.     $fontsize = 6; 
  4.     $fontcolor = imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120)); 
  5.     $data = 'qwertyuipkjhgfdsazxcvbnm23456789'
  6.     $content = substr($data, rand(0, strlen($data)), 1); 
  7.     $x = ($i*100/4) + rand(5,9);   
  8.     $y = rand(5,10); 
  9.     imagestring($image$fontsize$x$y$content$fontcolor);  //在图像上水平输出一行字符串 

第三步:增加干扰元素

  1. // 增加干扰点元素 
  2. for ($i=0; $i < 300; $i++) {  
  3.     $pointcolor = imagecolorallocate($image, rand(50,200), rand(50,200), rand(50,200)); 
  4.     imagesetpixel($image, rand(0,99), rand(0,29), $pointcolor); 
  5. }  //开源软件:phpfensi.com 
  6. // 增加干扰线元素   线 和 点 的颜色一定要控制好  要比验证码数字的颜色浅  避免出现验证码数字看不见的现象 
  7. for ($i=0; $i < 4; $i++) {  
  8.     $linecolor = imagecolorallocate($image, rand(100,240), rand(100,240), rand(100,240)); 
  9.     imageline($image, rand(0,99), rand(0,29), rand(0,99), rand(0,29), $linecolor); 

第四步:输出验证码

  1. // 输出创建的图像   在输出图像之前 必须输出头信息  用来规定输出的图像类型 
  2. header("Content-Type: image/png"); 
  3. imagepng($image); 
  4. // 销毁图像 
  5. imagedestroy($image); 

至此,一个简单的验证码就实现了,关于实现验证码的注意事项已经写在了注释里,使用验证码的时候,我们一般都需要用session来保存以便验证,在这里就不作详细介绍.

分享到:
ecshop递归过滤get,post函数的程序代码
我们只要查看开源的程序几乎都会有下面两段差不多相关的代码,代码的功能就是过滤提交数据中的一些特殊字符了,通常是有post与get了,下面来看看吧. /**   * 递归方式的对变量中的特殊字符进行转义   *   * @access  public   * @param   mix     $value...
PHP下使用富文本过滤器 HTML Purifier 防...
CMS为了文章编辑内容,都会在后台集成在线编辑器,如FCKEditor等,但是这种很容易XSS跨站攻击,以下我们来看一下使用 HTML Purifier 如何防止xss跨站攻击. 随着html可视即可得编辑器的流行,很多网站使用了这样的编辑器,比如FCKEditor、百度UEditor编辑器等等。 跨站脚本攻击(XSS)已经不是什么新鲜的话题了,甚至很多...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……