php仿QQ驗證碼的實例分析_PHP教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:Extjs4 Treegrid 使用心得分享(經驗篇)
      最近調試EXTJS 4的treegrid實例,看了很多水友的文章,以及官方的demo, 沒一個可靠的,全都無法顯示出來。像對于我們習慣用C++的coder來說,EXTJS簡直就是一群無政府土匪來維護的,官網上連個搜索框都沒有,找資料基本靠遍歷,還是人工的。 使用treegrid,需要在調用

      本文介紹一個php實現的仿QQ中驗證碼的例子,QQ注冊或登錄時的驗證碼,大家都見過吧,本文給出的代碼,也可以實現那樣的驗證碼哦   有需要的朋友,參考下吧。
      復制代碼 代碼如下:
      <?php
      /**
      * 仿QQ驗證碼
      */
      //Session保存路徑
      $sessSavePath = dirname(__FILE__)."/../data/sessions/";
      if(is_writeable($sessSavePath) && is_readable($sessSavePath)){ session_save_path($sessSavePath); }
      session_start();
      //獲取隨機字符
      $rndstring = '';
      for($i=0; $i<4; $i++) $rndstring .= chr(mt_rand(65,90));
      $img_height=45; //先定義圖片的長、寬
      $img_width=10;
      //如果支持GD,則繪圖
      if(function_exists("imagecreate"))
      {
      //Firefox部份情況會多次請求的問題,5秒內刷新頁面將不改變session
      $ntime = time();
      if(empty($_SESSION['dd_ckstr_last']) || empty($_SESSION['dd_ckstr']) || ($ntime - $_SESSION['dd_ckstr_last'] > 5))
      {
      $_SESSION['dd_ckstr'] = strtolower($rndstring);
      $_SESSION['dd_ckstr_last'] = $ntime;
      }
      $rndstring = $_SESSION['dd_ckstr'];
      $rndcodelen = strlen($rndstring);
      //創建圖片,并設置背景色
      $im = imagecreate(46,20);
      ImageColorAllocate($im, 240,243,248);
      //干擾線
      $lineColor1 = ImageColorAllocate($im, mt_rand(174,218),mt_rand(190,225),mt_rand(217,237));
      for($j=1;$j<=2;$j=$j+3)
      {
      imageline($im,0,$j+mt_rand(1,15),48,$j+mt_rand(1,15),$lineColor1);
      }
      //輸出文字
      $fontColor = ImageColorAllocate($im, mt_rand(0,150),mt_rand(0,150),mt_rand(0,150));
      for($i=0;$i<$rndcodelen;$i++)
      {
      $bc = mt_rand(0,1);
      $rndstring[$i] = strtoupper($rndstring[$i]);
      imagestring($im,mt_rand(3,5),$i*$img_height/4+mt_rand(1,5),mt_rand(1,$img_width/2), $rndstring[$i], $fontColor);
      }
      header("Pragma:no-cache"r"n");
      header("Cache-Control:no-cache"r"n");
      header("Expires:0"r"n");
      //輸出特定類型的圖片格式,優先級為 gif -> jpg ->png
      if(function_exists("imagepng"))
      {
      header("content-type:image/png"r"n");
      imagepng($im);
      }
      else
      {
      header("content-type:image/jpeg"r"n");
      imagejpeg($im);
      }
      ImageDestroy($im);
      exit();
      }
      else
      {
      //不支持GD,只輸出字母 ABCD
      $_SESSION['dd_ckstr'] = "abcd";
      $_SESSION['dd_ckstr_last'] = '';
      header("content-type:image/png"r"n");
      header("Pragma:no-cache"r"n");
      header("Cache-Control:no-cache"r"n");
      header("Expires:0"r"n");
      $fp = fopen("data/vdcode.jpg","r");
      echo fread($fp,filesize("data/vdcode.jpg"));
      fclose($fp);
      exit();
      }
      ?>
       

      分享:關于php循環跳出的問題
      本篇文章是對php中循環跳出的問題進行了詳細的分析介紹,需要的朋友參考下 復制代碼 代碼如下: //php當前循環為1,循環由里到外依次遞增,break默認為1,例如跳出第2層循環 for ($i=0;$i3;$i++){ foreach (array(1,2,3) as $val){ foreach (array(1,2,3) as $val){ echo

      來源:模板無憂//所屬分類:PHP教程/更新時間:2013-07-02
      相關PHP教程