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

Сервис обмена электронных валют

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

Функция header

#1 cap4369

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

Отправлено 14 Ноябрь 2013 - 15:20

Здравствуйте!
Делаю регистрацию на сайте. Для того чтобы в Firefox не отображалось окно подтверждения "Отправить заново" сделал редирект на текущую страницу. Однако, появляется информация об ошибке следующего содержания: "Warning: Cannot modify header information - headers already sent by (output started at Z:\home\lapkovsky\www\header.php:10) in Z:\home\lapkovsky\www\classes\form_reg.php on line 15". Я понимаю, что где- то есть вывод в браузер до вызова функци header(). Однако, в данном скрипте до нее ничего не выводится. Может ли влиять предыдущий вывод хедера и меню если они выводятся другими скриптами? Сам скрипт регистрации, вернее его реализованная часть, то есть внесение пользователя в БД и отправка сообщения на почтовый сервер осуществляется, но коряво, с отображением указанной ошибки. Бьюсь над ее устранением второй день, не могу ее устранить. Помогите разобраться, что я не так делаю?

Прикрепленные файлы

  • Прикрепленный файл  form_reg.php   2,07К   Количество загрузок: 120
  • Прикрепленный файл  functions.php   2,86К   Количество загрузок: 107

 

 

  • 0

#2 alexks24kz

alexks24kz
  • Пользователь
  • 65 сообщений
  • Репутация: 10

Отправлено 14 Ноябрь 2013 - 20:23

Насколько помню, обработчик POST-a не должен ничего выводить, когда используете header("Location: урл"); А у вас в обработчике functions есть echo.
  • 0

#3 cap4369

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

Отправлено 14 Ноябрь 2013 - 21:22

Спасибо за ответ. В обработчике functions.php присваиваются значения переменным, а выводятся в браузер они после функции header() в файле формы, посмотрите внимательней.
  • 0

#4 alexks24kz

alexks24kz
  • Пользователь
  • 65 сообщений
  • Репутация: 10

Отправлено 15 Ноябрь 2013 - 07:26

Тогда вы всех запутали - где код файла header.php? Он ведь указан в ошибке.
  • 0

#5 fedornabilkin

fedornabilkin
  • Пользователь
  • 696 сообщений
  • Репутация: 91

Отправлено 15 Ноябрь 2013 - 08:49

Можно сделать костыль, если не получается обнаружить предыдущий вывод в браузер.
Проверить, если заголовки не отпраавлены, то редиректить заголовком, если отправлены, то можно яваскриптом, например.
if (!headers_sent()) {
    header(“Location: newpage.php”);
}
else{
echo '<script>document.location("/newpage.php")</script>';
}

  • 0
Как часто в горестной разлуке,В моей блуждающей судьбе, ФО, я думал о тебе.


#6 cap4369

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

Отправлено 15 Ноябрь 2013 - 17:06

А поподробнее можно? То есть если вывод в браузер существует и его невозможно обнаружить и (или) как- то исправить, можно обойти это с помощью приведенного Вами java скрипта? То есть вместо newpage.php (как у Вас) указать свою страницу, на которую необходим редирект? Попробую...
  • 0

#7 Ixman

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

Отправлено 15 Ноябрь 2013 - 18:32

Я думаю изначально не надо говнокодить и использовать костыли, что у вас в файле header.php? Что-то я его упоминание в прикреплённых файлах не встретил ни где. Всего скорее в нём проблема
  • 0


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