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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Cannot send session cookie - headers already sent by ... [4]

 PHP.SU

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


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

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



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 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
Muxa
Отправлено: 09 Мая, 2012 - 11:29:51
Post Id



Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Март 2012  
Откуда: Россия, Тверь


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




сразу после коннекта
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. mysql_query("set names utf8");
  3.  

htaccess создать одна минута Подмигивание файл с именем .htaccess - туда вписываешь строку с дефолтной кодировкой
 
 Top
imya
Отправлено: 11 Сентября, 2012 - 21:26:49
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


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




Наконец-то решил зарегистрироваться, а то везде проблема эта описана одинаково и всё равно ничего не помогает. Итак, суть проблемы: есть тестовое задание(сайт с регистрацией, формой входа, личным кабинетом и формой обратной связи), в регистрации косяки, личный кабинет не особо выводится из-за того, что в нужном файле выскакивает ошибка вышеописанная, привожу коды файлов.
Да, забыл, все файлы через notepad++ преобразовал в utf-8 без BOM. Растерялся
index.php
PHP:
скопировать код в буфер обмена
  1. <?PHP session_start();?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <title>
  7. <?PHP $title="Главная";
  8. echo $title;?></title>
  9. <link rel="stylesheet" href="css/style.css" />
  10. </head>
  11. <body>
  12. <div class="wrapper">
  13.     <div class="head">
  14.         <div class="user">
  15.         <?PHP
  16.                
  17.                  echo 'Hello,'.$_SESSION['firstname'];
  18.                 ?>
  19.         </div>
  20.     </div>
  21.                 <div class="left_menu">
  22.            <h3>Главное меню</h3>
  23.                 <ul>
  24.                         <li><a href="/">Главная</a></li>
  25.                         <li><a href="#">Контакты</a></li>
  26.                         <li><a href="index.php?cab=1">Личный кабинет</a></li>
  27.                         <li><a href="index.php?log=1">Вход</a> /<a href="<?PHP session_destroy();?>">Выход</a></li>
  28.                 </ul>
  29.         </div>
  30.         <div class="content">
  31.     <?PHP
  32.                 if ($_GET['log']==1)
  33.                         require('log.php');
  34.                 if ($_GET['reg']==1)
  35.                         require('reg.php');
  36.                 if ($_GET['cab']==1)
  37.                         require('privat_akk.php');
  38.          ?>
  39.    
  40.    
  41.    
  42.     </div>
  43.     <div class="clear"></div>
  44.     <div class="footer">
  45.     <div class="copy"> Copyright © 2012 by me</div>
  46.     </div>
  47. </div>
  48. </body>
  49. </html>


private_akk.php
PHP:
скопировать код в буфер обмена
  1. <?PHP session_start();
  2. require('db.php');
  3. $row=mysql_query("SELECT * FROM `users`;") or die("Bad");
  4. $res=mysql_fetch_assoc($row);
  5. if ($_SESSION['login']==$res['login'])
  6. {
  7. ?>
  8. <div class="cabinet">
  9. <form name="cabinet" method="post" action="save_private.php">
  10. Ваша фамилия:<input type="text" name="firstname" value="<?PHP echo $res['firstname'] ?>" placeholder="Ваш фамилию" />
  11. Ваше имя:<input type="text" name="lastname" value="<?PHP echo $res['lastname'] ?>" placeholder="Ваш имя" />
  12. Ваш логин:<input type="text" name="login" value="<?PHP echo $res['login'] ?>" placeholder="Ваш логин" />
  13. Ваш пароль:<input type="text" name="password" value="<?PHP echo $res['pass'] ?>" maxlength="16" placeholder="Ваш пароль" />
  14. Ваш e-mail:<input type="text" name="email" value="<?PHP echo $res['email'] ?>" placeholder="Ваш e-main" />
  15. Ваша дата рождения:<input type="text" name="date" value="<?PHP echo $res['date'] ?>" placeholder="Ваш дату рождения" />
  16. Ваш моб. телефон:<input type="text" name="mobile" value="<?PHP echo $res['mobile'] ?>" placeholder="Ваш телефон" />
  17. Выберите аватарку:<input type="file" name="avatar"  value="<?PHP echo $res['avatar'] ?>" />
  18. <input type="submit" name="register" value="Изменить настройки" />
  19. </form>
  20. </div>
  21. <?PHP }
  22. ?>


Собс-но сама ошибка:
Цитата:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\smkvizion\www\index.php:7) in Z:\home\smkvizion\www\privat_akk.php on line 1
Success

Ещё, вот вопрос, какой-то Success выводится непонятно откуда и в кабинете и в регистрации, если не заполнены поля, на ошибки мускула не похоже, откуда она выплывает?
Спасибо за ответ.


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
Tox
Отправлено: 11 Сентября, 2012 - 21:34:05
Post Id



Посетитель


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


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




Так у вас
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.                 if ($_GET['log']==1)
  3.                         require('log.php');
  4.                 if ($_GET['reg']==1)
  5.                         require('reg.php');
  6.                 if ($_GET['cab']==1)
  7.                         require('privat_akk.php');
  8.          ?>

А потом при if ($_GET['cab']==1) подключается ваш privat_akk.php. То есть к индексному добавляется еще и privat_akk.php.


-----
In Console We Trust. Code hard. Or die.
 
 Top
imya
Отправлено: 11 Сентября, 2012 - 21:44:14
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


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




Tox пишет:
Так у вас
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.                 if ($_GET['log']==1)
  3.                         require('log.php');
  4.                 if ($_GET['reg']==1)
  5.                         require('reg.php');
  6.                 if ($_GET['cab']==1)
  7.                         require('privat_akk.php');
  8.          ?>

А потом при if ($_GET['cab']==1) подключается ваш privat_akk.php. То есть к индексному добавляется еще и privat_akk.php.


Хорошо, тогда как мне реализовать, чтобы при клике на соответствтвующий пункт меню у меня выводилось соответствующее содержимое. Вот сейчас для проверки убрал if ($_GET['cab']==1)
require('privat_akk.php');
и ошибка эта исчезла.
После работы мозг уже туго соображает, а сдавать нужно, вот и решил к вам обратиться за помощью.
И при клике на личный кабинет в QUERY_STRING нет private_akk.php, а есть index.php?cab=1

(Отредактировано автором: 11 Сентября, 2012 - 21:56:34)



-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
Tox
Отправлено: 11 Сентября, 2012 - 22:32:00
Post Id



Посетитель


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


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




imya
в private_akk.php сессию_старт уберите.


-----
In Console We Trust. Code hard. Or die.
 
 Top
imya
Отправлено: 11 Сентября, 2012 - 22:54:46
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


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




Так мне ведь нужно проверять переменную сессии и если она совпадает со значением из базы - выводить личный кабинет.
Убрал старт сессии, теперь title появилась эта же ошибка.

Нажмите для увеличения



А Success всё равно остался Однако

(Отредактировано автором: 11 Сентября, 2012 - 22:55:16)



-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
Tox
Отправлено: 11 Сентября, 2012 - 22:57:25
Post Id



Посетитель


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


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




imya
простите, не заметил


-----
In Console We Trust. Code hard. Or die.
 
 Top
imya
Отправлено: 11 Сентября, 2012 - 23:00:41
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


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




Tox пишет:
imya
простите, не заметил


Да ничего страшного, вы что.
Кстати, только сейчас заметил, что эта ошибка вылезла во всех тайтлах Не понял видимо ту-ту уже...


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
imya
Отправлено: 12 Сентября, 2012 - 10:01:00
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


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




Так что, никто не знает в чём причина? Огорчение


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
imya
Отправлено: 12 Сентября, 2012 - 18:38:34
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


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




Загляните, пожалуйста, кому не трудно
http://forum.php.su/topic.php?fo...1&topic=8086


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
Проклятый принц
Отправлено: 09 Апреля, 2013 - 17:29:25
Post Id


Гость


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


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

[+]


Добрый день, господа. Я сделал все так, как было написано. Перевёл с utf8 на utf8 без BOM, работать, конечно же, стало, но взезде появились всякие закорючки. Извините, но кто подскажет, как нормально настроить кодировку сайта?
 
 Top
root_x
Отправлено: 25 Октября, 2014 - 14:32:41
Post Id


Новичок


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


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




Запоздалый отсыл http://phpfaq[dot]ru/sessions

Цитата:
Возможные проблемы и их устранение.

Самыми распространенными ошибками, которые выдает РНР при попытке работать с сессиями, являются такие:
Две из них,
Warning: Cannot send session cookie - headers already sent
Warning: Cannot send session cache limiter - headers already sent
вызваны одной и той же причиной, решение описано...

(Отредактировано автором: 25 Октября, 2014 - 14:34:18)

 
 Top
Akhmedoff
Отправлено: 15 Декабря, 2014 - 12:39:23
Post Id


Новичок


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


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




OrmaJever пишет:
Может есть мета тег с другой кодировкой или header() ?
А если нету, то их бы добавить
PHP:
скопировать код в буфер обмена
  1. header('Content-type: text/html; charset=utf-8');

CODE (html):
скопировать код в буфер обмена
  1. <meta http-equiv="content-type" content="text/html; charset=UTF-8" />


Спасибо вам большое. Помогли мне.
 
 Top
владислав2405
Отправлено: 19 Декабря, 2014 - 20:01:03
Post Id


Новичок


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


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




Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /var/www/u0044573/data/www/eurotel24.ru/index.php:1) in /var/www/u0044573/data/www/eurot el24.ru/index.php on line 2
что нужно менять здесь ?
PHP:
скопировать код в буфер обмена
  1. <?PHP session_start();
  2.         define('myeshop', true);
  3.    include("include/auth_cookie.php");
  4.    include("include/db_connect.php");
  5.    include("functions/functions.php");
  6.    $sorting = $_GET["sort"];  
  7. switch ($sorting)
  8. {
  9.     case 'price-asc';
  10.     $sorting = 'price ASC';
  11.     $sort_name = 'От дешевых к дорогим';
  12.     break;
  13.  
  14.     case 'price-desc';
  15.     $sorting = 'price DESC';
  16.     $sort_name = 'От дорогих к дешевым';
  17.     break;
  18.    
  19.     case 'popular';
  20.     $sorting = 'count DESC';
  21.     $sort_name = 'Популярное';
  22.     break;
  23.    
  24.     case 'news';
  25.     $sorting = 'datetime DESC';
  26.     $sort_name = 'Новинки';
  27.     break;
  28.    
  29.     case 'brand';
  30.     $sorting = 'brand';
  31.     $sort_name = 'Новинки';
  32.     break;
  33.    
  34.     default:
  35.     $sorting = 'products_id DESC';
  36.     $sort_name = 'Нет сортировки';
  37.     break;                          
  38. }
  39.    
  40.    
  41. ?>
 
 Top
Страниц (5): « 1 2 3 [4] 5 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB