国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

??Webman.validate 表單處理和過(guò)濾器

v1.3.0 版本
2025-04-23 版本更新時(shí)間
14 安裝
0 star

Youloge.validate Webman 表單驗(yàn)證器(PHP7.2+)

Brightgreen Packagist Languages Packagist Downloads License

Webman 表單驗(yàn)證器是:Github Youloge.Tool 的子函數(shù)之一,如果安裝了webman.tool就不需要再安裝webman.validate了。經(jīng)過(guò)webman.validate 過(guò)濾處理后的表單,基本可以達(dá)到入庫(kù)要求,可以大大簡(jiǎn)化邏輯處理。

  • 支持?jǐn)?shù)據(jù)預(yù)處理鏈?zhǔn)教幚?/li>
  • 支持對(duì)象數(shù)組數(shù)據(jù)驗(yàn)證
  • 支持過(guò)濾,僅保留指定字段
  • 支持自定義錯(cuò)誤提示
  • 支持字段過(guò)濾,僅返回指定驗(yàn)證字段
  • 對(duì)上次驗(yàn)證器處理結(jié)果進(jìn)行再次過(guò)濾,可以實(shí)現(xiàn)復(fù)雜表單處理

項(xiàng)目地址

Youloge.Validate Star 我 如果對(duì)你的項(xiàng)目有幫助 歡迎打賞~

  • 1.3.0 [2025-04-23] 添加array_is_list函數(shù),兼容到 php7.2+
  • 1.2.8 [2025-03-20] 基本數(shù)據(jù)類(lèi)型int:100,float:1.02,bool:false,string:默認(rèn)值 提供默認(rèn)值支持

安裝使用

composer require youloge/webman.validate

函數(shù)名稱 useValidate()

使用說(shuō)明

驗(yàn)證規(guī)則: |,:,,,#

  • | 分割多個(gè)規(guī)則
  • : 規(guī)則參數(shù) ,多個(gè)參數(shù)用逗號(hào)分隔
  • # 自定義錯(cuò)誤提示
  • $return = useValidate($params,$rules,$filter=true)
  • $params 驗(yàn)證數(shù)據(jù)
  • $rules 驗(yàn)證規(guī)則
  • $filter 是否過(guò)濾數(shù)據(jù),剔除規(guī)則之外的數(shù)據(jù)在返回 默認(rèn) true
  • 驗(yàn)證失敗返回 ['err'=>400,'msg'=>'錯(cuò)誤提示']
  • 驗(yàn)證成功返回 處理過(guò)后的數(shù)據(jù)(filter)$params

參數(shù)說(shuō)明

驗(yàn)證規(guī)則 說(shuō)明 示例 規(guī)則類(lèi)型
required 字段必填 required 基本處理
int 轉(zhuǎn)為 int 類(lèi)型 int:10 基本處理
bool 轉(zhuǎn)為 bool 類(lèi)型 bool:false 基本處理
float 轉(zhuǎn)為 float 類(lèi)型 float:1.2 基本處理
string 轉(zhuǎn)為 string 類(lèi)型 int:string 基本處理
join 數(shù)組轉(zhuǎn)字符串:可以指定連接符號(hào),默認(rèn)逗號(hào) join:@ 基本處理
trim 去除參數(shù)兩端空白符 trim 基本處理
xss 過(guò)濾特殊符號(hào):支持不過(guò)濾(<b></b>標(biāo)簽) xss:<b> 基本處理
html 轉(zhuǎn)義 HTML 標(biāo)簽 html 基本處理
--- --- --- ---
email 驗(yàn)證是否為郵箱 email 常用驗(yàn)證
mobile 驗(yàn)證是否手機(jī)號(hào)(國(guó)內(nèi)) mobile 常用驗(yàn)證
url 驗(yàn)證是否 URL 協(xié)議網(wǎng)址 url 常用驗(yàn)證
ip 驗(yàn)證是否 IP 地址 ip 常用驗(yàn)證
date 驗(yàn)證日期 date:Y-m-D H:i:s 常用驗(yàn)證
idcard 驗(yàn)證是否身份證(國(guó)內(nèi)) idcard 常用驗(yàn)證
regex 正則驗(yàn)證 regex:[a-zA-Z]{16} 常用驗(yàn)證
test 正則驗(yàn)證 regex:[a-zA-Z]{16} 常用驗(yàn)證
--- --- --- ---
min 參數(shù)最小值 min:1 數(shù)字相關(guān)
max 參數(shù)最大值 max:20 數(shù)字相關(guān)
between 參數(shù)取值范圍 between:1,100 數(shù)字相關(guān)
--- --- --- ---
start 參數(shù)必須以%開(kāi)頭 start:@ 字符相關(guān)
end 參數(shù)必須以%結(jié)尾 end:@qq.com 字符相關(guān)
digit 參數(shù)必須為純數(shù)字 digit 字符相關(guān)
alpha 參數(shù)必須為純字母 alpha 字符相關(guān)
alphanum 參數(shù)必須為數(shù)字和數(shù)字 alphanum 字符相關(guān)
length 參數(shù)字符長(zhǎng)度要在 min ~ max 之間 length:12,14 字符相關(guān)
len 參數(shù)字符長(zhǎng)度要在 min ~ max 之間 length:12,14 字符相關(guān)
--- --- --- ---
in 參數(shù)取值在之內(nèi) between:a,b,c 取值相關(guān)
not 參數(shù)取值在之外 between:x,y,z 取值相關(guān)
count 數(shù)組個(gè)數(shù)要在 min ~ max 之間 count:1,6 取值相關(guān)

xss 過(guò)濾不僅會(huì)過(guò)濾 html 標(biāo)簽,還會(huì)過(guò)濾 ',",;,--,%,_,(,), 可以防止Mysql 注入


  • =============================
  • = 過(guò)濾規(guī)則分為預(yù)處理驗(yàn)證規(guī)則
  • =============================
  • = 基本處理: required int bool float string join trim upper lower xss html
  • = 常用驗(yàn)證: email mobile url ip date time idcard regex test
  • = 數(shù)字相關(guān): min max between
  • = 字符相關(guān): start end digit alpha alphanum length
  • = 取值相關(guān): in not count
  • =============================

簡(jiǎn)單示例:

$params = [
     'username' => 'admin',
     'password' => '123456',
];
$rules =[
     'username' => 'required|trim|lower|email', // 必填,去除空格,轉(zhuǎn)小寫(xiě),郵箱格式
     'password' => 'required|length:6,20', // 必填,長(zhǎng)度6-20
];

@['err'=>$err,'msg'=>$msg] = $data = useValidator($params,$rules,$filter=true);
if($err === 400){
     return json(['err'=>400,'msg'=>$msg]);
}

復(fù)雜示例:

請(qǐng)求數(shù)據(jù):
{
  "title": "文章標(biāo)題",
  "content": "文章內(nèi)容",
  "type": 3,
  "status": "00000001",
  "share": 1,
  "price": "a12.34",
  "created": "2022-01-01 12:00:00",
  "tags": ["標(biāo)簽1", "標(biāo)簽2"],
  "info": {
    "origin": "https://www.youloge.com",
    "ip": "127.0.0.1"
  },
  "list": [
    {
      "name": "張三",
      "age": 18,
      "mail": "EMAIL100@qq.com"
    },
    {
      "name": "李四",
      "age": 20
    },
    {
      "name": "李四",
      "age": 20
    }
  ]
}

驗(yàn)證規(guī)則:

$rules =[
     // length:64,6,30 (不是書(shū)寫(xiě)錯(cuò)誤 不區(qū)分變量數(shù)量 不區(qū)分變量前后)
     'title' => 'required|xss|length:64,6,30', // 必填,長(zhǎng)度6-64 去除html去除 HTML 和 PHP 標(biāo)簽
     'content' => 'required|html', // 必填,轉(zhuǎn)義html標(biāo)簽
     'type' =>'required|in:1,2,3', // 必填,只能是1,2,3,不能是其他值
     'status' => 'required|int|not:0,99,100', // 必填,并轉(zhuǎn)換成整數(shù),不能是0,99,100
     'share' => 'required|bool', // 必填,并轉(zhuǎn)換成布爾值
     'price' => 'required|floot|max:100', // 必填,并轉(zhuǎn)換成浮點(diǎn)數(shù) 最大100
     'created' => 'required|date:Y-m-d H:i', // 必填,日期格式(默認(rèn)為:Y-m-d H:i:s)
     'tags' => 'required|count:1,6', // 必填,需要1~6個(gè)標(biāo)簽 [`相同鍵 只生效最后一個(gè)哦`]
     // 'tags' =>['required|length:2,20'], //  數(shù)組的每個(gè)值需要2-20個(gè)字符 [`相同鍵 只生效最后一個(gè)哦`]
     // 'tags' =>'required|join:-', // 使用-符號(hào)連接 [`相同鍵 只生效最后一個(gè)哦`]
     // 注意這個(gè)規(guī)則是數(shù)組-對(duì)象,所以下面的規(guī)則會(huì)循環(huán)驗(yàn)證數(shù)組內(nèi)的對(duì)象
     'list' => [
          [
               'name'=>'required|string', // 必填,并轉(zhuǎn)換成字符串
               'age'=>'required|int', // 必填,并轉(zhuǎn)換成整數(shù)
               'mail'=>'required|end:@qq.com', // 必填,必須以@qq.com結(jié)尾
          ]
     ],
     // 這個(gè)規(guī)則是對(duì)象,所以下面的規(guī)則會(huì)驗(yàn)證對(duì)象
     'info' => [
          'origin'=>'required|url', // 必填,需要為url格式
          'ip'=>'required|ip', // 必填,需要為ip格式
     ]
];
$params = $request->all();
@['err'=>$err,'msg'=>$msg] = $data = useValidator($params,$rules,$filter=true);
if($err === 400){
     return json(['err'=>400,'msg'=>$msg]);
}

特殊規(guī)則

表單數(shù)組驗(yàn)證:要實(shí)現(xiàn)比如一個(gè)label數(shù)組字段, 要求

  • 數(shù)組需要1~6個(gè)標(biāo)簽
  • 且每個(gè)標(biāo)簽需要至少2-20個(gè)字符
  • 最終使用-符號(hào)連接,你需要這么寫(xiě)
$rule_one = ['label'=>'required|count:1,6']; // 必填,需要1~6個(gè)標(biāo)簽
$rule_two = ['label'=>['length:2,20']]; // 數(shù)組的每個(gè)值需要2-20個(gè)字符
$rule_three = ['label'=>'join:-']; // 使用-符號(hào)連接

@['err'=>$err,'msg'=>$msg] = $data_one = useValidator($params,$rule_one,true);
if($err === 400){ return json(['err'=>400,'msg'=>$msg]); }
// 用第一步的結(jié)果 作為第二步的驗(yàn)證規(guī)則 第三個(gè)參數(shù)為false 不剔除規(guī)則外字段
@['err'=>$err,'msg'=>$msg] = $data_two = useValidator($data_one,$rule_two,false);
if($err === 400){ return json(['err'=>400,'msg'=>$msg]); }
// 用第二步的結(jié)果 作為第三步的驗(yàn)證規(guī)則 第三個(gè)參數(shù)為false 不剔除規(guī)則外字段
@['err'=>$err,'msg'=>$msg] = $data_three = useValidator($data_two,$rule_three,false);
if($err === 400){ return json(['err'=>400,'msg'=>$msg]); }

規(guī)則的配置是和輸入表單 是對(duì)應(yīng)的關(guān)系,驗(yàn)證器會(huì)預(yù)處理數(shù)據(jù)并交給后續(xù)過(guò)濾規(guī)則,所以碰到需要處理同一個(gè)鍵同時(shí)進(jìn)行修改+驗(yàn)證的情況,進(jìn)行多次拆分即可。


wallet.micateam

贊助商