php图片验证码代码
在用户验证页面,如注册,登录的时候,为了加强用户登录的安全性,添加验证码验证代码,下面我为各位朋友提供几种不同同类型的php验证代码程序,最后一款是一款使用了验证代码的实例代码,实例代码如下:
<?php
date_default_timezone_set('asia/shanghai');
function setcode($len) {
$code = '';
for ($i = 0; $i < $len; $i++) //生成随机长度
{
$code.= chr(drand());
}
return $code;
}
//生成一个随机字符
function drand() {
$rand = mt_rand(0, 2);
$str = '';
switch ($rand) {
case 0:
$str = mt_rand(48, 57);
break; //数字
case 1:
$str = mt_rand(65, 90);
break; //大写字母
case 2:
$str = mt_rand(97, 122);
break; //小写字母
}
return $str;
}
$_session['checkcode'] = $code = setcode(5);
//php图片验证码原代码,需支持gd2.dll扩展,需修改php.ini后重启iis or ap
session_start();
session_register('safecode');
$type = 'gif';
$width = 40;
$height = 16;
header("content-type: image/" . $type);
srand((double)microtime() * 1000000);
$randval = randstr(4, "");
if ($type != 'gif' && function_exists('imagecreatetruecolor')) {
$im = @imagecreatetruecolor($width, $height);
} else {
$im = @imagecreate($width, $height);
}
$r = array(
225,
211,
255,
223
);
$g = array(
225,
236,
237,
215
);
$b = array(
225,
236,
166,
125
);
$key = rand(0, 3);
$backcolor = imagecolorallocate($im, $r[$key], $g[$key], $b[$key]); //背景色(随机)
$bordercolor = imagecolorallocate($im, 0, 0, 0); //边框色
$pointcolor = imagecolorallocate($im, 255, 170, 255); //点颜色
@imagefilledrectangle($im, 0, 0, $width - 1, $height - 1, $backcolor); //背景位置
@imagerectangle($im, 0, 0, $width - 1, $height - 1, $bordercolor); //边框位置
$stringcolor = imagecolorallocate($im, 255, 51, 153);
for ($i = 0; $i <= 100; $i++) {
$pointx = rand(2, $width - 2);
$pointy = rand(2, $height - 2);
@imagesetpixel($im, $pointx, $pointy, $pointcolor);
}
@imagestring($im, 3, 5, 1, $randval, $stringcolor);
$imagefun = 'image' . $type;
$imagefun($im);
@imagedestroy($im);
$_session['safecode'] = $randval;
//产生随机字符串
function randstr($len = 6, $format = 'all') {
switch ($format) {
case 'all':
$chars = 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789www.111cn.net';
break;
case 'char':
$chars = 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz';
break;
case 'number':
$chars = '0123456789';
break;
default:
$chars = 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789';
break;
}
$string = "";
while (strlen($string) < $len) $string.= substr($chars, (mt_rand() % strlen($chars)) , 1);
return $string;
}
//调用此页面,如果下面的式子成立,则生成验证码图片
if ($_get["action"] == "verifycode") {
rand_create();
}
//验证码图片生成
function rand_create() {
//通知浏览器将要输出png图片
header("content-type: image/png");
//准备好随机数发生器种子
srand((double)microtime() * 1000000);
//准备图片的相关参数
$im = imagecreate(62, 20);
$black = imagecolorallocate($im, 0, 0, 0); //rgb黑色标识符
$white = imagecolorallocate($im, 255, 255, 255); //rgb白色标识符
$gray = imagecolorallocate($im, 200, 200, 200); //rgb灰色标识符
//开始作图
imagefill($im, 0, 0, $gray);
while (($randval = rand() % 100000) < 10000); {
$_session["login_check_num"] = $randval;
//将四位整数验证码绘入图片
imagestring($im, 5, 10, 3, $randval, $black);
}
//加入干扰象素
for ($i = 0; $i < 200; $i++) {
$randcolor = imagecolorallocate($im, rand(0, 255) , rand(0, 255) , rand(0, 255));
imagesetpixel($im, rand() % 70, rand() % 30, $randcolor);
}
//输出验证图片
imagepng($im);
//销毁图像标识符
imagedestroy($im);
}
//检验验证码
function rand_check() {
if ($_post["reg_rand"] == $_session["login_check_num"]) {
return true;
}
else {
exit("验证码输入错误");
}
}验证码通过gd生成png图片, 并把 $randval随机数字赋给$_session['login_check_num'], 在通过用户输入的 $_post进行比较, 来判断是否正确, 达到需要实现的功能, 需要修改php . ini文件, 使php支持gd库 .
本文地址:http://www.phprm.com/tuxiang/fs4477.html
转载随意,但请附上文章地址:-)