- Не работает header()
- 1 ответ 1
- Всё ещё ищете ответ? Посмотрите другие вопросы с метками php или задайте свой вопрос.
- Связанные
- Похожие
- Подписаться на ленту
- Переход через header не работает
- 2 ответа 2
- Всё ещё ищете ответ? Посмотрите другие вопросы с метками php javascript html или задайте свой вопрос.
- Похожие
- Подписаться на ленту
- header (‘location: ..’) не работает
- Переход через header не работает
- 2 ответа 2
- Всё ещё ищете ответ? Посмотрите другие вопросы с метками php javascript html или задайте свой вопрос.
- Похожие
- Подписаться на ленту
- php Почему не работает редирект Warning: Cannot modify header information — headers already sent by. Ошибка Решение
- Primary tabs
- Forums:
- Описание частной проблемы
- Когда это бывает
- Корень проблемы
- Эксперимент
- Ещё раз уточним причину
- Key Words for FKN + antitotal forum (CS VSU):
- вопрос решился
- Но можно заставить работать и
- насчёт буферизации
Не работает header()
Странно. Но никуда не перенаправляет.
условие срабатывает. Если вместо header() поставить echo 1;, то оно отобразит.. Пробывал header(‘Location: /’); exit;, но тоже не перенаправляет никуда. В чём может быть проблема?
1 ответ 1
В том, что вы отправляете заголовки после того, как у вас был вывод на страницу, а предупреждения что headers already sent вы игнорируете настройками. «Для решения этой проблемы нужно функцию header() и всю логику, которая ее вызывает, поместить ДО любого вывода в броузер. Просто перенести повыше в скрипте. Ведь вы всё равно перенаправляете браузер. То есть, никакой текст всё равно не будет выведен! Значит, и выводить что-то одновременно с заголовком Location нет смысла. Правильно планируйте структуру своего скрипта: блок, который обрабатывает POST, не должен ничего выводить в браузер.»
Всё ещё ищете ответ? Посмотрите другие вопросы с метками php или задайте свой вопрос.
Связанные
Похожие
Подписаться на ленту
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.10.18.40487
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Источник
Переход через header не работает
Здравствуйте! Такая проблема не работают переходы через header, сам код работает, выдает ошибки и регистрирует.
Текст ошибки: Warning: Cannot modify header information — headers already sent by (output started at E:\Programmes\OpenServer\OSPanel\domains\Registr\views\layouts\header.php:1) in E:\Programmes\OpenServer\OSPanel\domains\Registr\scripts\registration.php on line 85
Сам код: registration.php
2 ответа 2
Проверьте как вы сохранили файл. Если в кодировке utf-8 c BOM, то пересохраните без него. Так же посмотрите, чтобы небыло пустых символов перед тегом
Проблема решилась изменением параметра output_buffering = 0 на output_buffering = 4096 в файле php.ini . После измениения не забудьте перезагрузить сервер!
Всё ещё ищете ответ? Посмотрите другие вопросы с метками php javascript html или задайте свой вопрос.
Похожие
Подписаться на ленту
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.10.18.40487
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Источник
header (‘location: ..’) не работает
(1) Я загружаю свой веб-сайт на удаленный веб-сервер.
(2) Шаблонная система сайта настроена таким образом, что все страницы формируются путем отправки запросов с index.php url в index.php
(3) Загрузка начальных страниц. Эта страница определяет местоположение следующей страницы, оценивая значение ее формы.
(4) Перенаправление на следующую страницу выполняется путем создания header(‘location: next_page’) : header(‘location: next_page’)
(5) По какой-то причине перенаправление не выполняется. Вот как выглядит код:
РЕШИТЬ
Это было дело в том, что у вас есть пробел после ?> Где-то еще в коде. Это было показано мне после размещения следующих команд в верхней части кода:
Я хотел бы поблагодарить всех людей, которые пытались помочь.
Похоже, вы эхо-текст в браузере перед отправкой заголовка («location»). Вы не можете отправлять контент в свой браузер перед выполнением заголовка (), так как ваше эхо приведет к отправке заголовка. Прокомментируйте эти строки и посмотрите, работает ли это:
Теперь ваш заголовок будет отправлен, и вы будете перенаправлены.
добавьте этот код в первый код:
Вы можете попробовать использовать javascript для перенаправления страницы:
Является ли простой PHP-скрипт следующим:
Вы также должны убедиться, что путь кода с $path_choice != null и $form->is_connected() === true действительно принят, потому что ваши состояния ошибок не устанавливают HTTP-заголовки вообще.
Я вижу «destroy_session ()», вы используете session_start () где-то? Убедитесь, что контент NO (включая (cookie) сеанса) уже отправлен.
Советы по отладке: установите error_reporting (E_ALL) (включая E_NOTICE). Это даст вам строку, по которой отправляются заголовки.
Другие источники проблем: – BOM – дополнительные строки перед включением файла
Я считаю, вам нужно проверить ваш if-stack и убедиться, что вы попадаете в каждый из ваших циклов. Поместите эхо после каждого оператора if, чтобы удостовериться, что заголовок () даже оценивается, ваш цикл пролонгирован раньше, чем вы ожидаете.
Мой подозреваемый связан с использованием null и $ path_choice! = Null. Вы пробовали is_null () или isset (), поскольку они были специально разработаны для проверки, является ли переменная нулевой. Кроме того, операнд! == может работать и в этом случае, но я не уверен, если PHP имеет это.
Убедитесь, что перед php-файла у вас нет места. Это может помочь, если вы изменили тип кодировки файла на UTS_8 без спецификации и backspace непосредственно перед и убедитесь, что у вас нет session start() после чего-либо в файле. Это должно быть сразу после
Просто попробуйте это. это будет работать
вместо header(«location: index.php»);
Просто убедитесь, что перед вашим PHP-кодом у вас нет места, потому что это имеет значение.
Ну, если вы все попробуете, этот пример может помочь (HTML / PHP):
Убедитесь, что в начале кода не должно быть пробелов
Удалите пространство из первой строки так, что должно быть в первой строке.
Источник
Переход через header не работает
Здравствуйте! Такая проблема не работают переходы через header, сам код работает, выдает ошибки и регистрирует.
Текст ошибки: Warning: Cannot modify header information — headers already sent by (output started at E:\Programmes\OpenServer\OSPanel\domains\Registr\views\layouts\header.php:1) in E:\Programmes\OpenServer\OSPanel\domains\Registr\scripts\registration.php on line 85
Сам код: registration.php
2 ответа 2
Проверьте как вы сохранили файл. Если в кодировке utf-8 c BOM, то пересохраните без него. Так же посмотрите, чтобы небыло пустых символов перед тегом
Проблема решилась изменением параметра output_buffering = 0 на output_buffering = 4096 в файле php.ini . После измениения не забудьте перезагрузить сервер!
Всё ещё ищете ответ? Посмотрите другие вопросы с метками php javascript html или задайте свой вопрос.
Похожие
Подписаться на ленту
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.10.18.40487
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Источник
php Почему не работает редирект Warning: Cannot modify header information — headers already sent by. Ошибка Решение
Primary tabs
Forums:
Описание частной проблемы
После нажатия на кнопку выводится ошибка:
Код аналогичен приведённому в данной теме:
Когда это бывает
Ошибка (предупреждение) типа:
Warning: Cannot modify header information — headers already sent by
Возникает, если вы уже сделали что-то что требует установки заголовков браузера, а теперь хотите переписать их новыми. Например, если вы уже вывели текст — то php выставляет заголовки (в частности заголовок Location — которые показывает оставаться ли на запрошенной странице или же нужно нужно перейти на другую страницу и уже там получить ответ на запрос), чтобы показаться браузеру клиента (в своём ответе) как себя вести.
Корень проблемы
Помните, что функцию header() можно вызывать только если клиенту еще не передавались данные. То есть она должна идти первой в выводе, перед ее вызовом не должно быть никаких HTML тэгов, пустых строк и т.п. Довольно часто возникает ошибка, когда при чтении кода файловыми функциями, вроде include или require, в этом коде попадаются пробелы или пустые строки, которые выводятся до вызова header(). Те же проблемы могут возникать и при использовании одиночного PHP/HTML файла.
— то есть необходимо избавить скрипт-обработчик от html — ведь он по сути сам ничего не выводит а просто перебрасывает на другой адрес — это первое.
Далее, на самом деле заголовок Location следует менять так:
Эксперимент
Так как echo() вообще-то пишет в тело http ответа, а не в заголовки, а header возвращается void (то есть не возвращает значений), о чём было сказано выше, то смысла в использовании echo() нет, но
— тем не менее, предлагаю провести эксперимент:
- уберите html
- не убирайте echo
— так как header() вызывается у вас по сути до echo() (так как header() является аргументом echo()) а значит возврат — заодно проверим если функция возвращает null — будет ли это интерпретироваться как пустая строка или же (что вернее) echo даже не начнёт работать как уже произойдёт редирект.
Ещё раз уточним причину
Т.е. перед вызовом header() не должен выводиться никакой контент ( о чем написано к описанию функции: http://php.net/manual/ru/function.header. )
- 1) ни с помощью echo
- 2) ни с помощью обычного вываливания в браузер html-текста.
В нашем случае судя по всему echo не влияет ни на что, а вот html в обработчике очень даже влияет.
Key Words for FKN + antitotal forum (CS VSU):
Thu, 05/04/2017 — 14:00
вопрос решился
По Вашему совету были удалены теги HTML. Теперь переадресация происходит корректно, скрипт-обработчик выглядит так:
Функция echo действительно не влияет на работу, т.е . можно оставить и как у С. Хольцнера:
Также при оформлении кода для редиректа следует обратить внимание на расширение файла, на который производится переход: при предложенном синтаксисе, оно должно быть указано в аргументе header.
Thu, 05/04/2017 — 14:21
Но можно заставить работать и
Но можно заставить работать и предыдущий обработчик
если выставить в файле php.ini опцию
Thu, 05/04/2017 — 14:32
насчёт буферизации
По — умолчанию никакой буферизации вывода нет ( если, конечно вы не нашаманили в файле php.ini и не присвоили директиве output_buffering значение On ) и PHP отсылает данные юзеру, сразу, как только они готовы. Согласно протоколу HTTP, сервер в ответ на запрос пользователя, должен сначала отправить ему служебные заголовки, а уже после, тело страницы. А тут внезапно, в коде вы опять пытаетесь заставить его отправить HTTP — заголовки, вызывая, скажем функцию session_start() — после удачной авторизации. Ясен пень — повторная отправка заголовков запрещена, HTTP — протокол так не работает! Но что ж делать то? Если после вывода на странице, нужно ещё и сессию стартануть и кУку поставить? — Вспоминаем про буферизацию вывода.
— то есть когда выставлен ненулевой размер буфера, то пока он не заполнится ещё есть возможность манипулировать заголовками. При нулевом же размере буфера, после вывода контента, его отдача сразу же предваряется передачей клиенту заголовков http-ответа.
И получается, что мы хотим изменить заголовки, которые уже «улетели» по сети клиенту (а значит, исправить их уже невозможно — в частности заголовок Location, который указывает оставаться ли на запрошенной странице, или запросить другую — ответ скрипта-«перенаправителя» (у нас это обработчик формы) как раз говорит о том, что надо запросить другую страницу), о чем php нас и предупреждает.
Но: решать проблему таким способом конечно нельзя (не сильно корректно, точнее).
_____________
матфак вгу и остальная классика =)
Источник