验证码在表单实现越来越多了,但是用js的写的验证码,总觉得不方便,所以学习了下php实现的验证码.好吧,其实是没有事情干,但是又不想浪费时间,所以学习了下php实现验证码.正所谓,技多不压身.而且,也可以封装成一个函数,以后使用的时候也是很方便的,当然现在未封装.
现在来说说简单的纯数字验证码吧.
如果是初学者,建议按照我代码的注释 //数字 一步步来.最简单的方法,还是把整个代码复制走了.
新建一个captcha.php:
php //10设置session,必须处于脚本最顶部
imagefill($image, 0, 0, $bgcolor); //10设置变量
//设置字体颜色,随机颜色
//设置数字
$captcha_code .= $fontcontent;
//设置坐标
imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
} //10存到session
//imagesetpixel — 画一个单一像素
imagedestroy($image);
接着就是静态页的代码了:index.html
doctype htmlhtml
head
title确认验证码title
body
form method="post" action="./form.php"
p
P请输入验证码:input type="text" name='authcode' value=''/p
bodyhtml
从index.html可以看到,提交的表单是到form.php的,所以还要有一个判断的form.php代码:
//isset()检测变量是否设置
if(isset($_REQUEST['authcode'])){ session_start(); //strtolower()小写函数
if(strtolower($_REQUEST['authcode'])== $_SESSION['authcode']){ //跳转页面
echo "script language=\"javascript\""; echo "document.location=\"./form.php\""; echo "/script";
}else{ //提示以及跳转页面
echo "script language=\"javascript\""; echo "alert('输入错误!');"; echo "document.location=\"./form.php\""; echo "/script";
} exit();
}
废话不多说了,拉代码吧.
//设置需要随机取的值,去掉容易出错的值如0和o
$fontcontent = substr($data, rand(0,strlen($data)),1); //10.=连续定义变量
其他的两个页面,不许要修改.
一般而言,现在就已经够用了.但是就像动漫一样,总会有番外.
那么,我们来个汉字的番外吧.其实我也准备将汉字的验证码放到我的毕业设计里面,虽然现在很流行滑动验证码,但是本人毕竟不是专门学习js的.
php //11设置session,必须处于脚本最顶部
session_start(); //1设置验证码图片大小的函数
//11
//随机选取中文
$in = rand(0,count($strdb)); $cn = $strdb[$in]; //将中文记录到将保存到session的字符串中
$captcha_code .= $cn; /*imagettftext (resource $image ,float $size ,float $angle ,int $x ,int $y,int $color,
string $fontfile ,string $text ) 幕布 ,尺寸,角度,坐标,颜色,字体路径,文本字符串
mt_rand()生成更好的随机数,比rand()快四倍*/
} //11存到session
} //10增加干扰元素,设置线
其他的页面也是不需要修改的.
效果图如下:
一般制作验证码会按照下面的几步走:
一:创建出来一个图片,通常我们成为源,可以用imagecreatetruecolor()这个函数搞定
二:给这个源 添加背景色,同时设置文本显示的颜色,GD库函数为我们提供了imagecolorallocate()函数
三:材料弄好了,我们要给它添点内容了,就是我们随机生成的数字或者字母,甚至可以是它们的组合,这里我们可以选择两个函数 imagettftext()、imagesrting(),这两个函数的不同,我们会在后面讲解.
例:
php
session_start();//开启session,用来记录获得的验证码,这个函数要写在程序的开头,不然会出现错误
header("Content-type :image/gif");//把文件的返回类型设为image/gif格式,这个格式可以输出图片
$code =";
$code .=$charset{mt_rand(0,strlen($charset)-1)};
$_SESSION['code']=$code;//下篇关于session验证的文章将会用到
$im = imagecreatetruecolor($width,$height);//用imagecreatetruecolor()函数来建立一个新的图片,里面的两个数值分别是宽度和高度,这是制作验证码的第一步
imagefill($im,0,0,$bg);//给图片填充背景色
//好了上面的铺垫任务做的差不多了,现在关键就是让字符显示在图片上,这里有两种方法我们一一介绍.
$font ="ggbi.ttf";//如果你有字体的话 就填上字体的相对路径,如果没有就留空.下面的两个用法我会一一讲解.
if($font!==""){
else{
header("Content-type: image/jpeg");
imagejpeg($im);
这个是phpcms的验证码,经过十几万个网站经验的,非常好用
session_start();
$enablegd = 1;
//判断图像处理函数是否存在
$funcs = array('imagecreatetruecolor','imagecolorallocate','imagefill','imagestring','imageline','imagerotate','imagedestroy','imagecolorallocatealpha','imageellipse','imagepng');
foreach($funcs as $func)
{
if(!function_exists($func))
$enablegd = 0;
break;
ob_clean(); //清理缓冲
if($enablegd)
//create captcha
$const[$x] = substr($consts, mt_rand(0,strlen($consts)-1),1); //获取$consts中的一个随机数
$vow[$x] = substr($vowels, mt_rand(0,strlen($vowels)-1),1); //获取$vowels中的一个随机数
$im = imagecreatetruecolor($imageX,$imageY); //新建一个真彩色图像
//creates two variables to store color
);
//与左上角的颜色相同的都会被填充
//往图像上写入文字
//画边框
imagerectangle($im, 0, 0, $imageX - 1, $imageY - 1, $border);
//画一些随机出现的点
//画随机出现的线
else
//output to browser
header("content-type:image/png\r\n");
imagepng($im);
imagedestroy($im);
$files = glob(XINCHENG_ROOT.'images/checkcode/*.jpg');
if(!is_array($files)) die('请检查文件目录完整性:/images/checkcode/');
$checkcodefile = $files[rand(0, count($files)-1)]; //随机其中一个文件
header("content-type:image/jpeg\r\n");
include $checkcodefile;
以上就是土嘎嘎小编为大家整理的php校验isbn码的函数代码的简单介绍php校验isbn码的函数代码的简单介绍相关咨询咨询主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!