У меня есть базовая форма с дюжиной полей (я бы взял 3 например):
<input type="text" name="user_first_name" class="form-control" pattern="[A-Za-z-]+" required />
<input type="text" name="user_last_name" class="form-control" pattern="[A-Za-z-]+" required />
<input type="tel" name="user_phone" class="form-control" />
...
Только номер телефона может быть пустым, фамилия и имя являются обязательными и могут содержать только буквы и тире (технические ограничения были наложены на меня нашей старой ERP)
Я создал функцию для очистки всех моих полей, которая выглядит следующим образом:
public function sanitizeInfo($user_first_name, $user_last_name, $user_phone) {
$user_first_name = preg_replace('/[^A-Za-z-]/', '', $user_first_name);
$user_last_name = preg_replace('/[^A-Za-z-]/', '', $user_last_name);
$user_phone = (isset($user_phone) and !empty($user_phone)) ? preg_replace('/[^A-Za-z0-9+-.)(]/', '', $user_phone) : NULL;
$array = array(
"first_name" => $user_first_name,
"last_name" => $user_last_name,
"phone" => $user_phone
);
return $array;
}
В моем скрипте PHP я делаю эту первую проверку:
$fields = array('user_first_name', 'user_last_name');
$error = FALSE;
foreach ($fields as $fieldname) {
if(!isset($_POST[$fieldname]) or empty($_POST[$fieldname])) {
$error = TRUE;
$message = 'err';
}
}
if (error === TRUE) {
echo "Error !"
} else {
$info = sanitizeInfo($_POST['user_first_name'], $_POST['user_last_name'], $_POST['user_phone']);
...
** QUERY **
}
Я хочу проверить перед отправкой в базу данных, что поля не пусты (только номер телефона может быть НЕДЕЙСТВИТЕЛЕН)
Но проблема сейчас в том, что я не знаю, существуют ли мои необязательные поля, и особенно моя функция sanatizeInfo
проблематична, потому что она позволяет помещать пустые поля в базу данных
Пример:
Пользователь вводит "!! -" в качестве имени, а функция sanitizeInfo
возвращает "", потому что preg_replace
для удаления этих символов
Как этого избежать?