PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (5): « 1 [2] 3 4 5 »   

> Без описания
Champion Супермодератор
Отправлено: 15 Декабря, 2009 - 11:17:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 4353
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




В связи с участившимися случаями этого заболевания, думаю, стоит написать небольшую инструкцию, как от этого лечиться. Ну, лекарство номер 1 - это Гугл и Яндекс, но кому лень анализировать многочисленные рутинные обсуждения этой проблемы, вот вам краткая памятка, которая все вопросы должна снимать.

Итак, у на появилась такая вещь:
Cannot send session cookie - headers already sent by (output started at script1.php:1 [ * ]) in script2.php on line 2 [ ** ]
Нам сообщают, что заголовки уже были посланы и больше нельзя. Заголовки могут встречаться только один раз в начале документа.
Написано на какой строке в каком скрипте начался вывод в браузер(отмечано пушистой звездочкой) и на какой строке мы попытались послать заголовок (отмечено 2 пушистыми звездочками).

После вывода информации в браузар слать заголовки нельзя. Остается только осмыслить, что такое вывод в браузер. Да-да, если вы это читаете, то вы это не осмыслили.
* команды вывода php (echo, print...)
* различные warnigs, notices, которые произошли в результате других операций в скрипте.
* ЛЮБЫЕ СИМВОЛЫ, расположенные до <?php. Это и пробелы, и энтеры, и невидимый символ BOM.

Википедия про BOM пишет:
Этот способ позволяет различать UTF-16LE и UTF-16BE, поскольку символа U+FFFE не существует. Также он иногда применяется для обозначения формата UTF-8, хотя к этому формату и неприменимо понятие порядка байтов. Файлы, следующие этому соглашению, начинаются с таких последовательностей байтов:

UTF-8
EF BB BF
UTF-16BE
FE FF
UTF-16LE
FF FE
UTF-32BE
00 00 FE FF
UTF-32LE
FF FE 00 00

Короче, скрипты, написанные в UTF-8 следует сохранять без BOM и во многих текстовых редакторах есть эта возможность. Всё.
 
 Top
IgVlGr
Отправлено: 23 Апреля, 2011 - 14:23:58
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




Все равно не пойму, почему никто не делает буферизацию вывода!!!????
 
 Top
OrmaJever Модератор
Отправлено: 23 Апреля, 2011 - 20:01:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 7550
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




IgVlGr пишет:
Все равно не пойму, почему никто не делает буферизацию вывода!!!????

почему не кто не обновляется на 5.3?
У меня ещё вопрос к знающим людям:
Зачем придумали BOM стмволы? какая у них функция?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
EuGen Администратор
Отправлено: 23 Апреля, 2011 - 20:04:34
Post Id


Профессионал


Покинул форум
Сообщений всего: 9098
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




http://ru[dot]wikipedia[dot]org/wiki/UTF-8
Цитата:

Многие программы Windows (включая Блокнот) добавляют байты 0xEF, 0xBB, 0xBF в начале любого документа, сохраняемого как UTF-8. Это метка порядка байтов Юникода (англ. Byte Order Mark, BOM), также её часто называют сигнатурой (соответственно, UTF-8 и UTF-8 with Signature). По наличию сигнатуры программы могут автоматически определить, является ли файл закодированным в UTF-8, однако файлы с такой сигнатурой могут некорректно обрабатываться старыми программами, в частности xml-анализаторами. Такие редакторы, как Notepad++, Notepad2 и Kate позволяют явно указывать, следует ли добавлять сигнатуру при сохранении UTF-файлов.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
OrmaJever Модератор
Отправлено: 23 Апреля, 2011 - 20:13:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 7550
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




EuGen пишет:
Многие программы Windows (включая Блокнот)

Ясно микрософт как всегда отличились Хм
EuGen пишет:
По наличию сигнатуры программы могут автоматически определить, является ли файл закодированным в UTF-8

Но ведь без этих 3 бафтов програмы тоже могут отличить в какой кодировке файл! От них толку ноль? Однако


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
EuGen Администратор
Отправлено: 23 Апреля, 2011 - 20:14:54
Post Id


Профессионал


Покинул форум
Сообщений всего: 9098
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Ну Вы же сами ответили на свой вопрос:
OrmaJever пишет:
Ясно микрософт как всегда отличились


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Champion Супермодератор
Отправлено: 23 Апреля, 2011 - 20:24:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 4353
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Есть такие кодировки как UTF-16LE и UTF-16BE, они отличаются тем, что в них разный порядок байт - в одной сначала старший байт, в другой - младший. Вот чтоб это отличить вставляется BOM. Зачем он в UTF-8 - я не понимаю)
 
 Top
Ангел Тьмы
Отправлено: 25 Апреля, 2011 - 21:08:17
Post Id



Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




У меня проблема, либо использовать сессию, или куки) одновременно ошибку выдаёт. ( помогите))
 
 Top
ASDA
Отправлено: 07 Мая, 2011 - 21:38:58
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




а в таком редакторе, как "svoi.net:php Edit", кто-нибудь знает, как сохранять UTF-8 без БОМ?
никак не могу найти Огорчение
хотя там есть возможность показать невидимые символы. но после нажатия ничего не показывает(
может у меня какая-то другая ошибка?
Вот код:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <?php
  6. $_SESSION['username']=$_POST["name"];
  7. echo "Hi,".$_SESSION['username']."<br>";
  8. ?>
  9. <A href="s2.php">On the next page</A>
  10. </body>
  11. </html>


и в результате выдаются ошибки:
Цитата:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at Z:\denwer\www\denwer\new\s1.php:6) in Z:\denwer\www\denwer\new\s1.php on line 7

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\denwer\www\denwer\new\s1.php:6) in Z:\denwer\www\denwer\new\s1.php on line 7
 
 Top
molchun201
Отправлено: 07 Мая, 2011 - 21:56:39
Post Id



Посетитель


Покинул форум
Сообщений всего: 295
Дата рег-ции: Февр. 2011  
Откуда: Менеск


Помог: 5 раз(а)




Вот так делай и всё, нельзя html или любой другой вывод делать до session_start();
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $_SESSION['username']=$_POST["name"];
  4. echo "Hi,".$_SESSION['username']."<br>";
  5. echo "<a href="s2.php">On the next page</a>";
  6. ?>
  7.  

и тэги пишите не <A> а <a>


-----
Обрамляйте код тегами и читайте
 
 Top
ASDA
Отправлено: 07 Мая, 2011 - 22:18:13
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Спасибо огромное, molchun201
Закатив глазки
 
 Top
KuPbI4
Отправлено: 23 Октября, 2011 - 12:26:25
Post Id


Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




У меня возникла та же проблема.
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\lab1\www\index.php:5)
index.php
Спойлер (Отобразить)

graf.php
Спойлер (Отобразить)

Ошибка указывает на пятую строку, это окончание строки функции вывода echo " ";
Но я тут не пойму где тут лишняя строка или лишний пробел, вообще не могу найти.
Перекодировал конечно в Notepad++ в UTF-8 без BOM - безрезультатно, даже пробовал буферизацию - ob_start(); и ob_flush();.
Есть какие то варианты решения этой проблемы?
 
 Top
SAD
Отправлено: 23 Октября, 2011 - 12:36:34
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2528
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




мдэээ.
вы вообще то подключили файл, в котором происходит вывод информации - этого недостаточно?
 
 Top
KuPbI4
Отправлено: 23 Октября, 2011 - 12:41:45
Post Id


Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




SAD пишет:
мдэээ.
вы вообще то подключили файл, в котором происходит вывод информации - этого недостаточно?

Давайте не будем переходить на личности типа "мдэээ" и т.д.
Если без подключения файл, то ошибок нет, это я знаю.
Мне бы хотелось, чтоб когда мы введем в поле ввода и жмем, и на одной той же странице выводился график и все. Если это невозможно, то отключу файл, и проблема решена.
 
 Top
Tox
Отправлено: 29 Февраля, 2012 - 21:06:06
Post Id



Посетитель


Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011  
Откуда: Россия


Помог: 0 раз(а)




Парни, а вот такой вопрос - юзаю Notepad++, выбрал кодировку UTF-8 (без BOM).
В файле есть форма с кнопкой
CODE (html):
скопировать код в буфер обмена
  1. <input type="submit" name="submit" value="Сохранить">

так вот вместо "сохранить" выводит абракадабру. Как вылечить?


-----
In Console We Trust. Code hard. Or die.
 
 Top
Страниц (5): « 1 [2] 3 4 5 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB