Heim >Backend-Entwicklung >PHP-Tutorial >Verwenden Sie die GD-Bibliothek, um einen Bestätigungscode in PHP zu erstellen und die Funktion des Bestätigungscodes zu implementieren

Verwenden Sie die GD-Bibliothek, um einen Bestätigungscode in PHP zu erstellen und die Funktion des Bestätigungscodes zu implementieren

墨辰丷
墨辰丷Original
2018-06-04 10:56:371581Durchsuche

In diesem Artikel erfahren Sie, wie Sie die GD-Bibliothek von PHP verwenden, um die Verifizierungscodefunktion zu implementieren.

<?php 
require_once &#39;string.func.php&#39;;
//通过GD库做验证码
/**
 *添加验证文字
 * @param int $type
 * @param int $length
*/
function buildRandomString($type=1,$length=4){
  $row=&#39;&#39;;
  if($type==1){
    $row=join(&#39;&#39;,range(0, 9));
  }else if($type==2){
    $row=join(&#39;&#39;, array_merge(range(&#39;a&#39;,&#39;z&#39;),range(&#39;A&#39;, &#39;Z&#39;)));
  }else if($type==3){
    $row=join(&#39;&#39;, array_merge(range(&#39;a&#39;,&#39;z&#39;),range(&#39;A&#39;, &#39;Z&#39;),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 );
}

Hauptpunkte:

1. Wenn session_start() nicht vorher deklariert wurde;
2. Schriftarten können in den von Ihnen definierten Schriftartenordner heruntergeladen werden Schriftarten in cmf;
3. $_SESSION [$sess_name] kann den vom Benutzer eingegebenen Bestätigungscode zum Vergleich abrufen.

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.

Verwandte Empfehlungen:

phpZeitfunktionsverwendung und Beispielanalyse

PHP-Referenzrückgabe im Detail Erläuterung von Anwendungsbeispielen

phpImplementierung der Methode zum Erhalten von N sich nicht wiederholenden Zufallszahlen innerhalb eines bestimmten Bereichs

Das obige ist der detaillierte Inhalt vonVerwenden Sie die GD-Bibliothek, um einen Bestätigungscode in PHP zu erstellen und die Funktion des Bestätigungscodes zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn