您的位置: 首页 - 记录生活,记录点滴~

[转]修改了一个很不错的验证类,扩展型很好

分类: 学习 发布: Slleo 浏览: 日期: 2007年11月9日

去掉了一些必须与客户端结合的东西,感觉这样耦合性好点。修改了一下程序的结构,改了一个函数命,增加了一种出错模式等等。。^_^,总之是为了合适个人的习惯拉。。

class Validator{
/*************************************************
Validator for PHP β 服务器端脚本
code by 我佛山人
wfsr@cunite.com
http://www.cunite.com
modify:feifengxlq<许> http://www.phpobject.net/blog feifengxlq@gmail.com
demo:
$v = new Validator();
if(!$v->Validate(array("Name,名字只允许中文,chinese", "Nick, 只允许英文昵称, english", "Homepage, 主页Url格式不正确, url", "Password, 密码不符合安全规则, safe","Email,信箱格式错误,email", "QQ, QQ号码不存在, qq","Card, 身份证号码不正确, idcard","Phone, 电话号码不存在, phone","Mobile, 手机号码不存在, mobile","Zip, 邮政编码不存在, zip"))){
echo $v->error();
}
*************************************************/
var $error_item, $error_message, $error_mode, $error_no;
function Validator($mode = 6){
$this->error_mode = $mode;
$this->error_no = 1;
}

function Validate($arr){
if(is_array($arr)){
$len = count($arr);
for($i = 0; $i < $len; $i++){
$this->is_valid($arr[$i]);
}
}

if($this->error_no > 1)return false;
return true;
}

function is_valid($str){
$str = split(",", $str);
if(count($str) < 3) return false;
$name = trim($str[0]);
$message = trim($str[1]);
$data_type = trim($str[2]);
$value = trim($_POST[$name]);

switch($data_type){
case "compare" :
break;
case "range" :
break;
case "repeat" :
break;
default :
$method = "is_".$data_type;
if(!$this->$method($value))
$this->add_error($name, $message);
break;
}
}

function add_error($name, $message){
$this->error_item .= "," . $name;
$this->error_message .= "," . $this->error_no . ":" . $message;
$this->error_no ++;
}

function error($mode=''){
$this->error_item = ereg_replace("^,+", "", $this->error_item);
$this->error_message = ereg_replace("^,+", "", $this->error_message);
$mode=(empty($mode))?$this->error_mode:$mode;
switch($mode){
case 4 :
$info = "以下原因导致提交失败:\t\t\t\t,";
echo "";
//print >>>end;
break;
case 5 :
echo "输入有错误:
  • " . ereg_replace( "\b\d+:", "",join("
  • ", split(",", $this->error_message))) . "
";
echo "
返回";
exit;
break;
case 6:
$info="输入有错误:
  • " . ereg_replace( "\b\d+:", "",join("
  • ", split(",", $this->error_message))) . "
";
$info.="
返回";
return $info;
break;
}
}

function is_email($str){
return preg_match("/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/", $str);
}

function is_url($str){
return preg_match("/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"])*$/", $str);
}

function is_qq($str){
return preg_match("/^[1-9]\d{4,8}$/", $str);
}

function is_zip($str){
return preg_match("/^[1-9]\d{5}$/", $str);
}

function is_idcard($str){
return preg_match("/^\d{15}(\d{2}[A-Za-z0-9])?$/", $str);
}

function is_chinese($str){
return ereg("^[".chr(0xa1)."-".chr(0xff)."]+$",$str);
}

function is_english($str){
return preg_match("/^[A-Za-z]+$/", $str);
}

function is_mobile($str){
return preg_match("/^((\(\d{3}\))|(\d{3}\-))?13\d{9}$/", $str);
}

function is_phone($str){
return preg_match("/^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/", $str);
}

function is_safe($str){
return (preg_match("/^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/", $str) != 0);
}
}
?>


给一个简单的演示,也是我佛山人的。


表单验证类 Validator for PHP β

真实姓名:
英文名:
主页:
密码:
重复:
信箱:
信箱:
QQ:
身份证:
年龄:
年龄1:
电话:
手机:
生日:
邮政编码:
邮政编码:
操作系统:
所在省份:广东陕西浙江江西
爱好:运动上网听音乐看书
自我介绍:
自传:


验证文件

require_once('Validator.class.php');
$v = new Validator();
if(!$v->Validate(array("Name,名字只允许中文,chinese", "Nick, 只允许英文昵称, english", "Homepage, 主页Url格式不正确, url", "Password, 密码不符合安全规则, safe","Email,信箱格式错误,email", "QQ, QQ号码不存在, qq","Card, 身份证号码不正确, idcard","Phone, 电话号码不存在, phone","Mobile, 手机号码不存在, mobile","Zip, 邮政编码不存在, zip"))){
echo $v->error();
}
?>

使用KSES安全过滤输入数据

分类: 学习 发布: Slleo 浏览: 日期: 2007年11月9日

在PHP中安全的第一原则就是永远不要相信任何外部数据!如何有效的做到这点是每个开发人员的难点之一。没有使用webeditor之前,这个基本上比较好处理。
但如果使用了webeditor,如何保证用户的数据,同时又做到安全(比如说防止XSS漏洞),的确是个头疼的问题。
这里我推荐一个开源的工具——KSES。KESS只允许用户输入的数据格式和属性。

比如说你只允许输入说含有

那么

中的title就会过滤掉。

KSES在WP和Gregarius中都有用到,是一个非常好用的东西。使用也很简单,不过惟一不好的,就是没有用类来封装,可能这也有作者自己的原因吧。

使用例子:

@live.cn开放注册!

分类: 生活点滴 发布: Slleo 浏览: 日期: 2007年11月8日

今日一试,发现可以注册。不过N年前的那个众所周知的bug依然存在,不晓得微软是个什么搞法。

稍修改了一下js代码,发现如下情况:




好笑的是:微软竟然报告说,你可以注册XXX@whitehouse.gov...当然好笑是好笑,要真正注册下来,估计要看本事了。

芙蓉VS杨二,把你们当人,你就真当自己是人了?

分类: 生活点滴 发布: Slleo 浏览: 日期: 2007年11月5日

一直不明白这两人的名气是怎么上来的,我想到的与它们关联的字眼可能只有---病态与病态!

我本不关注这等人物,QQ的弹窗广告发来消息,索性点进去看了一下.再次发言骂之.


引用地址:http://ent.qq.com/a/20071105/000003_12.htm

如果有人顶这等下流货色者,一同b4之!不服的来我的blog上灌灌...

蓝色理想受到攻击了?

分类: 生活点滴 发布: Slleo 浏览: 日期: 2007年11月5日

打不开,不知是不是受到ddos了,或者是我这里的IP有问题.

域名,谁在抢你?

分类: 生活点滴 发布: Slleo 浏览: 日期: 2007年11月1日

看上了一个域名,也想拿它来做做网站,可惜注册不到。

5dw.cn,这个域名始建于2001年,比较早,中间易主几次我不知道,只知道今天早上04:30到期并被删除,于是早起抢域名。

4:25起来,29分开始注册,一直提示失败,到了32分,我知道没戏了,用whois一查,发现就在31分,它又易主了,这回是:



哎,难怪注不到了,是被易名网的机器人注册掉的,想抢估计没戏。

5dw.cn,你的将来是怎样?

中企动力的后台管理界面

分类: 生活点滴 发布: Slleo 浏览: 日期: 2007年10月30日

典型的iframe三栏,上、左、右三栏,左边是栏目菜单,顶部是Logo信息,右边是主体。

1、左边主体菜单


2、左边菜单展开以后


3、添加产品的页面(要先选择分类,再转到添加页面,很古老的做法了,编辑器是eWebeditor)


4、全图


5、地址栏



小评:其实就是一个“智能建站”,常用的功能都是前期已开发出来的,然后根据需求把权限给用户,增加功能就增加收费。

又一夭折的明星--黄垂玲

分类: 生活点滴 发布: Slleo 浏览: 日期: 2007年10月27日

工作中,突然QQ弹出迷你首页,索性就休息一下,看看新闻,于是产生了今天的主题:又一夭折的明星--黄垂玲。

黄垂玲何许人也?我不知道,百度一下才知道原来这位美女是越南一当红青春明星。发一图来认识一下。

[align=center][/align]


东窗事发哎,与男友的受昧之事泄之网上,可惜,从此遭自己国人封杀。

据称在越南其影响还是比较大的,勘比美国的小甜甜,不过其命运不能和人家美国的美女相比了。人家开放,能接受,你开放,你的国人能接受你吗?不行吧?

对这位美女,不加评论。不过那位开放视频的家伙真是人渣。

小道消息:据说emule可以搜到你想搜的任何视频...


php递归式自杀...

分类: 学习 发布: Slleo 浏览: 日期: 2007年10月23日

看文:

javascript检测表单的函数

分类: 学习 发布: Slleo 浏览: 日期: 2007年10月23日

检测IP地址:


检测输入是否为空或全为空格:


检测输入项是否为整数:


手机号检测函数:


正整数检测:


带小数的数字类型,可以为负数:


端口号检测函数:


email检测函数:


金钱输入检测,可带三位小数:


限制输入项仅为英文,字母和下划线:


仅限数字和字母:


再来一个,限汉字,字母,数字:


日期检测函数,传入日期,格式:



再来一个email检测函数:


电话号码的:



分页:[«]8[9][10][11][12][13][14][15][16][17][18][19][20][21][22][»]

Powered By Z-Blog 1.8 Walle Build 100427

Copyright © Slleo.com. Some Rights Reserved.