verum php เป็นไลบรารีการตรวจสอบฝั่งเซิร์ฟเวอร์สำหรับ PHP ที่ช่วยให้คุณสามารถตรวจสอบอาร์เรย์ (ด้วยการรองรับไฟล์) ได้อย่างง่ายดาย มันมาพร้อมกับข้อความแสดงข้อผิดพลาด กฎ การแปลในตัว และการพึ่งพาที่เป็นศูนย์
ไลบรารีการตรวจสอบฝั่งเซิร์ฟเวอร์สำหรับ PHP
ติดตั้ง verum php ด้วย Composer
composer require sandromiguel/verum-php
ตรวจสอบแบบฟอร์มลงทะเบียนง่ายๆ (ชื่อ อีเมล และอายุ)
use Verum Validator ;
$ rules = [
' name ' => [
' rules ' => [
' required ' ,
],
],
' email ' => [
' rules ' => [
' required ' ,
' email ' ,
],
],
' age ' => [
' rules ' => [
' numeric ' ,
],
],
];
$ validator = new Validator ( $ _POST , $ rules );
echo json_encode (
[
' valid ' => $ validator -> validate (),
' errors ' => $ validator -> getErrors (),
]
);
ป้อนข้อมูล:
[
'name' => 'John Doe',
'email' => '[email protected]',
'age' => '20',
]
เอาท์พุท:
{
"valid" : true ,
"errors" : []
}
ป้อนข้อมูล:
[
'name' => '',
'email' => 'some text',
'age' => 'some text',
]
เอาท์พุท:
{
"valid" : false ,
"errors" : {
"name" : {
"label" : null ,
"rules" : {
"required" : " This field is required. "
}
},
"email" : {
"label" : null ,
"rules" : {
"email" : " This field must be a valid email address. "
}
},
"age" : {
"label" : null ,
"rules" : {
"numeric" : " This field must be numeric. "
}
}
}
}
RuleEnum
คุณสามารถใช้คลาส RuleEnum
เพื่อเข้าถึงชื่อกฎทั้งหมด
use Verum Validator ;
use Verum Enum RuleEnum ;
$ rules = [
' name ' => [
' rules ' => [
RuleEnum:: REQUIRED ,
],
],
...
];
$ rules = [
' name ' => [
' label ' => ' Name ' ,
' rules ' => [
RuleEnum:: REQUIRED ,
],
],
...
];
เอาท์พุท:
{
...
"errors" : {
"name" : {
"label" : " Name " ,
"rules" : {
"required" : 'The "Name" field is required.'
}
},
...
}
}
$ rules = [
' name ' => [
' label ' => [
' en ' => ' Name ' ,
' pt-pt ' => ' Nome ' ,
],
' rules ' => [
RuleEnum:: REQUIRED ,
],
],
...
];
เอาท์พุต (pt-pt):
{
...
"errors" : {
"name" : {
"label" : " Nome " ,
"rules" : {
"required" : 'O campo "Nome" é obrigatório.'
}
},
...
}
}
คุณสามารถใช้คำแปลในตัว:
'en'
-> อังกฤษ (ค่าเริ่มต้น)'nl-nl'
-> ดัตช์'pt-pt'
-> โปรตุเกส-โปรตุเกส'pt-br'
-> โปรตุเกส-บราซิล $ validator = new Validator ( $ _POST , $ rules , ' pt-pt ' );
LangEnum
use Verum Validator ;
use Verum Enum LangEnum ;
. . .
$ validator = new Validator ( $ _POST , $ rules , LangEnum:: PT_PT );
. . .
$ validator = new Validator ( $ _POST , $ rules );
$ validator -> addSimpleCustomMessage ( ' min_length ' , ' Min Length rule custom error message ' );
. . .
ตัวอย่างผลลัพธ์:
{
...
"errors" : {
"name" : {
"label" : " Name " ,
"rules" : {
"min_length" : " Min Length rule custom error message "
}
},
...
}
}
. . .
$ validator = new Validator ( $ _POST , $ rules );
$ validator -> addSimpleCustomMessage ( ' min_length ' , ' Number of characters detected: {param:1}. Field name: "{param:2}". ' );
. . .
ตัวอย่างผลลัพธ์:
{
...
"errors" : {
"name" : {
"label" : " Name " ,
"rules" : {
"min_length" : 'Number of characters detected: 5. Field name: "Name".'
}
},
...
}
}
. . .
$ validator = new Validator ( $ _POST , $ rules );
$ validator -> addCustomMessage (
' required ' ,
' Custom error message with label for required rule. Label: {param:1}. ' ,
' Custom error message without label for required rule. '
);
. . .
เอาท์พุต - ฟิลด์ที่มีป้ายกำกับ:
{
...
"errors" : {
"name" : {
"label" : " Name " ,
"rules" : {
"required" : 'Custom error message with label for required rule. Label: Name.'
}
},
...
}
}
เอาท์พุต - ฟิลด์ที่ไม่มีป้ายกำกับ:
{
...
"errors" : {
"name" : {
"label" : null ,
"rules" : {
"required" : " Custom error message without label for required rule. "
}
},
...
}
}
. . .
$ validator = new Validator ( $ _POST , $ rules );
$ validator -> addCustomMessages (
[
' min_length ' => ' Custom message for the "min_length" rule. ' ,
' required ' => ' Custom message for the "required" rule. ' ,
// other messages ...
]
);
. . .
. . .
$ validator = new Validator ( $ _POST , $ rules );
$ validator -> addCustomMessages (
[
' numeric ' => [
' withLabel ' => ' Custom message with label for "numeric" rule. Label: {param:1}. ' ,
' withoutLabel ' => ' Custom message without label for "numeric" rule. ' ,
],
' min_length ' => [
' withLabel ' => ' Custom message with label for "min_length" rule. Label: {param:2}, value: {param:1}. ' ,
' withoutLabel ' => ' Custom message without label for "min_length" rule. Value: {param:1}. ' ,
],
// other messages ...
]
);
. . .
ด้วย verum php คุณสามารถจัดการฟิลด์ที่มีหลายชื่อได้อย่างมีประสิทธิภาพมากขึ้น ช่องเหล่านี้เป็นช่องที่มีตัวระบุภาษาหรือชื่อรูปแบบอื่นๆ ตัวอย่างเช่น หากคุณมีฟิลด์เช่น title.en
, title.pt
, description.en
และ description.pt
คุณสามารถระบุกฎสำหรับฟิลด์เหล่านั้นได้โดยใช้ไวด์การ์ด
$ rules = [
' title.* ' => [
' rules ' => [
RuleEnum:: REQUIRED ,
],
],
' description.* ' => [
' rules ' => [
RuleEnum:: REQUIRED ,
RuleEnum:: MIN_LENGTH => 10 ,
],
],
];
$ validator = new Validator ( $ _POST , $ rules );
// ...
ตัวอย่างผลลัพธ์:
{
"valid" : false ,
"errors" : {
"title.en" : {
"label" : null ,
"rules" : {
"required" : " This field is required. "
}
},
"title.pt" : {
"label" : null ,
"rules" : {
"required" : " This field is required. "
}
},
"description.en" : {
"label" : null ,
"rules" : {
"required" : " This field is required. " ,
"min_length" : " This field must be at least 10 characters long. "
}
},
"description.pt" : {
"label" : null ,
"rules" : {
"required" : " This field is required. " ,
"min_length" : " This field must be at least 10 characters long. "
}
}
}
}
คุณสามารถใช้การตรวจสอบความถูกต้องที่กำหนดเองและใส่ข้อความแสดงข้อผิดพลาดได้
if ( $ myCustomValidationFail ) {
$ validator -> addError (
' someFieldName ' ,
' Some field name ' ,
[ ' no_duplicate ' => ' A user already exists with that username ' )]
);
// ...
}
ตรวจสอบว่าค่ามีเพียงอักขระตัวอักษรหรือไม่
$ rules = [
' nickname ' => [
' label ' => ' Nickname ' ,
' rules ' => [
RuleEnum:: ALPHA ,
],
],
];
ค่า | อัลฟ่า | อัลฟ่า + จำเป็น |
---|---|---|
null | ||
'' | ||
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
'text with spaces' |
ตรวจสอบว่าค่ามีเพียงอักขระตัวอักษรและตัวเลขหรือไม่
$ rules = [
' nickname ' => [
' label ' => ' Nickname ' ,
' rules ' => [
RuleEnum:: ALPHA_NUMERIC ,
],
],
];
ค่า | alpha_numeric | alpha_numeric + จำเป็น |
---|---|---|
null | ||
'' | ||
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
'text with spaces' |
ตรวจสอบว่าค่าอยู่ระหว่างสองค่าหรือไม่
$ rules = [
' age ' => [
' label ' => ' Age ' ,
' rules ' => [
RuleEnum:: BETWEEN => [ 12 , 29 ],
],
],
];
ค่า | ระหว่าง [1, 10] | ระหว่าง [1, 10] + จำเป็น |
---|---|---|
null | ||
'' | ||
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'some text' |
ตรวจสอบว่าจำนวนอักขระของค่าอยู่ระหว่างค่าต่ำสุดและสูงสุดหรือไม่
$ rules = [
' nickname ' => [
' label ' => ' Nickname ' ,
' rules ' => [
RuleEnum:: BETWEEN_LENGTH => [ 3 , 15 ],
],
],
];
ค่า | between_length [5,25] | between_length [5,25] + จำเป็น |
---|---|---|
null | ||
'' | ||
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
12345 | ||
true | ||
'text' | ||
'text with 23 characters' |
ตรวจสอบว่าค่านั้นเป็นค่าบูลีนหรือไม่ ส่งคืนค่าจริงสำหรับ 1/0, '1'/'0', 'on'/'off', 'yes'/'no', true/false
$ rules = [
' light ' => [
' label ' => ' Light ' ,
' rules ' => [
RuleEnum:: BOOLEAN_VALUE ,
],
],
];
ค่า | boolean_value | boolean_value + จำเป็น |
---|---|---|
null | ||
'' | ||
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
'1' | ||
1 | ||
true | ||
'text' | ||
'on' | ||
'off' | ||
'yes' | ||
'no' |
ตรวจสอบว่าค่าอยู่ในอาร์เรย์หรือไม่
$ rules = [
' priority ' => [
' label ' => ' Priority ' ,
' rules ' => [
RuleEnum:: CONTAINS => [ ' low ' , ' high ' ],
],
],
];
ค่า | มี ['ต่ำ','สูง'] | มี ['ต่ำ','สูง'] + จำเป็น |
---|---|---|
null | ||
'' | ||
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
'low' | ||
'high' |
ตรวจสอบว่าค่าเป็นวันที่ที่ถูกต้อง (Ymd) หรือรูปแบบที่กำหนดเอง
$ rules = [
' dob ' => [
' label ' => ' Date of birth ' ,
' rules ' => [
RuleEnum:: DATE ,
],
],
];
$ rules = [
' dob ' => [
' label ' => ' Date of birth ' ,
' rules ' => [
RuleEnum:: DATE => [ ' d.m.Y ' ],
],
],
];
ค่า | วันที่ [Ymd] | วันที่ [Ymd] + จำเป็น |
---|---|---|
null | ||
'' | ||
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
'2020-09-30' |
ตรวจสอบว่าค่ามีรูปแบบอีเมลที่ถูกต้องหรือไม่
$ rules = [
' email ' => [
' label ' => ' Email ' ,
' rules ' => [
RuleEnum:: EMAIL ,
],
],
];
ค่า | อีเมล | อีเมล + จำเป็น |
---|---|---|
null | ||
'' | ||
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
'[email protected]' |
ตรวจสอบว่าค่าเท่ากับค่าอื่นหรือไม่
$ rules = [
' repeat_password ' => [
' label ' => ' Repeat Password ' ,
' rules ' => [
RuleEnum:: EQUALS => [ ' password ' ],
],
],
];
เปรียบเทียบกับ 'text'
ค่า | เท่ากับ | เท่ากับ + จำเป็น |
---|---|---|
null | ||
'' | ||
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
'another text' |
ตรวจสอบว่าขนาดไฟล์ไม่เกินค่าที่กำหนดหรือไม่
ป้อนค่าเป็นไบต์
$ rules = [
' profile_photo ' => [
' label ' => ' Profile Photo ' ,
' rules ' => [
RuleEnum:: FILE_MAX_SIZE => [ 102400 ],
],
],
];
เปรียบเทียบกับ 102400
ไบต์
ค่า | file_max_size | file_max_size + จำเป็น |
---|---|---|
null | ||
50000 | ||
150000 |
ตรวจสอบว่าประเภทไฟล์ได้รับอนุญาตหรือไม่
$ rules = [
' profile_photo ' => [
' label ' => ' Profile Photo ' ,
' rules ' => [
RuleEnum:: FILE_MIME_TYPE => [ ' image/png ' , ' image/jpeg ' ],
],
],
];
ค่า | file_mime_type | file_mime_type + จำเป็น |
---|---|---|
null | ||
image/png | ||
text/plain |
ตรวจสอบว่าค่าเป็นตัวเลขทศนิยมหรือไม่
$ rules = [
' price ' => [
' label ' => ' Price ' ,
' rules ' => [
RuleEnum:: FLOAT_NUMBER ,
],
],
];
ค่า | float_number | float_number + จำเป็น |
---|---|---|
null | ||
'' | ||
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
12345 | ||
123.45 | ||
true | ||
'text' | ||
'text with spaces' |
ตรวจสอบว่าความสูงของภาพไม่เกินค่าที่กำหนดหรือไม่
$ rules = [
' profile_photo ' => [
' label ' => ' Profile Photo ' ,
' rules ' => [
RuleEnum:: IMAGE_MAX_HEIGHT => [ 600 ],
],
],
];
ค่า | image_max_height | image_max_height + จำเป็น |
---|---|---|
null | ||
500px | ||
1,000px |
ตรวจสอบว่าความกว้างของภาพไม่เกินค่าที่กำหนดหรือไม่
$ rules = [
' profile_photo ' => [
' label ' => ' Profile Photo ' ,
' rules ' => [
RuleEnum:: IMAGE_MAX_WIDTH => [ 1000 ],
],
],
];
ค่า | รูปภาพ_max_width | image_max_width + จำเป็น |
---|---|---|
null | ||
500px | ||
1500px |
ตรวจสอบว่าความสูงของภาพไม่น้อยกว่าค่าที่กำหนดหรือไม่
$ rules = [
' profile_photo ' => [
' label ' => ' Profile Photo ' ,
' rules ' => [
RuleEnum:: IMAGE_MIN_HEIGHT => [ 300 ],
],
],
];
ค่า | ภาพ_นาที_ความสูง | image_min_height + จำเป็น |
---|---|---|
null | ||
100px | ||
500px |
ตรวจสอบว่าความกว้างของภาพไม่น้อยกว่าค่าที่กำหนดหรือไม่
$ rules = [
' profile_photo ' => [
' label ' => ' Profile Photo ' ,
' rules ' => [
RuleEnum:: IMAGE_MIN_WIDTH => [ 500 ],
],
],
];
ค่า | รูปภาพ_นาที_ความกว้าง | image_min_width + จำเป็น |
---|---|---|
null | ||
400px | ||
600px |
ตรวจสอบว่าค่าเป็นจำนวนเต็มหรือไม่
$ rules = [
' distance ' => [
' label ' => ' Distance ' ,
' rules ' => [
RuleEnum:: INTEGER ,
],
],
];
ค่า | ตัวเลข | ตัวเลข + จำเป็น |
---|---|---|
null | ||
'' | ||
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' |
ตรวจสอบว่าค่าเป็นที่อยู่ IP ที่ถูกต้องหรือไม่
$ rules = [
' ip ' => [
' label ' => ' IP ' ,
' rules ' => [
RuleEnum:: IP ,
],
],
];
ค่า | ไอพี | ไอพี + จำเป็น |
---|---|---|
null | ||
'' | ||
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
'10.10.10.10' | ||
'2607:f0d0:1002:51::4' |
ตรวจสอบว่าค่านั้นเป็นที่อยู่ IPv4 ที่ถูกต้องหรือไม่
$ rules = [
' ipv4 ' => [
' label ' => ' IPv4 ' ,
' rules ' => [
RuleEnum:: IPV4 ,
],
],
];
ค่า | ไอพีวี4 | ต้องใช้ ipv4 + |
---|---|---|
null | ||
'' | ||
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
'10.10.10.10' | ||
'2607:f0d0:1002:51::4' |
ตรวจสอบว่าค่านั้นเป็นที่อยู่ IPv6 ที่ถูกต้องหรือไม่
$ rules = [
' ipv6 ' => [
' label ' => ' IPv6 ' ,
' rules ' => [
RuleEnum:: IPV6 ,
],
],
];
ค่า | ไอพีวี6 | ต้องใช้ ipv6 + |
---|---|---|
null | ||
'' | ||
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
'10.10.10.10' | ||
'2607:f0d0:1002:51::4' |
ตรวจสอบว่าค่าไม่เกินค่าที่กำหนดหรือไม่
$ rules = [
' people ' => [
' label ' => ' People ' ,
' rules ' => [
RuleEnum:: MAX => [ 5 ],
],
],
];
ค่า | สูงสุด | สูงสุด + จำเป็น |
---|---|---|
null | ||
'' | ||
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
12345 | ||
'12345' |
ตรวจสอบว่าจำนวนอักขระของค่าไม่เกินค่าที่กำหนดหรือไม่
$ rules = [
' nickname ' => [
' label ' => ' Nickname ' ,
' rules ' => [
RuleEnum:: MAX_LENGTH => [ 2 ],
],
],
];
ค่า | สูงสุด_ความยาว | max_length + จำเป็น |
---|---|---|
null | ||
'' | ||
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
12345 | ||
'12345' |
ตรวจสอบว่าค่าไม่ต่ำกว่าค่าที่กำหนดหรือไม่
$ rules = [
' people ' => [
' label ' => ' People ' ,
' rules ' => [
RuleEnum:: MIN => [ 2 ],
],
],
];
ค่า | นาที | ขั้นต่ำ + จำเป็น |
---|---|---|
null | ||
'' | ||
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
12345 | ||
'12345' |
ตรวจสอบว่าจำนวนอักขระของค่าไม่น้อยกว่าค่าที่กำหนดหรือไม่
$ rules = [
' nickname ' => [
' label ' => ' Nickname ' ,
' rules ' => [
RuleEnum:: MIN_LENGTH => [ 2 ],
],
],
];
ค่า | สูงสุด_ความยาว | max_length + จำเป็น |
---|---|---|
null | ||
'' | ||
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
12345 | ||
'12345' |
ตรวจสอบว่าค่าเป็นตัวเลขหรือไม่
$ rules = [
' age ' => [
' label ' => ' Age ' ,
' rules ' => [
RuleEnum:: NUMERIC ,
],
],
];
ค่า | ตัวเลข | ตัวเลข + จำเป็น |
---|---|---|
null | ||
'' | ||
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' |
ตรวจสอบว่าค่าตรงกับนิพจน์ทั่วไปที่กำหนดหรือไม่
$ rules = [
' path ' => [
' label ' => ' Path ' ,
' rules ' => [
RuleEnum:: REGEX => [ ' //client/[0-9a-f]+$/ ' ],
],
],
];
การตรวจสอบด้วยรูปแบบ '//client/[0-9a-f]+$/'
ค่า | นิพจน์ทั่วไป | regex + จำเป็น |
---|---|---|
null | ||
'' | ||
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
'/client/77c9e105d1f548b29958f0512967de87' | ||
'/client/invalid-uuid' |
ตรวจสอบว่าค่าไม่ว่างเปล่า
$ rules = [
' name ' => [
' label ' => ' Name ' ,
' rules ' => [
RuleEnum:: REQUIRED ,
],
],
];
ค่า | ที่จำเป็น |
---|---|
null | |
'' | |
'0' | |
0 | |
false | |
[] | |
-1 | |
1 | |
true | |
'some text' |
ตรวจสอบว่าค่านั้นเป็น Slug ที่ถูกต้องหรือไม่ (เช่น hello-world_123)
$ rules = [
' slug ' => [
' label ' => ' Slug ' ,
' rules ' => [
RuleEnum:: SLUG ,
],
],
];
ค่า | กระสุน | ทาก + จำเป็น |
---|---|---|
null | ||
'' | ||
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
'text with spaces' | ||
'hello-world_123' |
ตรวจสอบว่าค่าเป็น URL ที่ถูกต้องหรือไม่
$ rules = [
' url ' => [
' label ' => ' URL ' ,
' rules ' => [
RuleEnum:: URL ,
],
],
];
ค่า | URL | URL + จำเป็น |
---|---|---|
null | ||
'' | ||
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
'http://www.some-domain.com' |
ต้องการที่จะมีส่วนร่วม? ยินดีต้อนรับทุกการมีส่วนร่วม อ่านคู่มือการมีส่วนร่วม
หากคุณมีคำถาม ให้ทวีตฉันที่ @sandro_m_m หรือเปิดปัญหา
โครงการนี้ได้รับอนุญาตภายใต้ใบอนุญาต MIT - ดูรายละเอียดในไฟล์ใบอนุญาต
**~ แบ่งปันคือความห่วงใย ~**