程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP 生成英文單詞驗證碼程序代碼

PHP 生成英文單詞驗證碼程序代碼

編輯:關於PHP編程

如果你要生成單詞驗證碼我們必須一個己經做好的單詞庫了,下面我給大家准備了一個txt文件,這裡面放了大量的單詞,我們只要生成時隨便讀到生成就KO了。

具體

 代碼如下 復制代碼

$width=145;
$height = 45;
        
$authcode = vcaptcha_read_code('words.txt') ;
        
$bg = 'bg/captcha_bg3.jpg';
        
$img_type   = 'png';
        
/* 驗證碼長度 */
$letters = strlen($authcode);
        
$img_bg    = (function_exists('imagecreatefromjpeg') && ((imagetypes() & IMG_JPG) > 0)) ?
                imagecreatefromjpeg($bg) : imagecreatefromgif($bg);
$bg_width  = imagesx($img_bg);
$bg_height = imagesy($img_bg);
        
$img_org   = ((function_exists('imagecreatetruecolor')) && PHP_VERSION >= '4.3') ?
              imagecreatetruecolor($width, $height) : imagecreate($width, $height);
        
/* 將背景圖象復制原始圖象並調整大小 */
if (function_exists('imagecopyresampled') && PHP_VERSION >= '4.3') // GD 2.x
{
    imagecopyresampled($img_org, $img_bg, 0, 0, 0, 0, $width, $height, $bg_width, $bg_height);
}
else // GD 1.x
{
    imagecopyresized($img_org, $img_bg, 0, 0, 0, 0, $width, $height, $bg_width, $bg_height);
}
imagedestroy($img_bg);
        
$clr = imagecolorallocate($img_org, 255, 255, 255);
        
/* 繪制邊框 */
imagerectangle($img_org, 0, 0, $width - 1, $height - 1, $clr);
        
/* 獲得驗證碼的高度和寬度 */
$x = ($width - (imagefontwidth(5) * $letters)) / 2;
$y = ($height - imagefontheight(5)) / 2;
imagestring($img_org, 5, $x, $y, $authcode, $clr);
        
header('Expires: Thu, 01 Jan 1970 00:00:00 GMT');
        
// HTTP/1.1
header('Cache-Control: private, no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0, max-age=0', false);
        
// HTTP/1.0
header('Pragma: no-cache');
if ($img_type == 'jpeg' && function_exists('imagecreatefromjpeg'))
{
    header('Content-type: image/jpeg');
    imageinterlace($img_org, 1);
    imagejpeg($img_org, false, 95);
}
else
{
    header('Content-type: image/png');
    imagepng($img_org);
}
        
imagedestroy($img_org);
        
function vcaptcha_read_code($wordlist_file)
{
    $fp = @fopen($wordlist_file, 'rb');
    if (!$fp) return false;
        
    $fsize = filesize($wordlist_file);
    if ($fsize < 32) return false; // too small of a list to be effective
        
    if ($fsize < 128) {
        $max = $fsize; // still pretty small but changes the range of seeking
    } else {
        $max = 128;
    }
        
    fseek($fp, rand(0, $fsize - $max), SEEK_SET);
    $data = fread($fp, 128); // read a random 128 bytes from file
    fclose($fp);
    $data = preg_replace("/r?n/", "n", $data);
        
    $start = strpos($data, "n", rand(0, 100)) + 1; // random start position
    $end   = strpos($data, "n", $start);           // find end of word
        
    return strtolower(substr($data, $start, $end - $start)); // return substring in 128 bytes
}

使用方法:

 代碼如下 復制代碼

<img id="captcha_img" title="PHP腳本生成單詞驗證碼" alt="PHP腳本生成單詞驗證碼"  src="http://www.bKjia.c0m" onClick="clickImg()"/>

將這段代碼復制到HTML裡,就可以了。還有這個的getCode函數是為了讓用戶看不清驗證碼,點擊可以切換,JavaScript腳本如下:

<script type="text/javascript">
function clickImg()
{
  var imgCode ="http://www.bKjia.c0m/ "+Math.random();
  document.getElementById("captcha_img").setAttribute('src',imgCode);
}
</script>

http://file.bKjia.c0m/upload/mbdown/pic/2013/06/26/13659538282901.txt  這是單詞庫大家可下載。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved