PHP.20-驗證碼產生

來源:互聯網
上載者:User

標籤:rectangle   實現   target   font   邊框   定義函數   man   header   背景   

                    產生驗證碼

思路:先定義驗證碼函數getCode()

//繪製驗證碼
  $num = 4;//字元長度
  getCode($num, 2);

  1、建立畫布,分配顏色imagecreatetruecolor()
    $height 
    $width = $num*20;    //假設每個字的大小為18
    $im = imagecreatetruecolor($width, $height);//建立一個真彩色畫布
    $bg = imagecolorallocate($im, rand(200,250), rand(250,255), rand(150, 255));//定義背景顏色映像
    $color[] = imagecolorallocate($im, 240,240,240);//定義字型顏色【可以數組形式儲存,定義某些深色字型】
    

  2、開始繪畫(一切都在畫布$im上進行)
    imagefill($im, 0,0, $bg);  //地區填充(把背景填充到畫布)
    imagerectangle($im, 0,0, $width-1, $height-1, $color[rand(0,3)]);//定義個邊框

    //繪製驗證碼:逐字輸出
    for()
      imagettftext($im, rand(16,18), rand(-40,40), 8+(18*$i),18, $color[rand(0,3)], "msyh.ttc", $str[$i]);
    //隨機添加幹擾點(點數自定)
    for(){
      $c = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255));//幹擾點顏色
      imagesetpixel($im, rand(0,$width), rand(0,$height), $c);
    //隨機添加幹擾線(線數自定)
    for(){
      $c = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255));//幹擾線顏色
      imageline($im, rand(0,$width), rand(0,$height), rand(0,$width), rand(0,$height), $c);

  3、輸出映像
    header("Content-Type:image/png");//設定回應標頭(此前不能有輸出
    imagepng($im);


  4、銷毀圖片
    imagedestroy($im);

//自訂函數,擷取驗證碼
  function getCode($m=4, $type=1)
  {
    $str = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    $t = array(9, 35, strlen($str)-1);//類型劃分
    $c = "";
    for($i=0; $i<$m; $i++)
    $c .= $str[rand(0, $t[$type])];

//調用驗證碼,onclick可實現點擊圖片重新整理

  <img src="code.php" /onclick="this.src=‘code.php?id=‘+Math.random()‘">

PHP.20-驗證碼產生

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.