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

推荐订阅源

C
CXSECURITY Database RSS Feed - CXSecurity.com
Stack Overflow Blog
Stack Overflow Blog
月光博客
月光博客
T
Threat Research - Cisco Blogs
小众软件
小众软件
有赞技术团队
有赞技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
C
Cyber Attacks, Cyber Crime and Cyber Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Tailwind CSS Blog
Cisco Talos Blog
Cisco Talos Blog
V
V2EX
博客园 - 【当耐特】
C
Cybersecurity and Infrastructure Security Agency CISA
Hugging Face - Blog
Hugging Face - Blog
The Cloudflare Blog
The Last Watchdog
The Last Watchdog
Simon Willison's Weblog
Simon Willison's Weblog
T
Threatpost
S
Secure Thoughts
O
OpenAI News
P
Proofpoint News Feed
S
SegmentFault 最新的问题
Forbes - Security
Forbes - Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Application and Cybersecurity Blog
Application and Cybersecurity Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Last Week in AI
Last Week in AI
宝玉的分享
宝玉的分享
Scott Helme
Scott Helme
T
Tenable Blog
A
Arctic Wolf
L
LINUX DO - 热门话题
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
www.infosecurity-magazine.com
www.infosecurity-magazine.com
V
Visual Studio Blog
Hacker News: Ask HN
Hacker News: Ask HN
Hacker News - Newest:
Hacker News - Newest: "LLM"
腾讯CDC
博客园 - Franky
WordPress大学
WordPress大学
Know Your Adversary
Know Your Adversary
博客园_首页
雷峰网
雷峰网
IT之家
IT之家
PCI Perspectives
PCI Perspectives
L
LINUX DO - 最新话题
H
Heimdal Security Blog

博客园 - 林宁

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