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服务器验证案例的更多相关文章

  1. Linux平台下Lotus Domino服务器部署案例

    Linux平台下Lotus Domino服务器部署案例 几年前我写了篇<RHAS2.1下安装中文LotusDominoR6.5图解>这篇文档被多个大型网站转载,曾帮助过很多公司系统管理员部 ...

  2. 苹果内购服务器验证之receipt返回多组in_app思考

    最近有部分用户反映,苹果内购充值失败,经过测试总结有几个关键点出现问题 1.app购买成功苹果没有返回票据,属于票据遗漏(取决于苹果服务器的响应状况),只能客户端进行监听刷新等处理 2.app连续购买 ...

  3. WebForm服务器验证控件与前端js自定义验证共同使用

        问题: 前端aspx页面中需要在button中添加OnClientClick事件后,这个OnClientClick所执行的自定义的客户端js验证:这个时候,所有的服务器验证控件都会失效!   ...

  4. Tp5自动验证

    <?php class DB { private $address = 'mysql.21future.com'; private $username = 'manbang'; private ...

  5. JAVA项目之苹果IAP内购JAVA服务器验证流程详解

    1.前言 本博客是经历过多个项目检验的, 绝对真实, 适应于对苹果iap内购稍微有些了解的JAVA开发人员,  认真看,  定能完美解决苹果内购问题. 苹果IAP内购支付实际上是"将客户端支 ...

  6. JavaScript 表单验证 案例

    JavaScript 表单验证 案例 版权声明:未经授权,严禁转载!   编写 HTML 文件,搭建主体界面 <html> <head> <meta charset=&q ...

  7. C++使用Socket 邮箱登录服务器验证

    转载:http://blog.csdn.net/zengraoli/article/details/36866241 转载:http://blog.csdn.net/alger_magic/artic ...

  8. 使用jquery插件validate制作的表单验证案例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. ThinkPHP5.0框架开发--第10章 TP5.0验证器

    ThinkPHP5.0框架开发--第10章 TP5.0验证器 第10章 TP5.0验证器 ======================================= 今日学习 1.验证器 1) 控 ...

随机推荐

  1. 预期结果 参数化parametrize

    1.pytest.mark.parametrize装饰器可以实现测试用例参数化. 2.实例: import pytest @pytest.mark.parametrize("req,expe ...

  2. [Spring]初识Spring-Spring是什么?如何实例化一个Spring容器?

    关于Spring入门的基础知识点 Spring简介 Spring是由Rod Johnson创建的轻量型容器,目的在于简化企业级开发.是一种容器框架 a.降低侵入性 b.提供了IOC(控制反转)和AOP ...

  3. 解决The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers.

    SpringMVC中当在浏览器中输入对应的MappingUrl时,报The resource identified by this request is only capable of generat ...

  4. java.lang.NoSuchMethodError: org.springframework.web.context.ConfigurableWebApplicationContext.getEnvironment()Lorg/springframework/core/env/ConfigurableEnvironment;问题

    在springsecurity学习中,在加入spring有关的jar包后,出现java.lang.NoSuchMethodError: org.springframework.web.context. ...

  5. 安装vue-cookie

    // 安装cookie的命令// npm install vue-cookie --save// 为项目配置全局vue-cookieimport VueCookie from 'vue-cookie' ...

  6. natapp 穿透访问 vue项目 Invalid Host header

    由于要近期开发微信小程序,所以今天了解了一下这个netapp 内网映射这个东西,所以一开始自己就在网上看,然后想把环境部署起来,参考https://natapp.cn/ ,看了一分钟教程以后,然后自己 ...

  7. 安装最新nginx

    另外:http://nginx.org/en/linux_packages.html#mainline https://blog.csdn.net/hiram/article/details/5178 ...

  8. about Version Control(版本控制)

    what: 版本控制系统是一种软件,它可以帮助您跟踪代码随时间的变化. 在编辑代码时,您告诉版本控制系统对文件进行快照. 版本控制系统将永久保存该快照,以便在以后需要时可以收回它. 如果没有版本控制, ...

  9. SQLI DUMB SERIES-1

    less-1 (1) 可以看到提示输入ID,而且less-1题目也有提到GET,因此试试以下操作: http: 结果: http: 结果: 现在可知,“ ' ”并没有被过滤,因此可以进行以下操作: h ...

  10. 重绘和回流(reflow和repaint)

    由于DOM操作会导致浏览器的回流,回流需要花费大量的时间进行样式计算和节点重绘与渲染,所以应当尽量减少回流次数. 以下是几种常见的减少重绘和回流的方法: 一.不要一项一项的更改页面的样式,尽量一口气写 ...