Мне нужно многократно использовать перенаправления в моих сценариях, например, после входа пользователя в систему мне нужно перенаправить их в область администратора и т. Д. Но мне неудобно всегда иметь функцию заголовка на самом верху. Итак, если я использую теги мета-обновления для своих перенаправлений, это то, что было бы недооценено в соответствии с лучшими практиками или это приемлемо?
function redirect($location) { echo "<meta http-equiv='refresh' content='0; url=$location' />"; }
Нет. В Википедии четко говорится:
Meta refresh – это обескураженный метод указания веб-браузера автоматически обновлять текущую веб-страницу или фрейм после заданного интервала времени …..
Мета-теги обновления имеют некоторые недостатки :
Я бы лично использовал функцию header (), тогда пользователю не нужно ждать загрузки другой страницы.
Я лично использую функцию header (), но Meta
просто обновляет страницу до этого URL-адреса перенаправления, поэтому у него есть шанс убить файлы cookie / сеансы, тогда как header()
работает только в том случае, если на вашем сайте ничего не опубликовано, прежде чем вы его используете. У них обоих есть взлеты и падения.
Это зависит от ваших потребностей.
Если вам нужно перенаправить пользователя после входа в систему, вы должны использовать перенаправление заголовка.
meta refresh не рекомендуется по причинам, упомянутым выше, но все же, если требуется, вы можете использовать meta refresh. например, показ объявления на вашем сайте, а затем после определенного количества секунд вы принудительно загружаете файл или перенаправляете его на новую страницу.
вот небольшой сценарий
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(); }