PHP 非常複雜(zá)的數字驗證碼

發布時間:2011年11月01日      浏覽次數:811 次
<?php
Header("Content-type: image/PNG");
$imgWidth = 60; //驗證碼的寬度
$imgHeight = 22; //驗證碼的高度
$img = imagecreate($imgWidth,$imgHeight);//設置圖片的寬與高
$bgColor = ImageColorAllocate($img,255,255,255); //背景色
$white = imagecolorallocate($img,255,255,255); //白(bái)色
$orange = imagecolorallocate($img,234,185,95);
$red = imagecolorallocate($img,200,0,0); //紅色
$blue = imagecolorallocate($img,0,0,150);//藍(lán)色
$black = imagecolorallocate($img,0,0,0);//黑色

imagearc($img, 10, 8, 40, 20, 15, 10, $black);
imagearc($img, 10, 7, 80, 30, 35, 5, $black);
imageline($img, 0, 10, 100, 10, $blue); //藍(lán)線:左、上、右、下(xià)
imageline($img, 0, 0, 100, 40, $red); //紅線:左、上、右、下(xià)
imageline($img, 0, 20, 100, -20, $orange); //黃線:左、上、右、下(xià)
$noise_num = 200; //雜(zá)點密度
$line_num = 5; //線的數量
imagecolorallocate($img,0xff,0xff,0xff);

$noise_color=imagecolorallocate($img,0x00,0x00,0x00);//點顔色
$font_color=imagecolorallocate($img,0x00,0x00,0x00); //字顔色
$line_color=imagecolorallocate($img,0x00,0x00,0x00); //線顔色

//加入幹擾點
for($i=0;$i<$noise_num;$i++){
      imagesetpixel($img,mt_rand(0,$imgWidth),mt_rand(0,$imgHeight),$noise_color);
}
//加入幹擾線
for($i=0;$i<$line_num;$i++){
      imageline($img,mt_rand(0,$imgWidth),mt_rand(0,$imgHeight),mt_rand(0,$imgWidth),mt_rand(0,$imgHeight),$line_color);
}

//使用數字
$fontfile = "arialbd.ttf"; //如果使用中(zhōng)文驗證碼,則必須使用包含中(zhōng)文的字體(tǐ)文件
$fontsiz = 16; //如果使用中(zhōng)文驗證碼,則必須使用包含中(zhōng)文的字體(tǐ)文件
$str = Rnd_num(4); //如果使用中(zhōng)文,則注釋本行,

ImageTTFText($img, $fontsiz, -50, 3, 10, $font_color, $fontfile, $str[0]);
ImageTTFText($img, $fontsiz, -30, 17, 15, $font_color, $fontfile, $str[1]);
ImageTTFText($img, $fontsiz, 10, 35, 18, $font_color, $fontfile, $str[2]);
ImageTTFText($img, $fontsiz, -20, 44, 16, $font_color, $fontfile, $str[3]);

//      ImageTTFText($img, 14, 0, 5, 20, $font_color, $fontfile, $str);//對象,字體(tǐ)大(dà)小(xiǎo),角度(0 度爲從左向右讀的文本),左邊距,上邊距,顔色,字體(tǐ),字符串

//輸出圖片
ImagePNG($img);
ImageDestroy($img);

///////////////////////////////////////////////////////////////////////////////
//【函數】随機生(shēng)成數字
function Rnd_num($length){
      $output='';
      for ($a = 0; $a < $length; $a++) {
            $output .= chr(mt_rand(48, 57));//随機生(shēng)成0-9的數字
      }
      return $output;
}

?>
免責聲明:本站相關技術文章信息部分(fēn)來自網絡,目的主要是傳播更多信息,如果您認爲本站的某些信息侵犯了您的版權,請與我(wǒ)(wǒ)們聯系,我(wǒ)(wǒ)們會即時妥善的處理,謝謝合作!