php

位置:IT落伍者 >> php >> 浏览文章

php仿QQ验证码的实例分析


发布日期:2024年04月30日
 
php仿QQ验证码的实例分析
本文介绍一个php实现的仿QQ中验证码的例子QQ注册或登录时的验证码大家都见过吧本文给出的代码也可以实现那样的验证码哦有需要的朋友参考下吧
复制代码 代码如下:
<?php
/**
* 仿QQ验证码
*/
//Session保存路径
$sessSavePath = dirname(__FILE__)"//data/sessions/";
if(is_writeable($sessSavePath) && is_readable($sessSavePath)){ session_save_path($sessSavePath); }
session_start();
//获取随机字符
$rndstring = ;
for($i=; $i<; $i++) $rndstring = chr(mt_rand());
$img_height=;    //先定义图片的长
$img_width=;
//如果支持GD则绘图
if(function_exists("imagecreate"))
{
//Firefox部份情况会多次请求的问题秒内刷新页面将不改变session
$ntime = time();
if(empty($_SESSION[dd_ckstr_last]) || empty($_SESSION[dd_ckstr]) || ($ntime $_SESSION[dd_ckstr_last] > ))
{
$_SESSION[dd_ckstr] = strtolower($rndstring);
$_SESSION[dd_ckstr_last] = $ntime;
}
$rndstring = $_SESSION[dd_ckstr];
$rndcodelen = strlen($rndstring);
//创建图片并设置背景色
$im = imagecreate();
ImageColorAllocate($im );
//干扰线
$lineColor = ImageColorAllocate($im mt_rand()mt_rand()mt_rand());
for($j=;$j<=;$j=$j+)
{
imageline($im$j+mt_rand()$j+mt_rand()$lineColor);
}
//输出文字
$fontColor = ImageColorAllocate($im mt_rand()mt_rand()mt_rand());
for($i=;$i<$rndcodelen;$i++)
{
$bc = mt_rand();
$rndstring[$i] = strtoupper($rndstring[$i]);
imagestring($immt_rand()$i*$img_height/+mt_rand()mt_rand($img_width/) $rndstring[$i] $fontColor);
}
header("Pragma:nocache"r"n");
header("CacheControl:nocache"r"n");
header("Expires:"r"n");
//输出特定类型的图片格式优先级为 gif > jpg >png
if(function_exists("imagepng"))
{
header("contenttype:image/png"r"n");
imagepng($im);
}
else
{
header("contenttype:image/jpeg"r"n");
imagejpeg($im);
}
ImageDestroy($im);
exit();
}
else
{
//不支持GD只输出字母 ABCD
$_SESSION[dd_ckstr] = "abcd";
$_SESSION[dd_ckstr_last] = ;
header("contenttype:image/png"r"n");
header("Pragma:nocache"r"n");
header("CacheControl:nocache"r"n");
header("Expires:"r"n");
$fp = fopen("data/vdcodejpg""r");
echo fread($fpfilesize("data/vdcodejpg"));
fclose($fp);
exit();
}
?>
               

上一篇:php 注册时输入信息验证器的实现详解

下一篇:使用PHP采集远程图片