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 }

使用方法:

代码如下

php脚本生成单词验证码

将这段代码复制到html里,就可以了。还有这个的getcode函数是为了让用户看不清验证码,点击可以切换,javascript脚本如下:

Posted in 未分类

发表评论