Перейти к содержимому



Функция header

#1

Поделиться сообщением #1



mac

mac
  • Неактивные
  • 53 сообщений
  • Репутация: 0
0

Отправлено 14 Октябрь 2008 - 22:51

Народ помогите разобраться: когда работает функция header();
Я прочитал инфу и так понял, что когда еще не отосланы заголовки HTML.
Заголовки HTML - это только тэги <meta>, или еще и <title> относится?
Заранее всем спасибо!..

 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Форма обратной связи
  2. Проблема с header ("Location: $url")
  3. Header ("Location: $url")
  4. Проблема с header
  5. Функция header

#2

Поделиться сообщением #2



Vialls

Vialls
  • Неактивные
  • 581 сообщений
  • Репутация: 1

Отправлено 15 Октябрь 2008 - 04:59

Заголовков очень много всяких... Читай про HTTP протокол и загловки... Можно например отправить загловок HTTP-ошибки 404:
heeader("HTTP/1.0 404 Not Found");
и на странице будет, ЯКОБЫ не найдена страница :)
  • 0

#3

Поделиться сообщением #3



mac

mac
    Topic Starter
  • Неактивные
  • 53 сообщений
  • Репутация: 0

Отправлено 15 Октябрь 2008 - 10:45

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


  • 0

#4

Поделиться сообщением #4



Vialls

Vialls
  • Неактивные
  • 581 сообщений
  • Репутация: 1

Отправлено 15 Октябрь 2008 - 12:57

Эту функцию можно использовать до вывода каких либо данных на страницу =) Сами посудите, вы написали допустим:
<?php
  echo "123";
  header("HTTP/1.0 404 Not Found");
?>
и как тут серваку поступать? ))
И кстате при объеденении PHP кода с HTML приведет к той же проблеме :).. Т.е. так работать не будет:
<b>=)</b>
<?php
  header("HTTP/1.0 404 Not Found");
?>

  • 0

#5

Поделиться сообщением #5



mac

mac
    Topic Starter
  • Неактивные
  • 53 сообщений
  • Репутация: 0

Отправлено 15 Октябрь 2008 - 14:15

А что делать, если надо перекинуть пользователя автоматически на этуже страницу но с другими данными, т.е. например:
пользователь находится на странице index.php?page=25 и мне нужно, чтобы при нажатии определенной ссылки сначало произошло определенное действие на этой странице, а после автоматически произошол переход на страницу index.php?page=24. Как это можно реализовать?


  • 0

#6

Поделиться сообщением #6



mac

mac
    Topic Starter
  • Неактивные
  • 53 сообщений
  • Репутация: 0

Отправлено 15 Октябрь 2008 - 15:21

Всем спасибо за помощь, разобрался.
Нужно использовать javascript и все работает:
document.location.href="my_adress";
  • 0

#7

Поделиться сообщением #7



Vialls

Vialls
  • Неактивные
  • 581 сообщений
  • Репутация: 1

Отправлено 15 Октябрь 2008 - 16:08

Это геморно :huh: Но кому, как.. Я бы лучше с заголовками потра*лся :D


  • 0

#8

Поделиться сообщением #8



ZiTosS

ZiTosS
  • Неактивные
  • 5 148 сообщений
  • Репутация: 8

Отправлено 15 Октябрь 2008 - 16:22

Нет вопрос на этом не решён! Использование JS для переадресации не уместно, его можно просто отключить в настройках браузера. Есть несколько вариантов использования header()
1) Кешируем HTML и всё выводимое в окно браузера с помощью ob_start() (т.е. кидаем всю поступающую информацию в виртуальный буфер обмена), а вывод осуществляем только после формирования всей страницы. (Очень затормаживает работу скрипта, т.к. страница выводится в самом конце)
Пример
ob_start();
echo "Выводим текст";
// А теперь перебрасываем
header("location:".$_SERVER['PHP_SELF']);
exit();

2) Обычно перенаправление осуществляется после выполнения каких-либо действий, который лучше вынести в отдельный файл, и включить этот файл в самый топ главной страницы. То есть сначала у вас идут какие-то функции и их вызов, либо просто сплошной код по условию. А потом уже сам контент который надо формировать из этих условий.
Тогда заголовки не будут конфликтовать, так как они будут задававться всегда раньше, чем вывод инфы на страницу.

Ещё замечу, я не зря использую в связке с функцией header() функцию exit(). Функция exit() завершает выполнение скрипта в данной строке. Если мы не поставим данную функцию, скрипт продолжит выполняться даже после перенаправления на другую страницу и приведёт к сложным последствиям.
  • 0

#9

Поделиться сообщением #9



mac

mac
    Topic Starter
  • Неактивные
  • 53 сообщений
  • Репутация: 0

Отправлено 15 Октябрь 2008 - 20:19

Спасибо за совет, будем его реализовывать на практике...


  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru