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

Реферальная программа Мегаплана

Партнерская программа Kredov

Функция header

#1 mac

mac
  • Пользователь
  • 53 сообщений
  • Репутация: 0
0

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

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

 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Заголовок From в функции mail()
  2. Header ("Location: $url")
  3. Решение проблемы "Cannot add header information - headers already sent"
  4. Проблема с header
  5. Функция header

#2 Vialls

Vialls
  • Пользователь
  • 581 сообщений
  • Репутация: 1

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

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

#3 mac

mac
    Topic Starter
  • Пользователь
  • 53 сообщений
  • Репутация: 0

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

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


  • 0

#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 mac

mac
    Topic Starter
  • Пользователь
  • 53 сообщений
  • Репутация: 0

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

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


  • 0

#6 mac

mac
    Topic Starter
  • Пользователь
  • 53 сообщений
  • Репутация: 0

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

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

#7 Vialls

Vialls
  • Пользователь
  • 581 сообщений
  • Репутация: 1

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

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


  • 0

#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 mac

mac
    Topic Starter
  • Пользователь
  • 53 сообщений
  • Репутация: 0

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

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


  • 0

robot

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


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