简单编写php验证类,教你如何写好php程序(含多种验证规则)

JQuery validate验证规则 //定义中文消息 var cnmsg = {undefined required: “必选字段”, remote: “请修正该字段”, email: “请输入正确格式的电子邮件”, url: “请输入合法的网址”, date: “请输入合法的日期”, dateISO: “请输入合法的日期 (ISO).”, number: “请输入合法的数字”, digits: “只能输入整数”, creditcard: “请输入合法的信用卡号”, equalTo: “请再次输入相同的值”, accept: “请输入拥有合法 阅读详情

很多人在开发网站的时候往往只是通过简单的js验证,当你一不小心在js中多写了个逗号或者点号,ie6无法识别就直接跳过验证了。其实最安全的做法还是需要在服务端对用户输入的数据做验证的。本人写了个简单的php验证类,含多种验证规则,供大家学习参考。原文链接

<?php
/**
 * 用户输入规则验证类
 * author 	HaiNing Zhang
 * date 	2013-05-23
 */
class Validate{
	// 验证规则
	private $role_name = array(
			// 验证是否为空
			'required',

			// 匹配邮箱
			'email',

			// 匹配身份证
			'idcode',

			// 匹配数字
			'number',

			// 匹配http地址
			'http',

			// 匹配qq号
			'qq',

			//匹配中国邮政编码
			'postcode',

			//匹配ip地址
			'ip',

			//匹配电话格式
			'telephone',

			// 匹配手机格式
			'mobile',

			//匹配26个英文字母
			'en_word',

			// 匹配只有中文
			'cn_word',

			// 验证账户(字母开头,由字母数字下划线组成,4-20字节)
			'user_account',
		);

	/**
	 * [验证函数]
	 * @param  [array] $data             	[用户要验证的数据]
	 * @param  [array] $validate_role    	[验证规则]
	 * @param  [array] $validate_err_msg 	[错误信息提示]
	 * @return [bool]                   	[成功返回true, 失败返回错误信息]
	 */
	public function verify($data, $validate_role, $validate_err_msg=''){
		if(empty($data)) return false;
		if(empty($validate_role)) return false;
		foreach ($data as $key => $value) {
			$key = strtolower($key);
			foreach ($validate_role as $kk => $vv) {
				$kk = strtolower($kk);
				if($key == $kk){
					foreach ($vv as $k => $v) {
						$k = strtolower($k);
						if( !in_array($k, $this->role_name)) return 'role name "'.$k.'" is not found!';
						if($v == true){
							if ( !$this->$k($value) ){
								if (!isset($validate_err_msg[$kk][$k]))
								return 'var '.$key.' in '.$k.' of regular validation failure!';
								return $validate_err_msg[$kk][$k];
							}
						}
					}
				}
			}
		}
		return true;
	}

	// 获取规则数组
	public function get_role_name(){
		return $this->role_name;
	}

	// 设置属性规则
	public function set_role_name($arr){
		$this->role_name = array_merge($this->role_name, $arr);
	}

	// 验证是否为空
	public function required($str){
		if(trim($str) != "") return true;
		return false;
	}

	// 验证邮件格式
	public function email($str){
		if(preg_match("/^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/", $str)) return true;
		else return false;
	}

	// 验证身份证
	public function idcode($str){
		if(preg_match("/^\d{14}(\d{1}|\d{4}|(\d{3}[xX]))$/", $str)) return true;
		else return false;
	}

	// 验证http地址
	public function http($str){
		if(preg_match("/[a-zA-Z]+:\/\/[^\s]*/", $str)) return true;
		else return false;
	}

	//匹配QQ号(QQ号从10000开始)
	public function qq($str){
		if(preg_match("/^[1-9][0-9]{4,}$/", $str)) return true;
		else return false;
	}

	//匹配中国邮政编码
	public function postcode($str){
		if(preg_match("/^[1-9]\d{5}$/", $str)) return true;
		else return false;
	}

	//匹配ip地址
	public function ip($str){
		if(preg_match("/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/", $str)) return true;
		else return false;
	}

	// 匹配电话格式
	public function telephone($str){
		if(preg_match("/^\d{3}-\d{8}$|^\d{4}-\d{7}$/", $str)) return true;
		else return false;
	}

	// 匹配手机格式
	public function mobile($str){
		if(preg_match("/^(13[0-9]|15[0-9]|18[0-9])\d{8}$/", $str)) return true;
		else return false;
	}

	// 匹配26个英文字母
	public function en_word($str){
		if(preg_match("/^[A-Za-z]+$/", $str)) return true;
		else return false;
	}

	// 匹配只有中文
	public function cn_word($str){
		if(preg_match("/^[\x80-\xff]+$/", $str)) return true;
		else return false;
	}

	// 验证账户(字母开头,由字母数字下划线组成,4-20字节)
	public function user_account($str){
		if(preg_match("/^[a-zA-Z][a-zA-Z0-9_]{3,19}$/", $str)) return true;
		else return false;
	}

	// 验证数字
	public function number($str){
		if(preg_match("/^[0-9]+$/", $str)) return true;
		else return false;
	}
}

调用方法

<?php
require('model/Validate.php');
$data = array(
    "username"=>'ningofaura@gmail.com',
    "qq"=>'593084029',
    "nickname"=>'张海宁',
    "id"=>'24',
    );
$validate_role = array(
    'username'=>array(
        'required'=>true,
        'email'=>true,
        ),
    'qq'=>array(
        'required'=>true,
        'qq'=>true,
        ),
    'nickname'=>array(
        'required'=>true,
        ),
    'id'=>array(
        'required'=>true,
        'number'=>true,
        ),
    );

$validate_err_msg = array(
    'username'=>array(
        'required'=>"用户名不能为空",
        'email'=>"邮箱格式不正确",
        ),
    'qq'=>array(
        'required'=>"qq不能为空",
        'qq'=>"qq格式不正确",
        ),
    'nickname'=>array(
        'required'=>"昵称不能为空",
        ),
    'id'=>array(
        'required'=>"id不能为空",
        'number'=>"不是数字",
        ),
    );
$Validate = new Validate();
$rt = $Validate->verify($data, $validate_role, $validate_err_msg);
if ($rt !== true){
    echo $rt;
    exit;
}

当然,如果你觉得验证无法满足你的需求,您还可以创建子类扩展您的方法

<?php
/**
 * 用户数据库异步验证
 * author	HaiNing Zhang
 * date 	2013-05-23
 */
class AjaxValidate extends Validate{
	private $role_name = array(
			// 验证用户名是否存在
			'is_username',

			// 验证昵称是否存在
			'is_nickname',
		);

	private $db;

	public function __construct(){
		$this->db = &load_system("Database");
		$this->set_role_name($this->role_name);
	}

	// 判断用户名是否可以注册(防止用户名重复)
	public function is_username($username){
		$_username = $this->db->filter('s', $username);
		$sql = "select id from user where username =".$_username;
		if($this->db->num_rows($sql)){
			return false;
		}else{
			return true;
		}
	}

	// 判断昵称是否可用(防止昵称重复)
	public function is_nickname($nickname){
		$_nickname = $this->db->filter('s', $nickname);
		$sql = "select id from user where nickname =".$_nickname;
		if($this->db->num_rows($sql)){
			return false;
		}else{
			return true;
		}
	}
}


第5.1节 构网控制:电压源特性与电压调节 摘要: 构网型变流器的核心物理本质是作为可控交流电压源,通过戴维南等效模型(受控电势源+低输出阻抗)自主建立并调节电压,增强电网电压刚度。其电压调节通过无功-电压闭环控制实现,内环为自动电压调节器(AVR),外环为无功-电压下垂特性,模拟同步发电机功能。关键技术包括自适应增益、虚拟阻抗补偿及动态限流策略,以应对弱电网稳定性、故障过流等问题。该设计满足《规范》对电压调节范围、动态无功支撑的要求,是高比例新能源电力系统电压稳定的关键解决方案。 阅读详情

相关推荐

STM32铅酸蓄电池内阻测试仪的交流阻抗测量与数据采集优化

本文深入探讨了基于STM32的铅酸蓄电池内阻测试仪设计,重点解析了交流阻抗测量原理与数据采集优化方案。通过采用1kHz交流小信号注入和数字相敏检波技术,实现对电池欧姆内阻的无损精准测量,并详细介绍了硬件前端调理、ADC过采样及系统标定等关键优化手段,有效提升了测量精度与稳定性。

weixin_29168393的博客 487

ThinkPHP 验证码扩展库的使用,以及多应用模式下,如何自定义验证码校验规则

安装验证码扩展后,在当前项目中的全局配置文件config目录中,会多出一项captcha.php用于配置验证码的相关配置。在单应用模式下,我们可以直接通过config/captcha.php 来配置项目中的验证码相关配置。多应用模式下的话,将config/captcha.php 拷贝一份到每个应用中的config目录中,然后在根据不同的应用去修改相应的验证码配置。php// | Captcha配置文件return [//验证码位数// 验证码字符集合// 验证码过期时间。

m0_63622279的博客 2053

WKWebView 白屏问题,WKWebView request body丢失问题

1,WKWebView 白屏问题 WKWebView 自诩拥有更快的加载速度,更低的内存占用,但实际上 WKWebView 是一个多进程组件,Network Loading 以及 UI Rendering 在其它进程中执行。初次适配 WKWebView 的时候,我们也惊讶于打开 WKWebView 后,App 进程内存消耗反而大幅下降,但是仔细观察会发现,Other Process 的内存占用会...

weixin_37543822的博客 736

php怎么实现数据验证,php实现各数据验证的实例分析

分享一个php的验证类,检查输入的是否为数字,检查输入的是否为电话,检查输入的是否为手机号,检查输入的是否为邮编,邮箱地址合法性检查,姓名昵称合法性检查,只能输入中文英文,检查一个(英文)域名是否合法。首先下载我们本节课程所需要用到的php的验证类库:http://www.php.cn/xiazai/leiku/778下载完成之后找到我们需要的php类文件,解压至我们本地目录,创建新的php文件!...

weixin_42632156的博客 449

KUKA 虚拟调试实战——打通Simpro4.1与OfficeLite8.6的通信与实时控制链路

本文详细介绍了KUKA虚拟调试实战,重点解析如何打通Simpro4.1与OfficeLite8.6的通信与实时控制链路。通过环境搭建、权限配置、机器人型号匹配等关键步骤,帮助工程师高效完成机器人轨迹规划和PLC联锁逻辑验证,大幅降低真机调试风险。文章还提供了典型报错解决方案和实时控制优化技巧,适用于工业机器人仿真与培训场景。

weixin_30907935的博客 448

智能车竞赛走马观碑组:如何高效识别目标板并优化绕行策略(附实战代码)

本文深入探讨了智能车竞赛走马观碑组中,如何构建从图像识别到路径决策的全栈优化方案。针对目标板识别与绕行策略的核心难点,文章详细解析了基于MobileNetV2的高效识别流水线、结合预瞄点与纯追踪算法的平滑路径规划,以及横向与纵向协同控制策略,并提供了实战代码与调试指南,旨在全面提升小车的比赛表现。

o5p6q的博客 884

PHP 常用正则表达式验证规则

PHP 常用正则表达式验证规则: PHP验证手机号正则表达式代码 PHP验证邮箱地址正则表达式代码 PHP验证身份证号正则表达式代码 PHP验证是否只包含中文或英文的正则表达式代码 PHP验证QQ号码的正则表达式代码 PHP验证是否微信号的正则表达式代码 PHP验证是否特殊符号的正则表达式代码 PHP验证是否银行卡号码正则表达式代码 PHP验证固定号码的正则表达式...

qq_41469037的博客 966

解决‘GLIBC_2.28 not found‘错误:手把手教你升级glibc到最新版(附中文乱码修复)

本文提供了一份详尽的Linux系统glibc升级实战指南,旨在解决常见的'GLIBC_2.28 not found'错误。文章不仅涵盖从风险评估、环境准备到编译安装的完整流程,还特别加入了精简本地化数据以修复中文乱码的实用技巧,帮助管理员和开发者在安全可控的前提下完成系统核心库的升级。

a1b2c3d的博客 1345

php 常见的验证规则

验证是否为指定长度的字母/数字组合 function fun_text1($num1, $num2, $str) { Return (preg_match("/^[a-zA-Z0-9]{" . $num1 . "," . $num2 . "}$/", $str)) ...

qmister 398

“基于车载车机 ADB 的安卓自动化测试”以及“类似智谱 AutoGLM 的 AI 安卓自动化项目”的整理和选型建议。

本文系统梳理了安卓自动化测试两大路线。传统ADB框架中,**Appium**适用于企业级测试,**AndroidViewClient**和**Airtest**适合脚本化与图像识别场景。AI驱动的方案里,**智谱Open-AutoGLM**擅长中文场景的视觉理解与操作,**DroidRun**支持多模型与跨平台,而**Android-MCP**则适合将安卓能力作为工具集成到现有AI平台。选型需根据稳定性、技术栈与AI集成需求决定。

weixin_39072720的博客 900

基于STM32设计的智能家居系统(采用ESP8266+OneNet云平台)

一、环境介绍 单片机采用:STM32F103C8T6 上网方式:采用ESP8266,也可以使用其他设备代替,只要支持TCP协议即可。比如:GSM模块、有线网卡等。 云平台: 采用中国移动OneNet. 也可以采用腾讯、阿里云、华为云、百度天工物接入、机智云等等。 前面文章有讲解。 协议: 采用MQTT协议 开发软件:keil5 完整项目源码下载:https://download.youkuaiyun.com/download/xiaolong1126626497/19766925 二、包含的硬件与实...

1万+

php通用验证规则

php通用验证规则: <?php class Validator { static protected $error; /** * 灵活获取参数 * @param $rule * @param $param */ public static function get_errors($rule, $param) { ...

阳水平的博客 495

每周技巧tc 问题处理技巧Teamcenter

(内部)Dataset和Tool相关之2.1——Tool轮询Contents Type和Type Name-赖良顺.docx。(内部)Dataset和Tool相关之3.2——编写Batch和Perl为客户端自动注册相关内容-赖良顺.docx。(内部)Dataset和Tool相关之1.1——Tools和Datasets参数定义-赖良顺.docx。(内部)Dataset和Tool相关之1.2——相关首选项定义及修改-赖良顺.docx。(内部)Dataset和Tool相关之0——概述-赖良顺.docx。

TC技术专栏 1230

PHP 多种内置的验证规则和函数

PHP 提供了多种内置的验证规则和函数,用于处理用户输入的数据验证。虽然不属于 PHP 核心,但 Laravel 等框架扩展了 PHP 的验证功能,提供了更丰富的规则(如。是 PHP 中最常用的内置验证函数之一,配合预定义的过滤器(如果需要更复杂的验证逻辑,可以结合使用内置函数和第三方库(如。用于一次性验证多个字段的数据,返回验证后的数组结果。函数可用于自定义正则表达式验证。验证电子邮件地址格式是否有效。验证整数并可设置范围限制。使用自定义正则表达式验证。常量)进行数据验证。:验证日期是否有效。

关注我学习编程不迷路 910

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Laravel 表单验证常用的验证规则和示例

Laravel 表单验证常用的验证规则和示例 <?php namespace App\Http\Controllers; use App\Models\Users; use Illuminate\Support\Facades\Validator; use Symfony\Component\HttpFoundation\Request; class UsersController...

Websites 5335

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

php验证规则怎么写,Thinkphp自动验证规则

其实说白了,这篇文章就是转给自己看的,省的下次用的时候满网络找了。有需要的同学也可以看看。自动验证是非常有用的一个技术。平常的验证基本就是,用户名是否为空,用户名是否重复,密码,重复密码是否一致。官方给的就是这些。那么我们不可能只用到这些,铁定还有别的规则,所以下面这些规则供同学借鉴,也供我自己借鉴。array(‘name’,’/^[a-z]\w{3,}$/i’,’名字不符合要求!’);array...

weixin_31854817的博客 348

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

62 think php 内置验证规则

think php 内置验证规则 格式验证类 格式验证类在使用静态方法调用的时候支持两种方式调用(以number验证为例,可以使用number() 或者 isNumber())。 'name'=>'require' //必须有值,不为空; 'num'=>'number' //是否为纯数字,不包含负数和小数点 'num'=>'integer' //是否为整数 'num'=>'float' //是否为浮点数字 'num'=>'boolean' //是否为布尔值 'em

BowenXu11的博客 384

php字段验证规则,ThinkPHP 自动验证及验证规则详解

ThinkPHP 自动验证及验证规则详解ThinkPHP 自动验证ThinkPHP 内置了数据对象的自动验证功能来完成模型的业务规则验证。自动验证是基于数据对象的,而大多情况下数据对象是基于$_POST表单 (不是绝对的)创建的。基本的自动验证功能包括:必须字段、email邮箱格式、唯一性、URL地址、数字、两个字段是否相同、是否等于某个值等。要使用系统的自动验证功能,只需要在对应的 Model类...

weixin_30356433的博客 1351

基于Laravel的Base64验证规则项目常见问题解决方案

基于Laravel的Base64验证规则项目常见问题解决方案 该项目是一个为Laravel框架提供的Base64编码验证规则集,主要使用PHP编程语言开发。它扩展了Laravel的验证规则,使其能够支持对Base64编码文件的验证,如图片和文件的大小、类型等。 新手常见问题及解决方案 问题一:如何安装这个项目? 问题描述: 新手用户不知道如何将此项目集成到自己的Laravel项目中。 解决步骤: ...

gitblog_00016的博客 952

TP5验证规则

格式验证类: 1. require 验证某个字段必须,例如:‘name’=>‘require’ 2.number 或者 integer 验证某个字段的值是否为数字(采用filter_var验证),例如:‘num’=>‘number’ 3.float 验证某个字段的值是否为浮点数字(采用filter_var验证),例如:‘num’=>‘float’ 4.boolean 验证某个字...

$coding的博客 2409

php validate验证,Validator | validate 验证规则

记录一下 平时就不用再去找了accepted字段值为 yes, on, 或是 1 时,验证才会通过。这在确认”服务条款”是否同意时很有用。active_url字段值通过 PHP 函数 checkdnsrr 来验证是否为一个有效的网址。after:date验证字段是否是在指定日期之后。这个日期将会使用 PHP strtotime 函数验证。alpha字段仅全数为字母字串时通过验证。alpha_das...

weixin_36424234的博客 1610

php实现表单验证类

php表单验证,验证器,验证规则,Validator

fangdong88的博客 1430

thinkphp5-validate之自定义验证规则

自定义验证规则-验证客户端传过来的id号是否为正整数

AMAZING 1842

php验证器的验证规则

/** * 验证字段值是否为有效格式 * @access protected * @param mixed $value 字段值 * @param string $rule 验证规则 * @param array $data 验证数据 * @return bool */ protected function is($value, $rule, $data = []) {...

weixin_44133711的博客 511

laravel验证规则

1.已经支持 return [ 'accepted' => '必须为yes,on,1,true', 'active_url' => '是否是一个合法的url,基于PHP的checkdnsrr函数,因此也可以用来验证邮箱地址是否存在', 'after:date' => '验证字段必须是给定日期后的值,比如required|date|after:tomorro...

廖圣平 1943

PHP制作简单的验证码验证

什么是验证码❓ 验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,我们利用比较简易的方式实现了这个功能。这个问题可以...

黛琳ghz的博客,期待你的关注。 4281
上一篇: 21段救命PHP代码
php_897721669
博客等级 码龄15年 32粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值