Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Исполнение функции
Форумы портала PHP.SU » » Вопросы новичков » Исполнение функции

Страниц (2): [1] 2 »
 

1. Nizz - 24 Августа, 2017 - 15:05:25 - перейти к сообщению
Доброго времени суток ув. форумчане. Я долго думал как лаконично изложить свою трудность.
Надеюсь, что мне это удастся:
PHP:
скопировать код в буфер обмена
  1.  
  2. function Products_Close (){
  3.  unset($_SESSION['products']);
  4.    exit(header('Location: /home'));
  5. }
  6.  

Функция работает в самом верху до

Если я вставляю ее в скрипте, то она не работает корректно, а именно : редиректа не происходит и сессия не очищается. Код срабатывает лишь при повторном обновлении страницы.
И собственно всплывает такая ошибка
PHP:
скопировать код в буфер обмена
  1.  
  2. PHP Warning:  Cannot modify header information - headers already sent by (output started at /home)
  3.  

Подскажите пожалуйста как решить мне данную проблему.
2. Строитель - 24 Августа, 2017 - 15:24:07 - перейти к сообщению
Nizz пишет:
Функция работает в самом верху
Ну правильно. Она и должна отрабатывать до начала любого вывода в браузер. Если очень хочется переместить её вызов ниже (т.е., после какого либо вывода), то используйте буферизацию вывода.
3. Nizz - 24 Августа, 2017 - 15:36:45 - перейти к сообщению
Строитель нашел информацию о ob_start.
Насколько понимаю для использования достаточно написать следующее:

Но у меня все-равно не работает;
Помогите пожалуйста.
4. Строитель - 24 Августа, 2017 - 15:44:12 - перейти к сообщению
Nizz, посмотрите здесь: http://php-zametki[dot]ru/php-nachin[dot][dot][dot]ciya-vyvoda[dot]html
Всё подробно описано с примерами.
5. Nizz - 24 Августа, 2017 - 15:56:16 - перейти к сообщению
Строитель Спасибо вам за наводку и помощь. Надеюсь разберусь ))
(Добавление)
Извините пожалуйста, но либо я не правильно исполняю код, либо все-равно не работает
PHP:
скопировать код в буфер обмена
  1.  
  2.      ob_start();
  3.      exit(header('Location: /home'));
  4.      ob_end_flush();
  5.  

Редиректа не происходит. Укажите если не сложно на ошибку ?
6. Строитель - 24 Августа, 2017 - 16:30:04 - перейти к сообщению
Nizz пишет:
Редиректа не происходит
Редиректа не происходит? Или вывода в браузер не происходит? Вот этот вариант попробуйте
Судя по адресу, перед вами откроется страница google.
7. Nizz - 24 Августа, 2017 - 16:40:37 - перейти к сообщению
Строитель спасибо вам за отзывчивость. Но редиректа нет.
Ошибка при этом
PHP:
скопировать код в буфер обмена
  1.  
  2. PHP Warning:  Cannot modify header information - headers already sent by
  3.  

Сохраняется.
Единственная зацепка: меняется вид страницы (Урезается контент) на котором происходит обработка скрипта. Я уже два дня мучаюсь и не могу понять из-за чего это происходит.
8. Строитель - 24 Августа, 2017 - 16:54:34 - перейти к сообщению
Nizz, а вы уверены, что именно в этом файле выполняется ваш код? Может быть выше по коду есть другие конструкции включений (инклуды)? И ещё, посмотрите в файле конфигурации вашего сервера, включена ли буферизация вообще?

В php.ini найдите строку:

output_buffering 1

Если вместо 1 там стоит 0, то замените его на 1.
Если перед output_buffering стоит точка с запятой ";", то удалите её.
(Добавление)
Nizz, и ещё не помешало бы посмотреть, как именно вы записываете код, и куда.
(Добавление)
Кстати, в конце этого текста с ошибкой PHP Warning: Cannot modify header information - headers already sent by должен быть указан номер строки - напишите мне, что прописано в строке вашего файла, соответствующей номеру из сообщения об ошибке.
9. Nizz - 24 Августа, 2017 - 17:17:59 - перейти к сообщению
Строитель Весь обработчик получился слишком сложный и я (уже), уверен, что не правильная работа связана из-за неправильного построения функций. Я мог бы скинуть весь код, но я не уверен, что кто-то захочет в нем копаться.
10. Строитель - 24 Августа, 2017 - 17:22:31 - перейти к сообщению
Nizz пишет:
Строитель Весь обработчик получился слишком сложный и я (уже), уверен, что не правильная работа связана из-за неправильного построения функций. Я мог бы скинуть весь код, но я не уверен, что кто-то захочет в нем копаться.
Ну, тогда хотя бы убедитесь, что старт буферизации у вас прописан ДО начала какого либо вывода в браузер.
11. Nizz - 24 Августа, 2017 - 17:37:05 - перейти к сообщению
Да спасибо. Ругается к слову на первые тэги php, но стоит без BOM метки. Так, что я не много в ступоре.
(Добавление)
Пускай я и не решил проблему, но все-равно огромное вам спасибо за отзывчивость и попытки помочь.
12. Строитель - 24 Августа, 2017 - 17:39:29 - перейти к сообщению
Nizz пишет:
Да спасибо. Ругается к слову на первые тэги php, но стоит без BOM метки. Так, что я не много в ступоре.
Всё, что вам осталось сделать, так это преобразовать кодировку вашего пхп файла в UTF-8 без BOM. Сделать это можно например, в простом редакторе Notepad++
13. MouseZver - 24 Августа, 2017 - 17:40:14 - перейти к сообщению
значит не везде utf8 есть родительский скрипт с кодировкой анси
14. Nizz - 24 Августа, 2017 - 17:41:22 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. in /c//s/p/f on line 107
  2. [PHP]
  3. exit(header('Location: /home'));
  4.  

Вот на что ругается, ошибся
15. Строитель - 24 Августа, 2017 - 17:42:48 - перейти к сообщению
UPD: "без BOM" -- файл в правильной кодировке? Тогда проверьте, что бы перед открывающим пхп-тегом "<?php" не было никаких символов (даже пробелов), и что бы он находился на самой первой строке.

 

Powered by ExBB FM 1.0 RC1