验证码插件
原程序:基于PHPOKPlugin文件代码:
<?php
#===========================================================
# Filename: system/plugins/vcode_pi.php
# Note : 备注
# Version : 3.0
# Author: qinggan
# Update: 2009-08-17
#===========================================================
if(!function_exists("Verification_code"))
{
function Verification_code($session)
{
$x_size=90;
$y_size=30;
if(function_exists("imagecreate"))
{
$aimg = imagecreate($x_size,$y_size);
$back = imagecolorallocate($aimg, 255, 255, 255);
$border = imagecolorallocate($aimg, 0, 0, 0);
imagefilledrectangle($aimg, 0, 0, $x_size - 1, $y_size - 1, $back);
$txt="0123456789";
$txtlen=strlen($txt);
$thetxt="";
for($i=0;$i<4;$i++)
{
$randnum=mt_rand(0,$txtlen-1);
$randang=mt_rand(-20,20); //文字旋转角度
$rndtxt=substr($txt,$randnum,1);
$thetxt.=$rndtxt;
$rndx=mt_rand(2,7);
$rndy=mt_rand(0,9);
$colornum1=($rndx*$rndx*$randnum)%255;
$colornum2=($rndy*$rndy*$randnum)%255;
$colornum3=($rndx*$rndy*$randnum)%255;
$newcolor=imagecolorallocate($aimg, $colornum1, $colornum2, $colornum3);
imageString($aimg,5,$rndx+$i*21,5+$rndy,$rndtxt,$newcolor);
}
unset($txt);
$thetxt = strtolower($thetxt);
$session->set_userdata("login_vcode",md5($thetxt));
imagerectangle($aimg, 0, 0, $x_size - 1, $y_size - 1, $border);
$newcolor="";
$newx="";
$newy="";
$pxsum=100; //干扰像素个数
for($i=0;$i<$pxsum;$i++)
{
$newcolor=imagecolorallocate($aimg, mt_rand(0,254), mt_rand(0,254), mt_rand(0,254));
imagesetpixel($aimg,mt_rand(0,$x_size-1),mt_rand(0,$y_size-1),$newcolor);
}
header("Pragma:no-cache");
header("Cache-control:no-cache");
header("Content-type: image/png");
imagepng($aimg);
imagedestroy($aimg);
exit;
}
}
}
?>
Controller代码
<?php
#===========================================================
# Filename: system/application/controllers/vcode.php
# Note : 验证码
# Version : 3.0
# Author: qinggan
# Update: 2009-08-17
#===========================================================
class Vcode extends Controller
{
function Vcode()
{
parent::Controller();
}
function index()
{
$this->load->plugin("vcode");
echo Verification_code($this->session);
}
}
?>
模板代码(我这里使用的是Smarty,有所出入请自行修改噢)
<script type="text/javascript">
function reload_vcode(v)
{
var url = "index.php/vcode/index/";
var rand = Math.random();
url += rand;
v.src = url;
}
</script>
<div><img src="index.php/vcode" border="0" onclick="reload_vcode(this)" style="cursor:pointer;"></div>
唉,ctl+v习惯了. 沙发 楼主是不是发布过php cms的那位情感? 情感CMS 我也用过,很轻量,很快速。 本帖最后由 乌有 于 2009-8-25 17:22 编辑
搞明白了..
还要MD5对比.. 晕菜~~PHPOK这东东仅适合用来做企业站的~~呵呵 适合的永远是最好的。 这个插件很不错,不过有问题,其中用imageString函数生成的字符串的字体大小最大只能调到5,而我试用了别的函数:imagettftext,可是这个函数需要导入一个字体文件,并且还不能用http://开头的,只能使用相对路径,但在CI里又用不了相对路径,请问有什么好的方法吗?我的目的就是使得到的验证码图片里的文字字体大点,谢谢! 这个东东不错的 很实用的 帅啊
页:
[1]
2