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 ],
],
],
];| قيمة | بين_الطول [5,25] | بين_الطول [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 ,
],
],
];| قيمة | قيمة منطقية | قيمة منطقية + مطلوبة |
|---|---|---|
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] + مطلوب |
|---|---|---|
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 | ✔️ | |
| 500 بكسل | ✔️ | ✔️ |
| 1000 بكسل |
للتحقق مما إذا كان عرض الصورة لا يتجاوز قيمة معينة.
$ rules = [
' profile_photo ' => [
' label ' => ' Profile Photo ' ,
' rules ' => [
RuleEnum:: IMAGE_MAX_WIDTH => [ 1000 ],
],
],
];| قيمة | image_max_width | image_max_width + مطلوب |
|---|---|---|
null | ✔️ | |
| 500 بكسل | ✔️ | ✔️ |
| 1500 بكسل |
للتحقق مما إذا كان ارتفاع الصورة لا يقل عن قيمة معينة.
$ rules = [
' profile_photo ' => [
' label ' => ' Profile Photo ' ,
' rules ' => [
RuleEnum:: IMAGE_MIN_HEIGHT => [ 300 ],
],
],
];| قيمة | image_min_height | image_min_height + مطلوب |
|---|---|---|
null | ✔️ | |
| 100 بكسل | ||
| 500 بكسل | ✔️ | ✔️ |
للتحقق مما إذا كان عرض الصورة لا يقل عن قيمة معينة.
$ rules = [
' profile_photo ' => [
' label ' => ' Profile Photo ' ,
' rules ' => [
RuleEnum:: IMAGE_MIN_WIDTH => [ 500 ],
],
],
];| قيمة | image_min_width | image_min_width + مطلوب |
|---|---|---|
null | ✔️ | |
| 400 بكسل | ||
| 600 بكسل | ✔️ | ✔️ |
التحقق مما إذا كانت القيمة صحيحة.
$ rules = [
' distance ' => [
' label ' => ' Distance ' ,
' rules ' => [
RuleEnum:: INTEGER ,
],
],
];| قيمة | رقمي | رقمي + مطلوب |
|---|---|---|
null | ✔️ | |
'' | ✔️ | |
'0' | ||
0 | ✔️ | ✔️ |
false | ||
[] | ||
-1 | ✔️ | ✔️ |
1 | ✔️ | ✔️ |
true | ||
'text' |
التحقق مما إذا كانت القيمة عنوان IP صالحًا.
$ rules = [
' ip ' => [
' label ' => ' IP ' ,
' rules ' => [
RuleEnum:: IP ,
],
],
];| قيمة | الملكية الفكرية | 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 ,
],
],
];| قيمة | IPv4 | 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 ,
],
],
];| قيمة | IPv6 | 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' | ✔️ |
للتحقق مما إذا كانت القيمة عبارة عن سبيكة صلبة صالحة (على سبيل المثال، 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 - راجع ملف الترخيص للحصول على التفاصيل
***المشاركة تعني الاهتمام ***