окно.location (JS) vs header () (PHP) для перенаправления

использование JS: (in <head> tag)

<script>window.location="https://stackoverflow.com";</script>

использование PHP: (in <head> tag)

header('Location: https://stackoverflow.com');
end();

какой из них я должен использовать ? или другой ?

и как насчет использования <meta>?

<meta http-equiv="refresh" content="0;url=https://stackoverflow.com"/> 

много хороших ответов , я не знаю, какой ответ я приму, спасибо

5 ответов


результат одинаков для всех вариантов. Перенаправлять.

<meta> в HTML:

  • показать содержимое вашего сайта, а затем перенаправить пользователя через несколько (или 0) секунд.
  • не нужен JavaScript включен.
  • не нужен PHP.

window.location в JS:

  • Javascript включен необходимо.
  • не нужен PHP.
  • показать содержимое вашего сайта, а затем перенаправить пользователя через несколько (или 0) считанные секунды.
  • перенаправление может зависеть от любых условий if (1 === 1) { window.location.href = 'http://example.com'; }.

header('Location:') в PHP:

  • не нужен JavaScript включен.
  • необходим PHP.
  • перенаправление будет выполнено первым, пользователь никогда не увидит, что будет после. header() должна быть первой командой в PHP-скрипте, перед выводом любой другой. Если вы попытаетесь вывести некоторые перед заголовком, получите Warning: Cannot modify header information - headers already sent

лучший способ установить местоположение в JS-через:

window.location.href = 'https://stackoverflow.com';

использовать PHP или JS для управления перенаправлением зависит от того, что делает ваш код и как. Но если вы в состоянии использовать PHP; то есть, если вы собираетесь использовать PHP для отправки некоторого кода JS обратно в браузер, который просто говорит браузеру идти куда-то еще, то логика предполагает, что вы должны вырезать среднего человека и сказать браузеру непосредственно через PHP.


Это зависит от того, как и когда вы хотите перенаправить пользователя на другую страницу.

Если вы хотите мгновенно перенаправить пользователь на другую страницу, не видя ничего из сайта между ними, вы должны использовать PHP header метод перенаправления.

Если у вас есть JavaScript и некоторые действия пользователя должен привести к тому, что он войдет на другую страницу, то есть когда вы должны использовать window.location.

на meta обновление тегов часто используется на сайтах загрузки, когда вы видите эти сообщения" ваша загрузка должна начинаться автоматически". Вы можете позволить пользователю загрузить страницу,подождите некоторое время, затем перенаправьте him (например, в загружаемый файл) без Javascript.


переадресация PHP лучше, если вы можете, как с JavaScript, который вы заставляете клиента загружать страницу перед перенаправлением, тогда как с PHP он отправляет правильный заголовок.

однако PHP не должен идти в

, он должен идти до того, как какой-либо вывод будет отправлен клиенту, так как в противном случае вызовет ошибки.

использование тегов имеет ту же проблему, что и Javascript, вызывая загрузку начальной страницы перед выполнением перенаправления. Серверные редиректы почти всегда лучше, если вы можете использовать их.


первый случай потерпит неудачу, когда JS выключен. Это также немного медленнее, так как JS должен быть проанализирован первым (DOM должен быть загружен). Однако JS безопаснее, так как пункт назначения не знает референта и Ваше перенаправление может быть отслежено (референты вообще не надежны, но это что-то).

вы также можете использовать обновление meta тег. Он также требует загрузки DOM.