Является ли хорошей практикой использовать теги meta refresh для перенаправления вместо функции header () в php?

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

function redirect($location) { echo "<meta http-equiv='refresh' content='0; url=$location' />"; } 

Нет. В Википедии четко говорится:

Meta refresh – это обескураженный метод указания веб-браузера автоматически обновлять текущую веб-страницу или фрейм после заданного интервала времени …..

Мета-теги обновления имеют некоторые недостатки :

  1. Если страница перенаправляется слишком быстро (менее 2-3 секунд), использование кнопки «Назад» на следующей странице может привести к тому, что некоторые браузеры вернутся на страницу перенаправления, в которой повторное перенаправление произойдет снова. Это плохо для удобства использования, так как это может заставить читателя «застрять» на последнем веб-сайте.
  2. Читатель может или не хочет перенаправляться на другую страницу, что может привести к неудовлетворенности пользователей или вызвать обеспокоенность по поводу безопасности.

Я бы лично использовал функцию header (), тогда пользователю не нужно ждать загрузки другой страницы.

Я лично использую функцию header (), но Meta просто обновляет страницу до этого URL-адреса перенаправления, поэтому у него есть шанс убить файлы cookie / сеансы, тогда как header() работает только в том случае, если на вашем сайте ничего не опубликовано, прежде чем вы его используете. У них обоих есть взлеты и падения.

Это зависит от ваших потребностей.

Если вам нужно перенаправить пользователя после входа в систему, вы должны использовать перенаправление заголовка.

meta refresh не рекомендуется по причинам, упомянутым выше, но все же, если требуется, вы можете использовать meta refresh. например, показ объявления на вашем сайте, а затем после определенного количества секунд вы принудительно загружаете файл или перенаправляете его на новую страницу.

вот небольшой сценарий

PHP

login.php странице login.php отображается форма входа в систему, после чего эта страница clearn_login_form.php данные на clearn_login_form.php для очистки входов. clearn_login_form.php перенаправляет на validate.php а затем validate.php перенаправляет на admin_area/admin_main.php .

Все это перенаправление выполняется на бэкэнд, и пользователь будет видеть только login.php и admin_main.php , и если пользователь admin_main.php кнопку возврата браузера, он вернется к login.php

МЕТА

В метаобновлении перенаправление выполняется на стороне браузера / клиента, что является угрозой безопасности, потому что пользователи смогут видеть clear_login_form.php и validate.php в своих URL-адресах. также, если они admin_main.php от admin_main.php они прибудут на validate.php откуда они снова будут перенаправлены на admin_main.php

PHP является безопасным и быстрым и скроет некоторые важные имена файлов от пользователей, где мета подвергается, и пользователи могут совершать атаки CSRF или сеанса (если они найдут какие-либо дыры)

Теперь вам нужно использовать заголовок на первых же строках, это проблема для вас, для преодоления этой проблемы используйте функцию ob_start() . но обязательно поставьте exit() сразу после каждой команды заголовка.

Примечание. ob_start и header() не является хорошей практикой, и это путает других программистов, которые работают над вашим кодом. Рекомендуется использовать заголовок в верхней части большинства местоположений или до того, как какой-либо вывод будет отправлен в браузер

function redirect($location) { header("location: $location"); exit(); }