Původně zveřejněno @ https://codeanddeploy.com navštivte a stáhněte si ukázkový kód:https://codeanddeploy.com/blog/php/simple-dynamic-form-validation-function-using-php
V tomto tutoriálu kóduji jednoduchou funkci dynamického ověřování formulářů pomocí PHP který má stejnou syntaxi jako ověření Laravel. Víme, že ověření je jednou z nejdůležitějších před uložením do naší databáze. Pokud má například váš sloupec povolenou velikost pouze 100 znaků, ale nezkontrolovali jste maximální počet znaků a váš uživatel zadal více než 100 znaků, budou uložená data oříznuta.
Toto jsou mé základní vlastnosti této funkce:
- Povinné – nastavte pole podle potřeby a nepokračujte, pokud nezadáte žádnou hodnotu
- E-mail – zaškrtněte pole, zda se jedná o platný e-mail
- Unikátní – zaškrtněte pole, zda se jedná o jedinečnou hodnotu pro vaši databázovou tabulku (užitečné pro kontrolu, zda hodnota v tabulce ještě neexistuje)
- Max – Zkontrolujte maximální délku pole
- Min – Zkontrolujte minimální délku pole
Jak tuto funkci používat?
Zkontrolujte prosím níže uvedený kód, jak tuto funkci používat:
// Validate the data
$validation = validate($_REQUEST, [
'email' => 'required|email|unique:employees|min:2|max:100',
'first_name' => 'required|min:2|max:100',
'last_name' => 'required|min:2|max:100',
'address' => 'required|min:2|max:250'
]);
Jak můžete vidět výše, funkci validate() nazýváme tyto parametry:
function validate($input, $rules) {}
$vstup - Toto je typ pole a je vhodný pro $_REQUEST a $_POST Super globální proměnná. Níže je ukázkový formát pole.
Array
(
[email] => [email protected]
[first_name] => Ronard
[last_name] => Cauba
[address] => Dumaguete City, Negros Oriental, Philippines
)
$pravidla - Toto je typ pole s hodnotou ověření pole. Níže je uvedena hodnota pole vzorků.
[
'email' => 'required|email|unique:employees|min:2|max:100',
'first_name' => 'required|min:2|max:100',
'last_name' => 'required|min:2|max:100',
'address' => 'required|min:2|max:250'
]
Syntaxe ověření
Název klíče pole, což je název pole z $input parametr a název klíče pole $rules parametr musí být stejný. Jak můžete vidět výše uvedený příklad pro $input &pravidla $ parametry.
Požadovaná syntaxe - pokud musí být vaše pole povinné, musíte do parametru $rules přidat „povinné“ s názvem pole, například:
[
..
'email' => 'required'
..
]
Syntaxe e-mailu - pokud vaše pole potřebuje ověřit, zda je e-mail platný, musíte do parametru $rules přidat "e-mail" s názvem pole, například:
[
..
'email' => 'required|email'
..
]
POZNÁMKA: Jak můžete vidět, máme nyní povinné a e-mailové ověření pro pole e-mailu. Takže musíte mít oddělovač "|" (čára)
Jedinečná syntaxe - pokud vaše pole musí mít pro vaši tabulku jedinečnou hodnotu, musíte přidat "unique:{table_name}", takže pokud je název vaší tabulky "users", mělo by to být takto:
[
..
'email' => 'unique:users'
..
]
Minimální syntaxe - pokud má vaše pole minimální počet znaků, musíte přidat "min:{minimum_number}". Zde je ukázkový kód níže:
[
..
'email' => 'min:10'
..
]
Maximální syntaxe - pokud má vaše pole maximální počet znaků, musíte přidat "max:{maximum_number}". Zde je ukázkový kód níže:
[
..
'email' => 'max:100'
..
]
Dokončete funkce ověření formuláře
Nyní máte základní ověření formuláře. Nyní vám poskytnu úplný zdrojový kód funkce, který můžete použít.
Za prvé , config.php
<?php
//set the servername
define("SERVER_NAME", "localhost");
//set the server username
define("SERVER_UNAME", "root");
// set the server password (you must put password here if your using live server)
define("SERVER_UPASS", "");
// set the table name
define("SERVER_DB", "demos");
// Include functions file
require_once 'functions.php';
// Connect to database
$db = connectDB();
?>
Za druhé , functions.php
<?php
function connectDB()
{
$db = new mysqli(SERVER_NAME, SERVER_UNAME, SERVER_UPASS, SERVER_DB);
if ($db->connect_errno) {
echo "Failed to connect to MySQL: " . $db->connect_error;
exit();
}
return $db;
}
function validate($input, $rules)
{
$errors = [];
if(is_array($input)):
foreach($rules as $fieldName=>$value):
$fieldRules = explode("|", $value);
foreach($fieldRules as $rule):
$ruleValue = _getRuleSuffix($rule);
$rule = _removeRuleSuffix($rule);
if($rule == "required" && isEmptyFieldRequired($input, $fieldName)):
$errors[$fieldName]['required'] = _removeUnderscore(ucfirst($fieldName)) . " field is required.";
endif;
if($rule == "email" && !isEmailValid($input, $fieldName)):
$errors[$fieldName]['email'] = _removeUnderscore(ucfirst($fieldName)) . " field is invalid.";
endif;
if($rule == "min" && isLessThanMin($input, $fieldName, $ruleValue)):
$errors[$fieldName]['max'] = _removeUnderscore(ucfirst($fieldName)) . " field is less than " . $ruleValue . " characters of the minimum length.";
endif;
if($rule == "max" && isMoreThanMax($input, $fieldName, $ruleValue)):
$errors[$fieldName]['max'] = _removeUnderscore(ucfirst($fieldName)) . " field is more than " . $ruleValue . " characters of the maximum length.";
endif;
if($rule == "unique" && !isRecordUnique($input, $fieldName, $ruleValue)):
$errors[$fieldName]['unique'] = _removeUnderscore(ucfirst($fieldName)) . " field is already exists.";
endif;
endforeach;
endforeach;
endif;
return $errors;
}
function isEmptyFieldRequired($input, $fieldName)
{
return $input[$fieldName] == "" || empty($input[$fieldName]);
}
function isLessThanMin($input, $fieldName, $value)
{
return strlen($input[$fieldName]) < $value;
}
function isMoreThanMax($input, $fieldName, $value)
{
return strlen($input[$fieldName]) > $value;
}
function isRecordUnique($input, $fieldName, $value)
{
// Connect to database
$db = connectDB();
// SQL Statement
$sql = "SELECT * FROM ".$value." WHERE ".$fieldName."='".$input[$fieldName]."'";
// Process the query
$results = $db->query($sql);
// Fetch Associative array
$row = $results->fetch_assoc();
// Close db connection
$db->close();
// If the result is not array so the record is unique
return !is_array($row);
}
function isEmailValid($input, $fieldName)
{
$email = $input[$fieldName];
if(!empty($email) || $email != ""):
return (!preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $email)) ? FALSE : TRUE;
else:
return TRUE;
endif;
}
function _removeUnderscore($string)
{
return str_replace("_", " ", $string);
}
function _removeRuleSuffix($string)
{
$arr = explode(":", $string);
return $arr[0];
}
function _getRuleSuffix($string)
{
$arr = explode(":", $string);
return isset($arr[1])?$arr[1]:null;
}
?>
Třetí , implementace kódu
<?php
// include config file
require_once 'config.php';
// Validate the data
$validation = validate($_REQUEST, [
'email' => 'required|email|unique:employees|min:2|max:100',
'first_name' => 'required|min:2|max:100',
'last_name' => 'required|min:2|max:100',
'address' => 'required|min:2|max:250'
]);
// Defined $result as array
$result = [];
// Check if no validation errors
if(!count($validation)):
//do something here
else:
//do something here to display the errors
$result['has_error'] = 1;
$result['errors'] = $validation;
endif;
// Encode array into json format (this is useful if your using ajax)
echo json_encode($result);
?>
Čtvrté , Výsledek, kdy došlo k chybě.
To je vše. Doufám, že tato základní funkce může dynamicky pomoci při ověřování formulářů. Doufám, že vám tento tutoriál může pomoci. Pokud si chcete tento kód stáhnout, navštivte prosím https://codeanddeploy.com/blog/php/simple-dynamic-form-validation-function-using-php.
POZNÁMKA:V tomto tutoriálu používám ajax, takže jen upravte svůj kód tak, aby vyhovoval funkcím, které nejsou Ajax.
Děkuji za přečtení. Hodně štěstí při kódování :)