php中使用GD庫做驗證碼實現驗證碼功能

來源:互聯網
上載者:User
本文給大家分享的是使用php的GD庫來實現驗證碼功能的方法和全部代碼,有需要的小夥伴可以參考下

<?php require_once 'string.func.php';//通過GD庫做驗證碼/** *添加驗證文字 * @param int $type * @param int $length*/function buildRandomString($type=1,$length=4){  $row='';  if($type==1){    $row=join('',range(0, 9));  }else if($type==2){    $row=join('', array_merge(range('a','z'),range('A', 'Z')));  }else if($type==3){    $row=join('', array_merge(range('a','z'),range('A', 'Z'),range(0, 9)));  };  $row=str_shuffle($row);    $row=substr($row,0,$length);  return $row;}/** * 產生縮圖 * @param int $type //包含數字或者英文 * @param int $length 多少個字元 * @param int $pixel 幹擾小點的密度 * @param int $dst_h 幹擾線的密度 * @param string //驗證碼在$_SESSION中的名字 */function verifyImage($type=1,$length=4,$pixel=0,$line=0,$sess_name = "verify"){  //session_start();  //建立畫布  $width = 100;  $height = 40;  $image = imagecreatetruecolor ( $width, $height );  $white = imagecolorallocate ( $image, 255, 255, 255 );  $black = imagecolorallocate ( $image, 0, 0, 0 );  //用填充矩形填充畫布  imagefilledrectangle ( $image, 1, 1, $width - 2, $height - 2, $white );  $chars = buildRandomString ( $type, $length );  $_SESSION [$sess_name] = $chars;  //$fontfiles = array ("MSYH.TTF", "MSYHBD.TTF", "SIMLI.TTF", "SIMSUN.TTC", "SIMYOU.TTF", "STZHONGS.TTF" );  $fontfiles = array ("SIMKAI.TTF" );  //由於字型檔比較大,就只保留一個字型,如果有需要的同學可以自己添加字型,字型在你的電腦中的fonts檔案夾裡有,直接運行輸入fonts就能看到相應字型  for($i = 0; $i < $length; $i ++) {    $size = mt_rand ( 14, 18 );    $angle = mt_rand ( - 15, 15 );    $x = 5 + $i * $size;    $y = mt_rand ( 20, 26 );    $fontfile = "../fonts/" . $fontfiles [mt_rand ( 0, count ( $fontfiles ) - 1 )];    $color = imagecolorallocate ( $image, mt_rand ( 50, 90 ), mt_rand ( 80, 200 ), mt_rand ( 90, 180 ) );    $text = substr ( $chars, $i, 1 );    imagettftext ( $image, $size, $angle, $x, $y, $color, $fontfile, $text );  }  if ($pixel) {    for($i = 0; $i < 50; $i ++) {      imagesetpixel ( $image, mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), $black );    }  }  if ($line) {    for($i = 1; $i < $line; $i ++) {      $color = imagecolorallocate ( $image, mt_rand ( 50, 90 ), mt_rand ( 80, 200 ), mt_rand ( 90, 180 ) );      imageline ( $image, mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), $color );    }  }  header ( "content-type:image/gif" );  imagegif ( $image );  imagedestroy ( $image );}

主要要點:

1、如果前面沒有申明session_start();則需要申明;
2、字型可以在cmf輸入fonts下載到自己定義的fonts檔案夾;
3、$_SESSION [$sess_name]可以通過$_POST獲得使用者輸入的驗證碼進行比較。

總結:以上就是本篇文的全部內容,希望能對大家的學習有所協助。

聯繫我們

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