nastya97core
@nastya97core
Начинающий программист

Можно ли использовать die при валидации?

Подскажите, на сколько верное/неверное решение?
//  проверка имени
if (preg_match('/^([а-яa-zё]+-?[а-яa-zё]+)( [а-яa-zё]+-?[а-яa-zё]+){1,2}$/Diu', $post['iname']) === 0){
	$error['validate'][] = "iname";
}

// проверка почты
if (!filter_var($post['icont'], FILTER_VALIDATE_EMAIL)){
	$error['validate'][] = "icont";
} 

// проверка телефона
preg_match('/^(\+)?\d{9,13}$/', $post['icont']) === 0){
	$error['validate'][] = "iadress";
}

// проверка адреса (бомж-вариант)
if (preg_match("/^[ a-z0-9а-я,.\/№-]+$/iu", $post['iadress']) === 0){
	$error['validate'][] = "iadress";
}

//отправка ошибки в случае не прохода валидации
if(is_array($error['validate'])) {
	echo json_encode($error);
	die;
}

// если куки кривые
if (!array_key_exists("cart", $_COOKIE)) {
	setcookie("cart", null, time()-1000);
	echo("всё плохо");
	die();
}

// ошибок нет, значит заносим данные в БД

Это часть кода в php файле, куда пользователь отправляет свои данные для оформления заказа.

Поясняю последний IF
Чтобы вообще получить доступ к странице откуда отправляется форма, нужно иметь cookie. Без них форма для заполнения отображаться не будет, поэтому я и удаляю куки, т.к. пользователь попытался обратиться к файлу не через сайт.
  • Вопрос задан
  • 340 просмотров
Решения вопроса 3
DevMan
@DevMan
можно конечно.
но хорошая практика - иметь единственное место вывода.
Ответ написан
Комментировать
Помимо уже перечисленных проблем, отметил бы ещё тестирование. В случае с PHPUnit, покрыть тестами код содержащий die или exit весьма затруднительно, так как такое завершение скрипта приведёт в том числе и к завершению скрипта теста.
Ответ написан
Комментировать
Spartak-2205
@Spartak-2205
Разработка и создание сайтов
Можно!
die (или exit) - предназначен для вывода сообщения и прекращения выполнения скрипта.

Если уже используете die (еквивалент exit), то используйте уже так:
die(json_encode($error));
// или 
exit(json_encode($error));
// и
die("всё плохо");
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Просто разве это не защитит меня от человека, который просто поймёт как он генерируется.

Надо понимать, что весь этот детский лепет, что с "шифрованием", что с "токенами", что "хеш с солью" не защитит от человека, который тупо посмотрит значение куки в инструментах разработчика.
ну или, если уж говорить о злодеях недостижимого для вас со Спартаком уровня - то есть что-то вроде сообразительного пятиклассника - то сначала запросит твою куку тем же курлом , а потом подставит в запрос

у тебя какой-то просто талант заниматься бессмысленными телодвижениями. то миллисекунды считать, то от "хакиров" защищаться.
Код напиши сначала, чтобы на него хотя бы без слез смотреть можно было
А потом уже озабачивайся защитой от несуществующих угроз

Я все больше склоняюсь к тому что ты тупо троллишь
потому что ну не может человек настолько последовательно ходить по всем граблям, которые только бывают
да еще и упорствовать в желании получать рукояткой по лбу
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы