逍遥一派 发表于 2015-1-16 22:16:06

PHP编程:PHP完成的封装考证码类

我是根据自己的成长历程来写的,如有不对的还请指正。
用PHP写一个考证码类,并举行封装。
类名:validationcode.class.php
代码以下:
<?php
classValidationCode{
private$width;
private$height;
private$codeNum;
private$image;//图象资本
private$disturbColorNum;
private$checkCode;
function__construct($width=80,$height=20,$codeNum=4){
$this->width=$width;
$this->height=$height;
$this->codeNum=$codeNum;
$this->checkCode=$this->createCheckCode();
$number=floor($width*$height/15);

if($number>240-$codeNum){
$this->disturbColorNum=240-$codeNum;
}else{
$this->disturbColorNum=$number;
}

}
//经由过程会见该办法向扫瞄器中输入图象
functionshowImage($fontFace=""){
//第一步:创立图象背景
$this->createImage();
//第二步:设置搅扰元素
$this->setDisturbColor();
//第三步:向图象中随机画出文本
$this->outputText($fontFace);
//第四步:输入图象
$this->outputImage();
}

//经由过程挪用该办法猎取随机创立的考证码字符串
functiongetCheckCode(){
return$this->checkCode;
}
privatefunctioncreateImage(){
//创立图象资本
$this->image=imagecreatetruecolor($this->width,$this->height);
//随机背景致
$backColor=imagecolorallocate($this->image,rand(225,255),rand(225,255),rand(225,255));
//为背景添充色彩
imagefill($this->image,0,0,$backColor);
//设置边框色彩
$border=imagecolorallocate($this->image,0,0,0);
//画出矩形边框
imagerectangle($this->image,0,0,$this->width-1,$this->height-1,$border);
}
privatefunctionsetDisturbColor(){
for($i=0;$i<$this->disturbColorNum;$i++){
$color=imagecolorallocate($this->image,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($this->image,rand(1,$this->width-2),rand(1,$this->height-2),$color);
}
for($i=0;$i<10;$i++){
$color=imagecolorallocate($this->image,rand(200,255),rand(200,255),rand(200,255));
imagearc($this->image,rand(-10,$this->width),rand(-10,$this->height),rand(30,300),rand(20,200),55,44,$color);
}
}
privatefunctioncreateCheckCode(){
//这里次要发生随机码,从2入手下手是为了辨别1和l
$code="23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKMNPQRSTUVWXYZ";
$string=;
for($i=0;$i<$this->codeNum;$i++){
$char=$code{rand(0,strlen($code)-1)};
$string.=$char;
}
return$string;
}
privatefunctionoutputText($fontFace=""){
for($i=0;$i<$this->codeNum;$i++){
$fontcolor=imagecolorallocate($this->image,rand(0,128),rand(0,128),rand(0,128));
if($fontFace==""){
$fontsize=rand(3,5);
$x=floor($this->width/$this->codeNum)*$i+3;
$y=rand(0,$this->height-15);
imagechar($this->image,$fontsize,$x,$y,$this->checkCode{$i},$fontcolor);
}else{
$fontsize=rand(12,16);
$x=floor(($this->width-8)/$this->codeNum)*$i+8;
$y=rand($fontSize+5,$this->height);
imagettftext($this->image,$fontsize,rand(-30,30),$x,$y,$fontcolor,$fontFace,$this->checkCode{$i});
}
}
}
privatefunctionoutputImage(){
if(imagetypes()&IMG_GIF){
header("Content-Type:image/gif");
imagepng($this->image);
}elseif(imagetypes()&IMG_JPG){
header("Content-Type:image/jpeg");
imagepng($this->image);
}elseif(imagetypes()&IMG_PNG){
header("Content-Type:image/png");
imagepng($this->image);
}elseif(imagetypes()&IMG_WBMP){
header("Content-Type:image/vnd.wap.wbmp");
imagepng($this->image);
}else{
die("PHP不撑持图象创立");
}
}
function__destruct(){
imagedestroy($this->image);
}
}

利用以下:
测试,挪用考证码类
code.php
<?php
session_start();
include"validationcode.class.php";
$code=newValidationCode(80,20,4);
$code->showImage();//输入到页面中供注册或登录利用
$_SESSION["code"]=$code->getCheckCode();//将考证码保留到服务器中
咱们就开始学习动态语言的概念吧,刚一接触动态语言,可能很多人都会蒙了,怎么这乱七八糟的工具,在网页里显示的时候却是另外一码事?其实这并不算乱七八糟,你写的HTML代码不也一样是一堆堆的字符吗?毕竟,代码并不是作为直接输出的,而是经过处理的,说白了,HTML是经过HTML解析器,而PHP当然也就通过PHP解析器了,跟学习HTML一样的道理,想让任何的解析器完成操作,就必须使用它们专用的语法结构,所以PHP长相奇怪也就不足为奇了。

再见西城 发表于 2015-1-19 06:27:54

装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。

活着的死人 发表于 2015-1-24 13:07:43

不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。

愤怒的大鸟 发表于 2015-2-1 16:00:46

如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,

深爱那片海 发表于 2015-2-7 07:44:04

最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。

山那边是海 发表于 2015-2-21 03:28:22

学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql

乐观 发表于 2015-3-6 19:35:36

先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。

飘灵儿 发表于 2015-3-13 07:05:43

说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。

变相怪杰 发表于 2015-3-20 15:38:51

对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
页: [1]
查看完整版本: PHP编程:PHP完成的封装考证码类