您的位置:首页 > 编程语言 > PHP开发

用PHP编写CAPTCHA(验证码)

2015-02-07 17:10 309 查看
CAPTCHA,是Completely Automated Public Turing Test to Tell Computers and Humans Apart (完全自动化公共图灵测试以区分计算机和人类)的简称。现在已经设计出丰富的CAPTCHA,不过最简单有效的方法是生成一个要求用户输入的随机字符,即我们所说的验证码。

<?php

define ('CAPTCHA_NUMCHARS', 6);
define('CAPTCHA_WIDTH', 100);
define('CAPTCHA_HEIGHT', 25);

//产生随机字符
$pass_phrase = "";
for ($i = 0; $i < CAPTCHA_NUMCHARS; $i++) {
$pass_phrase .= chr(rand(97, 122));
}

//生成图片
$img = imagecreatetruecolor(CAPTCHA_WIDTH, CAPTCHA_HEIGHT);

//设置背景、条纹、字体颜色
$bg_color = imagecolorallocate($img, 255, 255, 255);
$text_color = imagecolorallocate($img, 0, 0, 0);
$graphic_color = imagecolorallocate($img, 64, 64, 64);

// 填充背景
imagefilledrectangle($img, 0, 0, CAPTCHA_WIDTH, CAPTCHA_HEIGHT, $bg_color);

// 生产随机的条纹
for ($i = 0; $i < 5; $i++){
imageline ($img, 0, rand() % CAPTCHA_HEIGHT, CAPTCHA_WIDTH, rand() % CAPTCHA_HEIGHT, $graphic_color);
}

// 生成随机的点
for ($i=0; $i < 50; $i++) {
imagesetpixel($img, rand() % CAPTCHA_WIDTH, rand() % CAPTCHA_HEIGHT, $graphic_color);
}

// 生产随机字符
imagettftext($img, 18, 0, 5, CAPTCHA_HEIGHT - 5, $text_color, 'Courier New Bold.ttf', $pass_phrase);

// 以PNG的格式输出图像
header ("Content-type: image/png");
imagepng($img);

imagedestroy($img);
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: