php驗證碼實現局部重新整理

來源:互聯網
上載者:User

/*
 * Auth_code()是驗證碼函數
 * @access public
 * @param int $width 表示驗證碼的長度,預設為80
 * @param int $height 表示驗證碼的高度,預設為20
 * @param int $num  表示驗證碼中數字位元,預設為4
 * @param int $line  表示驗證碼中線的條數,預設為4
 * @param int $line  表示驗證碼中點的個數,預設為150
 */

 代碼如下 複製代碼

function Auth_code($width = 80,$height = 20,$num = 4,$line = 4,$dot = 150) {

 $length = floor($width/$num);  //floor:取整數部分 length:每段平均長度
 for($i=0;$i<$num;$i++)
  @$rand.=dechex(mt_rand(1,15));
 $_SESSION['code']=$rand;
 
 //建立一個黑色底的畫板
 $im=imagecreatetruecolor($width,$height);
 
 //取色
 $green=imagecolorallocate($im,0,255,0);
 $red = imagecolorallocate($im,255,0,0);
 $white=imagecolorallocate($im,255,255,255);
 $black = imagecolorallocate($im,0,0,0);
 
 //填充畫板
 //imagefill($im,0,0,$green);
   
 //畫線
 for($i=0;$i<$line;$i++){
  $color=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
  imageline($im,rand(10,$width-10),0,rand(0,$width),$height,$color);
 }
 //畫點
 for($i=0;$i<$dot;$i++){
  $color=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
  imagesetpixel($im,rand(0,$width),rand(0,$height),$color);
 }
 //畫數字
 for($i=0;$i<$num;$i++) { 
  imagestring($im,5,mt_rand($i*$length+1,($i+1)*$length-8),mt_rand(0,$height-14),$_SESSION['code'][$i],$white);
 }
 
 //輸出圖片
 header("content-type:image/jpeg");
 imagejpeg($im);
}

 -主要函數:
       imagecreatetruecolor  //建立一個黑色底的畫板
       imagecolorallocate     //取色
       imagefill                     //填充畫板
       imageline                  //畫線
       imagesetpixel           //畫點
       imagestring             //畫字串(本驗證碼為數字)
       注意:在將數字驗證碼畫上畫板時要注意字型越界,所以要相應減去一些範圍,詳見附件。
    -局部重新整理驗證碼:

 代碼如下 複製代碼
       <img src="code.php" onclick="javascript:this.src='code.php?id='+Math.random()">
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.