[php验证码]

1.

<?php
//return a string of random text of a desired length
//返回一个指定长度的随机字符串
//$count 字符串长度
//是否去除相似的字符

function random_text($count, $rm_similar = false){
//create list of characters
//创建字符串列表

$chars = array_flip(array_merge(range(0, 9), range('A', 'Z')));
//remove similar looking characters that might cause confusion
//去除看起来相似的字符

if($rm_similar){
unset($chars[0], $chars[1], $chars[2], $chars[5], $chars[8], $chars['B'], $chars['I'], $chars['0'], $chars['Q'], $chars['S'], $chars['U'], $chars['V'], $chars['Z']);
}
//generate the string of random text
//随机产生随机字符串

for($i = 0, $text = ''; $i<$count; $i++)
$text .=array_rand($chars);
return $text;
}

if(!isset($_SESSION)){
session_start();
header('Cache-control: private');
}
//create a 65x20 pixel image
//创建一个65X20 像素的图像

$width = 65;
$height = 20;
$image = imagecreate(65, 20);

//fill the image background color
//填充图像背景颜色

$bg_color = imagecolorallocate($image, 0x33, 0x66, 0xff);
imagefilledrectangle(
$image, 0, 0, $width, $height, $bg_color);
//fetch random text
//获得随机字符串

$text = random_text(5);

//determin x and y coordinates for centering text
//确定xy坐标,使验证码剧中显示

$font = 5;
$x = imagesx($image)/2 - strlen($text)*imagefontwidth($font)/2;
$y = imagesy($image)/2 - imagefontheight($font)/2;

//write text on image
//向图像上写入字符串

$fg_color = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
imagestring(
$image, $font, $x, $y, $text, $fg_color);

//save the CAPTCHA string for later comparsion
//验证码保存到session中

$_SESSION['captcha'] = $text;
//output the image
//图片输出到浏览器

header('Content-type: image/png');
imagepng(
$image);
imagedestroy(
$image);
?>
posted @ 2011-04-11 13:34  longbaobao  阅读(138)  评论(0)    收藏  举报