Как создать пользовательскую страницу с ошибкой при возникновении непредвиденного события на сайте с php?

Я занимаюсь разработкой с помощью PHP на веб-сервере Apache. Я хотел бы знать, есть ли способ заставить сервер обслуживать пользовательскую страницу ошибки всякий раз, когда происходит любое из следующих событий:

  • Страница, которую ищет пользователь, не существует (я хотел бы использовать пользовательскую страницу с ошибкой вместо классической "404 Not Found");
  • Пользователь изменил значение атрибута value='' или атрибута name='', а затем отправил форму с неправильными значениями (например, у меня есть атрибут где значение value представляет идентификатор продукта, который является собирается быть купленным или однозначной строкой в ​​базе данных, которая будет отменена. Я хочу предотвратить неоднозначное поведение, например, когда пользователь изменяет атрибут value из инструмента браузера 'inspect element', а затем отправляет форму;
  • Пользователь изменил значение? Query_string= и затем щелкнул ссылку или отправил форму с атрибутом действия, для которого установлено значение "page.php? Query_string=value".

Поэтому, когда бы ни происходило какое-либо из этих неоднозначных событий (я знаю, что для пользователя может показаться глупым изменять значение атрибутов элементов ввода при покупке чего-либо, но кто знает), я хотел бы добавить страницу, подобную той, что на Facebook, с сломанный палец, когда, например, вы пытаетесь посетить https://www.facebook.com/hello.php.

Как я могу этого достичь? Нужно ли что-то настраивать или я могу сделать это напрямую с помощью PHP?

Спасибо с уважением!

1 ответ

Решение

Что вы можете сделать, это перенаправить человека на основе страницы, которую он посещает. Многие фреймворки имеют встроенную проверку маршрута для этого. Взять, к примеру: http://symfony.com/doc/master/book/routing.html

Если маршрут не совпадает, он отобразит страницу 404 фреймворка. Вы не можете отправлять их на эту страницу, основываясь на пользовательском вводе, у вас, скорее всего, есть (в случае форм) проверка и отображение ошибки, если она идет не так. Symfony2 (в данном случае) также предоставляет токены CSRF для предотвращения XSS, например. http://symfony.com/doc/current/book/forms.html

Это в значительной степени все программирование, которое вам нужно сделать, чтобы обезопасить свой веб-сайт и подтвердить ввод пользователя. НИКОГДА не доверяйте тому, что пользователь отправляет вам, включая переменные $_SERVER;)

Другие вопросы по тегам