2013-03-27 4 views
7

с помощью JS:<head> тег)window.location (JS) против заголовка() (PHP) для перенаправления

if(something) { 
echo'<script>window.location="http://stackoverflow.com";</script>'; 
end(); 
} 

с помощью PHP:<head> тег)

if(something) { 
header('Location: http://stackoverflow.com'); 
end(); 
} 

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

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

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

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

+2

Javascript перенаправляет при загрузке документа PHP перенаправляет, когда PHP начинает синтаксический анализ кода PHP, .htaccess (на серверах Apache) перенаправляет, как только приходит запрос. Чем скорее вы перенаправляете, тем лучше и не забудьте отправить правильный код (301 или 302 и т.д.). – adeneo

+0

Что относительно ''? @adeneo – l2aelba

+1

Избегайте метаобновления, как чума. – adeneo

ответ

13

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

<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
2

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

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

3

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

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

Использование <meta> теги имеют ту же проблему, что и Javascript, в результате чего начальная страница загружается перед выполнением перенаправления. Переадресации на стороне сервера почти всегда лучше, если вы можете их использовать.

+0

Но я pud JS в '', и я использую' end(); '(PHP) после что – l2aelba

+2

Действительно, вы должны сделать как можно больше своей работы PHP, прежде чем отправлять какой-либо вывод в браузер. Если вы попытаетесь сделать материал, включающий заголовки (например, перенаправления) после отправки вывода, это приведет к ошибке «не может изменить информацию заголовка». – krisnoble

8

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

if(something){ 
    window.location.href = 'http://www.site.com/'; 
} 

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

8

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

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

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

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

Смежные вопросы