tp5服务器验证案例
1.验证器代码
<?php namespace app\user\validate; use think\Validate;
use Potting\IDCard; /**
* 山区治理报名验证器
* Class ActivityEnroll
* @table qj_activity_enroll 验证器类名基于数据表名命名
* @package app\user\validate
*/
class ActivityEnroll extends Validate
{
protected $rule = [
['username', 'require|max:30'],
['mobile', 'require|checkMobile'],
['sex', 'require|number'],
['email', 'require|email|max:50'],
['birthday', 'require|date'],
['id_card', 'require|checkIDCard'],
['signature', 'require|max:50'],
['if_graduates', 'require'],
['if_volunteer', 'require'],
['service_city', 'require'],
['if_adjustment', 'require'],
['areaid', 'require'],
['salaryid', 'require'],
['tradeid', 'require'],
['positionname', 'require'],
['educationid', 'require|number'],
['schoolname', 'require|max:40'],
['major', 'require|max:40'],
['school_begintime', 'require|date'],
['school_endtime', 'require|date'],
['organic_name', 'require'],
['position_award', 'require'],
['inschool_begintime', 'require'],
['inschool_endtime', 'require'],
['inschool_description', 'require'],
['type', 'require'],
['skill_name', 'require'],
['description', 'require'], ]; protected $field = [
'username' => '姓名',
'mobile' => '手机号码',
'sex' => '性别',
'email' => '邮箱',
'birthday' => '生日',
'id_crard' => '身份证',
'signature' => '座右铭',
'if_graduates' => '是否应届毕业生',
'if_volunteer' => '是否有志愿经历',
'service_city' => '可接受服务城市',
'if_adjustment' => '是否服从调剂',
'areaid' => '职业规划-意向城市',
'salaryid' => '职业规划-薪资范围',
'tradeid' => '职业规划-意向行业',
'positionname' => '职业规划-意向职位',
'educationid' => '教育经历-学历',
'schoolname' => '教育经历-学校名称',
'major' => '教育经历-专业',
'school_begintime' => '教育经历-入学时间',
'school_endtime' => '教育经历-毕业时间',
'organic_name' => '在校经历-组织名称',
'position_award' => '在校经历-担任职务',
'inschool_begintime' => '在校经历-加入时间',
'inschool_endtime' => '在校经历-结束时间',
'inschool_description' => '在校经历-工作内容',
'type' => '技能爱好类型',
'skill_name' => '技能名称',
'description' => '自我评价', ]; /**
* 检查身份证格式
* @param $value|验证数据
* @return bool|string
*/
protected function checkIDCard($value){
$IDCard = new IDCard();
$result = $IDCard::isCard($value);
if(!$result){
return '身份证号码格式错误';
}
return true; } /**
* 检查手机号码格式
* @param $value |验证数据
* @param $rule |验证规则
* @param $data |全部数据
* @return bool|string
*/
protected function checkMobile($value)
{
$isMobile = is_mobile('+86'.$value);
if (!$isMobile)
return '手机号码格式错误';
return true;
} }
2.第三方类库(验证身份证号码)
<?php namespace Potting;
/**
* 身份证处理类
*/
class IDCard { //检证身份证是否正确
public static function isCard($card) {
$card = self::to18Card($card);
if (strlen($card) != 18) {
return false;
} $cardBase = substr($card, 0, 17); return (self::getVerifyNum($cardBase) == strtoupper(substr($card, 17, 1)));
} //格式化15位身份证号码为18位
public static function to18Card($card) {
$card = trim($card); if (strlen($card) == 18) {
return $card;
} if (strlen($card) != 15) {
return false;
} // 如果身份证顺序码是996 997 998 999,这些是为百岁以上老人的特殊编码
if (array_search(substr($card, 12, 3), array('996', '997', '998', '999')) !== false) {
$card = substr($card, 0, 6) . '18' . substr($card, 6, 9);
} else {
$card = substr($card, 0, 6) . '19' . substr($card, 6, 9);
}
$card = $card . self::getVerifyNum($card);
return $card;
} // 计算身份证校验码,根据国家标准gb 11643-1999
private static function getVerifyNum($cardBase) {
if (strlen($cardBase) != 17) {
return false;
}
// 加权因子
$factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); // 校验码对应值
$verify_number_list = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); $checksum = 0;
for ($i = 0; $i < strlen($cardBase); $i++) {
$checksum += substr($cardBase, $i, 1) * $factor[$i];
} $mod = $checksum % 11;
$verify_number = $verify_number_list[$mod]; return $verify_number;
}
} ?>
3.公共函数common.php代码部分(验证手机号码格式)
//检测是否为手机号码
function is_mobile($mobile)
{
try {
$phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance();
$swissNumberProto = $phoneUtil->parse($mobile, "CH");
$isValid = $phoneUtil->isValidNumber($swissNumberProto);
} catch (\libphonenumber\NumberParseException $e) {
return $e;
}
return $isValid;
}
tp5服务器验证案例的更多相关文章
- Linux平台下Lotus Domino服务器部署案例
Linux平台下Lotus Domino服务器部署案例 几年前我写了篇<RHAS2.1下安装中文LotusDominoR6.5图解>这篇文档被多个大型网站转载,曾帮助过很多公司系统管理员部 ...
- 苹果内购服务器验证之receipt返回多组in_app思考
最近有部分用户反映,苹果内购充值失败,经过测试总结有几个关键点出现问题 1.app购买成功苹果没有返回票据,属于票据遗漏(取决于苹果服务器的响应状况),只能客户端进行监听刷新等处理 2.app连续购买 ...
- WebForm服务器验证控件与前端js自定义验证共同使用
问题: 前端aspx页面中需要在button中添加OnClientClick事件后,这个OnClientClick所执行的自定义的客户端js验证:这个时候,所有的服务器验证控件都会失效! ...
- Tp5自动验证
<?php class DB { private $address = 'mysql.21future.com'; private $username = 'manbang'; private ...
- JAVA项目之苹果IAP内购JAVA服务器验证流程详解
1.前言 本博客是经历过多个项目检验的, 绝对真实, 适应于对苹果iap内购稍微有些了解的JAVA开发人员, 认真看, 定能完美解决苹果内购问题. 苹果IAP内购支付实际上是"将客户端支 ...
- JavaScript 表单验证 案例
JavaScript 表单验证 案例 版权声明:未经授权,严禁转载! 编写 HTML 文件,搭建主体界面 <html> <head> <meta charset=&q ...
- C++使用Socket 邮箱登录服务器验证
转载:http://blog.csdn.net/zengraoli/article/details/36866241 转载:http://blog.csdn.net/alger_magic/artic ...
- 使用jquery插件validate制作的表单验证案例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ThinkPHP5.0框架开发--第10章 TP5.0验证器
ThinkPHP5.0框架开发--第10章 TP5.0验证器 第10章 TP5.0验证器 ======================================= 今日学习 1.验证器 1) 控 ...
随机推荐
- 5.Python爬虫入门五之URLError异常处理
大家好,本节在这里主要说的是URLError还有HTTPError,以及对它们的一些处理. 1.URLError 首先解释下URLError可能产生的原因: 网络无连接,即本机无法上网 连接不到特定的 ...
- C#正则表达式类Match和Group类的理解
正则表达式可以看做一种有特定功能的小型编程语言,在一段文本中定位子字符串.利用正则表达式可以快速地分析大量的文本以找到特定的字符模式:提取.编辑.替换或删除文本子字符串:或将提取的字符串添加到集合.正 ...
- day 57 data 插件 表的增删改查
一 data的含义 在匹配的元素集合中的所有元素上存储任意相关数据或返回匹配的元素集合中的第一个元素的给定名称的数据存储的值. 1 .data(key, value): 描述:在匹配 ...
- kbmMW User authentication
任何信息系统的一个非常重要的部分是能够对用户进行身份验证. kbmMW在这里提供了非常强大的机制. TkbmMWSimpleClient提供简单的用户身份验证机制,您可以在连接到应用程序服务器时传递U ...
- CentOS 7部署Java+Mysql步骤
1.工具 putty0.7:用于远程控制服务器 winSCP5.13: ftp工具,用于向远程服务器传送文件 2.安装jdk: yum -y install java-1.8.0-openjdk ja ...
- django-restful风格
每一种求情都代表一种资源,它主要强调http应该一资源为中心,并且规范了url的风格, url:统一资源标志符,某一规定下能把资源独一无二的标示出来,好比每个人都有身份证号码. 它有四中对资源操作的请 ...
- Day15作业及默写
1.整理今天内容 PASS 2.现有列表alist = [3,1,-4,2,-6] 按照元素的绝对值大小进行排序 alist = [3,1,-4,2,-6] sorted(alist,key=lamb ...
- SpringBatch Sample (三)(XML文件操作)
前篇关于Spring Batch的文章,讲述了Spring Batch 对CSV文件的读写操作. 本文将通过一个完整的实例,与大家一起讨论运用Spring Batch对XML文件的读写操作.实例流程是 ...
- Subsequence Count 2017ccpc网络赛 1006 dp+线段树维护矩阵
Problem Description Given a binary string S[1,...,N] (i.e. a sequence of 0's and 1's), and Q queries ...
- [LeetCode&Python] Problem 892. Surface Area of 3D Shapes
On a N * N grid, we place some 1 * 1 * 1 cubes. Each value v = grid[i][j] represents a tower of v cu ...