Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/23: Рейтинг темы: голосов - 23, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 04.08.2011
Сообщений: 3

session_start();

02.09.2011, 15:35. Показов 4724. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, есть авторизация на сессиях, всё работает хорошо, но на проверки файла(показывать или не показывать файл, если человек авторизован)вылезает:

PHP
1
2
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\partname.net\www\admin\del_cat.php:1) in Z:\home\partname.net\www\admin\del_cat.php on line 5
Доступ закрыт, даём ссылку на авторизацию. — Авторизоваться
Всё понятно ,что заголовок уже передан, но решить это не получается.

Собственно сам файл:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<?
 
 
include ("../engine/config/mysql.php");
if (isset($_POST['id'])) {$id = $_POST['id'];}session_start();
if (isset($_SESSION['user_id']))
{
    // показываем защищенные от гостей данные.
    print '<h1>Здрасте!</h1>
    <p>Это закрытая страница.</p>
    <p><a href="index.php">Перейти на главную</a></p>';
}
else
{
    die('Доступ закрыт, даём ссылку на авторизацию. — <a href="login.php">Авторизоваться</a>');
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-gb" lang="en-gb">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
  <title>Админпанель</title> 
  <script type="text/javascript" src="../templates/admin/js/mootips.js"></script>
  <script type="text/javascript" src="../templates/admin/js/joomla.javascript.js"></script>
  <script type="text/javascript" src="../templates/admin/js/mootools.js"></script>
  <script type="text/javascript" src="../templates/admin/js/admin.js"></script>
  <link href="../templates/admin/css/blue.css" rel="stylesheet" type="text/css">
  <link href="../templates/admin/css/template_css.css" rel="stylesheet" type="text/css">
  <link href="../templates/admin/css/system.css" rel="stylesheet" type="text/css">
  <script type="text/javascript">
        window.addEvent('domready', function(){ new Accordion($$('.panel h3.jpane-toggler'), $$('.panel div.jpane-slider'), {onActive: function(toggler, i) { toggler.addClass('jpane-toggler-down'); toggler.removeClass('jpane-toggler'); },onBackground: function(toggler, i) { toggler.addClass('jpane-toggler'); toggler.removeClass('jpane-toggler-down'); },duration: 300,opacity: false,alwaysHide: true}); });
        window.addEvent('domready', function(){ var JTooltips = new Tips($$('.hasTip'), { maxTitleChars: 50, fixed: false}); });
  </script>
<!--[if IE 7]>
<link href="templates/jbsimpla/css/ie7.css" rel="stylesheet" type="text/css" />
<![endif]-->
<!--[if lte IE 6]>
<link href="templates/jbsimpla/css/ie6.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="templates/jbsimpla/js/supersleight-min.js"></script>
<![endif]-->
</head>
<body class="blue">
<?php include('../templates/admin/menu.tpl');?>
<div id="content-wrap">
<?php include('../templates/admin/status.tpl');?>
<?php include('../templates/admin/topmenu.tpl');?>
    <div class="clear"></div>
<?php include('../templates/admin/btop.tpl');?>
<?php include('../templates/admin/content_simp.tpl');?>
    <p><strong>Выберите категорию для удаления</strong></p>
<form action="" method="post">
<? 
$result = mysql_query("SELECT `title`, `id` 
                       FROM `categories`");      
$myrow = mysql_fetch_array($result);
do 
{ printf ("<p><input name='id' type='radio' value='%s'><label>%s</label></p>",$myrow["id"],$myrow["title"]);
}
while ($myrow = mysql_fetch_array($result));
?>
<p> <input name="submit" type="submit" value="Удалить категорию"></p>
</form>
<?php 
if (isset($id))
{
$result0 = mysql_query ("SELECT `id` 
                         FROM `data` 
                         WHERE `cat`='$id'",$mysql);
if (mysql_num_rows($result0) > 0) {
echo "<p>В категории, которую Вы хотите удалить, есть новости. Сначала распределите новости по другим категориям.</p>";
}
else
{
$result = mysql_query ("DELETE FROM `categories` 
                        WHERE `id` = ". (int)$id );
if (mysql_affected_rows() > 0)
     {echo "<p>Ваша категория успешно удалена!</p>";}
else {echo "<p>Ваша категория не удалена!</p>";}
}
}        
         ?>
<?php include('../templates/admin/content_simp_two.tpl');?>
</div>
</body>
</html>
Заранее спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.09.2011, 15:35
Ответы с готовыми решениями:

session_start()
вписываю эту функцию в начале страницы и выдает эти ошибки: Warning: session_start(): Cannot send session cookie - headers already sent...

Ошибка session_start()
Доброго времени суток! Подскажите пожалуйста с чем может быть связана данная ошибка: Warning: session_start() :...

Session_start и sleep
Всем доброго времени суток! // Открытие сессии. session_start(); // Ajax запрос с помощью JsHttpRequest // Отличие AJAX...

3
0 / 0 / 0
Регистрация: 19.08.2011
Сообщений: 10
02.09.2011, 16:18
Ошибку эту исправить несложно.
Часто такое же сообщение появляется при старте сессий, в немного другой формулировке:
Warning: Cannot send session cookie - headers already sent
Warning: Cannot send session cache limiter - headers already sent

Для начала узнаем, как вообще общается броузер с сервером. Происходит это по специальному протоколу HTTP. К примеру, когда ты набраешь адрес, или нажимаешь на ссылку, броузер посылает HTTP запрос серверу. Сервер отвечает. Первыми в ответе ВСЕГДА идут HTTP заголовки. Хоть один. И только потом уже сервер посылает, а броузер принимает, текст, или картинку, или файл - в общем, что было запрошено. Cобственно, из-за этого правила - сначала заголовок, а потом информация, и происходит данная ошибка. РНР, для твоего удобства, посылает заголовки автоматически, как только скрипт начинает выдавать бровзеру информацию. Соответственно, если хоть один пробел был уже передан пользователю, заголовки уже ушли, и снова их послать уже никак не можно. А, как ты уже, наверное, догадался, команды header(), setcookie, session_start(), посылают HTTP заголовки.

Разберем теперь это предупреждение.
Warning: Cannot add header information - headers already sent by (output started at /www/script.php:5) on line 20

Cannot add header information - headers already sent. Все ясно написано. "Не могу послать заголовок, поезд уже ушел" - пишет нам РНР. Дальше РНР сообщает, в каком скрипте и в какой его строке (output started at /www/script.php:5) произошел вывод информации, вызвавший автоматическую посылку заголовков. Очень легко найти и исправить. Может быть, там html теги, может быть, echo, а может и просто незамеченая пустая строка или пробел перед первым тегом <?.
Очень часто такую ошибку вызывает файл, подключаемый через include, в котором либо есть какой-то вывод, либо пустая строка после закрывающего PHP тега - обнаружить ее очень трудно.

Для решения этой проблемы нужно функцию header() (или session_start(), setcookie) и всю логику, которая ее вызывает, поместить ДО любого вывода в броузер. Просто перенести повыше в скрипте.
Ведь вы всё равно перенаправляете браузер. То есть, никакой текст всё равно не будет выведен! Значит, и выводить что-то одновременно с заголовком Location нет смысла. Правильно планируйте структуру своего скрипта: блок, который обрабатывает POST, не должен ничего выводить в браузер.

Иногда вы проверили ВСЁ - нигде ничего нет. Смените редактор. Посмотрите свой файл в другой программе. К примеру, Windows Блокнот при использовании кодировки Unicode добавляет в начало вашего файла служебный символ Byte Order Mark, никак при этом не ставя вас в известность. Откройте скрипт в другом редакторе и удалите посторонние символы. И смените Блокнот на другой редактор.
Или сохраняйте в кодировке UTF-8 without BOM
0
0 / 0 / 0
Регистрация: 04.08.2011
Сообщений: 3
02.09.2011, 17:00  [ТС]
Спасибо конечно, но это и так понятно...
0
0 / 0 / 0
Регистрация: 19.08.2011
Сообщений: 10
02.09.2011, 18:33
Ну а что тут не понятного код твой должен выглядеть так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
session_start();
include ("../engine/config/mysql.php");
if (isset($_POST['id'])) {$id = $_POST['id'];}
if (isset($_SESSION['user_id']))
{
        // показываем защищенные от гостей данные.
        print '<h1>Здрасте!</h1>
        <p>Это закрытая страница.</p>
        <p><a href="index.php">Перейти на главную</a></p>';
}
else
{
        die('Доступ закрыт, даём ссылку на авторизацию. — <a href="login.php">Авторизоваться</a>');
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-gb" lang="en-gb">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
  <title>Админпанель</title> 
  <script type="text/javascript" src="../templates/admin/js/mootips.js"></script>
  <script type="text/javascript" src="../templates/admin/js/joomla.javascript.js"></script>
  <script type="text/javascript" src="../templates/admin/js/mootools.js"></script>
  <script type="text/javascript" src="../templates/admin/js/admin.js"></script>
  <link href="../templates/admin/css/blue.css" rel="stylesheet" type="text/css">
  <link href="../templates/admin/css/template_css.css" rel="stylesheet" type="text/css">
  <link href="../templates/admin/css/system.css" rel="stylesheet" type="text/css">
  <script type="text/javascript">
                window.addEvent('domready', function(){ new Accordion($$('.panel h3.jpane-toggler'), $$('.panel div.jpane-slider'), {onActive: function(toggler, i) { toggler.addClass('jpane-toggler-down'); toggler.removeClass('jpane-toggler'); },onBackground: function(toggler, i) { toggler.addClass('jpane-toggler'); toggler.removeClass('jpane-toggler-down'); },duration: 300,opacity: false,alwaysHide: true}); });
                window.addEvent('domready', function(){ var JTooltips = new Tips($$('.hasTip'), { maxTitleChars: 50, fixed: false}); });
  </script>
<!--[if IE 7]>
<link href="templates/jbsimpla/css/ie7.css" rel="stylesheet" type="text/css" />
<![endif]-->
<!--[if lte IE 6]>
<link href="templates/jbsimpla/css/ie6.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="templates/jbsimpla/js/supersleight-min.js"></script>
<![endif]-->
</head>
<body class="blue">
<?php include('../templates/admin/menu.tpl');?>
<div id="content-wrap">
<?php include('../templates/admin/status.tpl');?>
<?php include('../templates/admin/topmenu.tpl');?>
        <div class="clear"></div>
<?php include('../templates/admin/btop.tpl');?>
<?php include('../templates/admin/content_simp.tpl');?>
    <p><strong>Выберите категорию для удаления</strong></p>
<form action="" method="post">
<?php
$result = mysql_query("SELECT `title`, `id` 
                       FROM `categories`");      
$myrow = mysql_fetch_array($result);
do 
{ printf ("<p><input name='id' type='radio' value='%s'><label>%s</label></p>",$myrow["id"],$myrow["title"]);
}
while ($myrow = mysql_fetch_array($result));
?>
<p> <input name="submit" type="submit" value="Удалить категорию"></p>
</form>
<?php 
if (isset($id))
{
$result0 = mysql_query ("SELECT `id` 
                         FROM `data` 
                                                 WHERE `cat`='$id'",$mysql);
if (mysql_num_rows($result0) > 0) {
echo "<p>В категории, которую Вы хотите удалить, есть новости. Сначала распределите новости по другим категориям.</p>";
}
else
{
$result = mysql_query ("DELETE FROM `categories` 
                        WHERE `id` = ". (int)$id );
if (mysql_affected_rows() > 0)
     {echo "<p>Ваша категория успешно удалена!</p>";}
else {echo "<p>Ваша категория не удалена!</p>";}
}
}                
?>
<?php include('../templates/admin/content_simp_two.tpl');?>
</div>
</body>
</html>
После чего взять файлы, которые в include прописаны:
mysql.php,
menu.tpl,
status.tpl,
topmenu.tpl,
btop.tpl,
content_simp.tpl,
content_simp_two.tpl.
И сделать с ними то же самое. Я имею ввиду поубирай пробелы перед и после <?php.
Так же можно попробовать перекодировать его в utf8 без BOM. У тебя сейчас в какой кодировке сохранены эти файлы? Что - то из этого сделать и все будет работать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.09.2011, 18:33
Помогаю со студенческими работами здесь

Ошибка при session_start()
&lt;?php session_start(); $number = addslashes(strip_tags(trim($_POST))); echo $number; ?&gt; Выдает ошибку, что делать?

Слетает сессия session_start
Привет, есть скрипт index.php вот код &lt;?php // скрипт автоизации на странице! session_start(); if(isset($_POST)) {

Обязательно ли в файле, где проверяется имя сессии, писать session_start?
приветствую! такой вопрос, если мы хотим на странице проверить сессию, вот допустим главный файл &lt;?php session_start(); ...

Ошибка сессии при команде "session_start();"
Здравствуйте, я задался целью написать свою CMS, дак вот, начал я её делать соответственно с регистрации и маленьких набросков на...

session_start
Вот такая ситуация: Warning: session_start(): Cannot send session cookie - headers already sent by (output started at...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru