thinkphp6: 用validate验证参数合法性(thinkphp 6.0.9/php 8.0.14)
2021/12/29 22:07:09
本文主要是介绍thinkphp6: 用validate验证参数合法性(thinkphp 6.0.9/php 8.0.14),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一,代码:创建两个validate
1,验证商品列表 创建一个validateliuhongdi@lhdpc:/data/php/admapi$ php think make:validate GoodsList Validate:app\validate\GoodsList created successfully.validate/GoodsList.php
<?php declare (strict_types = 1); namespace app\validate; use think\Validate; class GoodsList extends Validate { /** * 定义验证规则 * 格式:'字段名' => ['规则1','规则2'...] * * @var array */ protected $rule = [ 'categoryId' => 'require|integer|gt:0', 'channelId' => 'require|length:4|alphaNum', ]; /** * 定义错误信息 * 格式:'字段名.规则名' => '错误信息' * * @var array */ protected $message = [ 'categoryId.require' => '分类id必须', 'categoryId.integer' => '分类id需要是整数', 'categoryId.gt' => '分类id需大于0', 'channelId.require' => '频道id必须', 'channelId.length' => '频道id长度不为4', 'channelId.alphaNum' => '频道id需由字母和数字构成', ]; }2,验证登录 创建validate
liuhongdi@lhdpc:/data/php/admapi$ php think make:validate Login Validate:app\validate\Login created successfully.validate/Login.php
<?php declare (strict_types = 1); namespace app\validate; use think\Validate; class Login extends Validate { /** * 定义验证规则 * 格式:'字段名' => ['规则1','规则2'...] * * @var array */ protected $rule = [ 'username' => 'require|min:6|max:25', 'password' => 'require|min:6|max:10', ]; /** * 定义错误信息 * 格式:'字段名.规则名' => '错误信息' * * @var array */ protected $message = [ 'username.require' => '用户名必须', 'username.min' => '用户名最少不能低于6个字符', 'username.max' => '用户名最多不能超过25个字符', 'password.require' => '密码必须', 'password.min' => '密码最少不能低于6个字符', 'password.max' => '密码最多不能超过25个字符', ]; }
说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest
对应的源码可以访问这里获取: https://github.com/liuhongdi/
或: https://gitee.com/liuhongdi
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,代码:创建一个controller
1,创建controller
liuhongdi@lhdpc:/data/php/admapi$ php think make:controller Auth Controller:app\controller\Auth created successfully.代码:
<?php declare (strict_types = 1); namespace app\controller; use think\Request; use app\result\Result; use think\response\Json; use app\validate\Login as LoginValidate; use app\validate\GoodsList as GoodsListValidate; use think\exception\ValidateException; class Auth { /** * 商品列表 * * @return \think\Response */ public function goodsList():Json { try { //echo "begin check:<br/>"; validate(GoodsListValidate::class) //->scene('edit') ->check($_GET); } catch (ValidateException $e) { // 验证失败 输出错误信息 //echo "get error:<br/>"; //var_dump($e->getError()); return Result::Error(422,$e->getError()); } $data = [ ['id'=>"1",'name'=>"牙刷"], ['id'=>"2",'name'=>"杯子"], ]; return Result::Success($data); } /** * 登录 * * @return \think\Response */ public function login():Json { try { //echo "begin check:<br/>"; validate(LoginValidate::class) //->scene('edit') ->check($_POST); } catch (ValidateException $e) { // 验证失败 输出错误信息 //echo "get error:<br/>"; //var_dump($e->getError()); return Result::Error(422,$e->getError()); } if ($_POST["username"] == "dddddd" && $_POST["password"] == "111111"){ //echo "success:<br/>"; return Result::Success("success"); } else { //echo "error:<br/>"; return Result::Error(422,"用户名密码错误"); } } }
三,测试效果:
1,访问:http://127.0.0.1:8000/auth/goodslist?categoryId=a返回: 2,访问:
http://127.0.0.1:8000/auth/goodslist?categoryId=0返回: 3,访问:
http://127.0.0.1:8000/auth/goodslist?categoryId=5返回: 4,访问:
http://127.0.0.1:8000/auth/goodslist?categoryId=5&channelId=a1@2返回: 5,访问:
http://127.0.0.1:8000/auth/goodslist?categoryId=5&channelId=a1ddd返回:
四,查看php和thinkphp的版本:
php:root@lhdpc:~# php --version PHP 8.0.14 (cli) (built: Dec 23 2021 11:52:42) ( NTS ) Copyright (c) The PHP Group Zend Engine v4.0.14, Copyright (c) Zend Technologies with Zend OPcache v8.0.14, Copyright (c), by Zend Technologiesthinkphp:
root@lhdpc:~# cd /data/php/admapi/ root@lhdpc:/data/php/admapi# php think version v6.0.9
这篇关于thinkphp6: 用validate验证参数合法性(thinkphp 6.0.9/php 8.0.14)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-19php8的协程和hyperf的协程有什么区别?-icode9专业技术文章分享
- 2024-12-19php8 的fiber是什么?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-11-29使用PHP 将ETH账户的资产汇集到一个账户
- 2024-11-23怎么实现安卓+php 热更新方案?-icode9专业技术文章分享
- 2024-11-22PHP 中怎么实现判断多个值是否为空、null 或者为 false?-icode9专业技术文章分享
- 2024-11-11开源 PHP 商城项目 CRMEB 二次开发和部署教程
- 2024-11-09怎么使用php在kaufland平台刊登商品?-icode9专业技术文章分享
- 2024-11-05PHP的抽象类和接口是什么,有什么区别-icode9专业技术文章分享