惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

AI
AI
TaoSecurity Blog
TaoSecurity Blog
H
Heimdal Security Blog
Help Net Security
Help Net Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Microsoft Azure Blog
Microsoft Azure Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Google DeepMind News
Google DeepMind News
爱范儿
爱范儿
The Cloudflare Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
人人都是产品经理
人人都是产品经理
大猫的无限游戏
大猫的无限游戏
N
News | PayPal Newsroom
V2EX - 技术
V2EX - 技术
博客园 - 【当耐特】
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Secure Thoughts
C
CERT Recently Published Vulnerability Notes
罗磊的独立博客
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Privacy & Cybersecurity Law Blog
有赞技术团队
有赞技术团队
S
Schneier on Security
S
SegmentFault 最新的问题
Google Online Security Blog
Google Online Security Blog
H
Hacker News: Front Page
The Last Watchdog
The Last Watchdog
Schneier on Security
Schneier on Security
PCI Perspectives
PCI Perspectives
IT之家
IT之家
Project Zero
Project Zero
博客园 - 司徒正美
P
Privacy International News Feed
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Jina AI
Jina AI
Security Latest
Security Latest
Hacker News - Newest:
Hacker News - Newest: "LLM"
腾讯CDC
C
CXSECURITY Database RSS Feed - CXSecurity.com
阮一峰的网络日志
阮一峰的网络日志
C
Check Point Blog
aimingoo的专栏
aimingoo的专栏
V
Vulnerabilities – Threatpost
W
WeLiveSecurity
NISL@THU
NISL@THU
Webroot Blog
Webroot Blog
N
Netflix TechBlog - Medium
L
Lohrmann on Cybersecurity

博客园 - 林宁

apache2 SSI 再论mysql_unbuffered_query与mysql_query的区别 Linux下的软链接和硬链接的不同(转载) TortoiseSVN 简明使用 php自带SOAP扩展调用web service 在linux下定时执行PHP脚本(定时执行crontab使用方法详解) php中构造函数和析构函数执行过程 如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量(转) 字符截取 Linux若干小结备查寻 用 PHP 读取和编写 XML DOM 基本数据结构和php内置函数(转摘) 表单提交按钮图片形式的几种写法 php防注入 随机数、随机数种子 10 件(也许)你不了解 PHP 的事情 手机中的IMEI是什么意思? mysql替换数据库中的部分内容 百度(baidu)的职业道德
一个很不错的验证类,扩展型很好(转载)
林宁 · 2007-12-12 · via 博客园 - 林宁

<?php
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 
:
                
$info "以下原因导致提交失败:\t\t\t\t,";
                echo 
"<script>alert(\"".join("\\n"split(","$info $this->error_message))."\")</script>";
                
//print >>>end;
                
break;
            case 
:
                echo 
"输入有错误:<br /><ul><li>" ereg_replace"\b\d+:""",join("</li><li>"split(","$this->error_message))) . "</li></ul>";
                echo 
"<br /><a href='javascript:history.back()'>返回</a>";
                exit;
                break;
            case 
6:
                
$info="输入有错误:<br /><ul><li>" ereg_replace"\b\d+:""",join("</li><li>"split(","$this->error_message))) . "</li></ul>";
                
$info.="<br /><a href='javascript:history.back()'>返回</a>";
                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);
    }
}
?>

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

 <title>表单验证类 Validator for PHP β</title>
<style>
body,td{font:normal 12px Verdana;color:#333333}
input,textarea,select,td{font:normal 12px Verdana;color:#333333;border:1px solid #999999;background:#ffffff}
table{border-collapse:collapse;}
td{padding:3px}
input{height:20;}
textarea{width:80%;height:50px;overfmin:auto;}
form{display:inline}
</style>
<table align="center">
<form action="validator.php" method="post">
 <tr>
  <td>真实姓名:</td><td><input name="Name"></td>
 </tr>
 <tr>
  <td>英文名:</td><td><input name="Nick"></td>
 </tr>
   <tr>
  <td>主页:</td><td><input name="Homepage"></td>
 </tr>
 <tr>
  <td>密码:</td><td><input name="Password"></td>
 </tr>
 <tr>
  <td>重复:</td><td><input name="Repeat"></td>
 </tr>
 <tr>
  <td>信箱:</td><td><input name="Email"></td>
 </tr>
   <tr>
  <td>信箱:</td><td><input name="Email1"></td>
 </tr>
 <tr>
  <td>QQ:</td><td><input name="QQ"></td>
 </tr>
   <tr>
  <td>身份证:</td><td><input name="Card"></td>
 </tr>
 <tr>
  <td>年龄:</td><td><input name="Year"></td>
 </tr>
  <tr>
  <td>年龄1:</td><td><input name="Year1"></td>
 </tr>
  <tr>
  <td>电话:</td><td><input name="Phone"></td>
 </tr>
  <tr>
  <td>手机:</td><td><input name="Mobile"></td>
 </tr>
    <tr>
  <td>生日:</td><td><input name="Birthday"></td>
 </tr>
  <tr>
  <td>邮政编码:</td><td><input name="Zip"></td>
 </tr>
 <tr>
  <td>邮政编码:</td><td><input name="Zip1"></td>
 </tr>
 <tr>
  <td>操作系统:</td><td><select name="OS"><option value="">选择您所用的操作系统</option><option value="Win98">Win98</option><option value="Win2k">Win2k</option><option value="WinXP">WinXP</option></select></td>
 </tr>
 <tr>
  <td>所在省份:</td><td>广东<input name="Province" value="1" type="radio">陕西<input name="Province" value="2" type="radio">浙江<input name="Province" value="3" type="radio">江西<input name="Province" value="4" type="radio"></td>
 </tr>
 <tr>
  <td>爱好:</td><td>运动<input name="Favorite" value="1" type="checkbox">上网<input name="Favorite" value="2" type="checkbox">听音乐<input name="Favorite" value="3" type="checkbox">看书<input name="Favorite" value="4" type="checkbox"></td>
 </tr>
  <td>自我介绍:</td><td><textarea name="Description">中文是一个字</textarea></td>
 </tr>
    <td>自传:</td><td><textarea name="History">中文是两个字节t</textarea></td>
 </tr>
 <tr>
  <td colspan="2"><input name="Submit" type="submit" value="确定提交"></td>
 </tr>
 </form>
</table>

验证文件


<?
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();
}
?>