Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/127: Рейтинг темы: голосов - 127, средняя оценка - 4.65
0 / 0 / 1
Регистрация: 21.05.2012
Сообщений: 5

Cannot send session cache limiter - headers already sent

01.06.2012, 16:57. Показов 26673. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Сейчас пишу скрипт на PHP. Начал писать. Если не прикреплять к скрипту дизайн, то он работает. Но если я цепляю дизайн к скрипту, то начинается

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent

И из-за этого предупреждения не работает скрипт т.к. он использует cookie и не может их записать..
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.06.2012, 16:57
Ответы с готовыми решениями:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent
И опять я, не прошло и дня как я столкнулся с новой проблемой (старую решил сам, очень я невнимательный ) но уже просидев несколько часов с...

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent
Ребят, я полный краб в php пока что ) При входе в админку вордпреса белый экран и Notice: Use of undefined constant ddsg_language -...

Cannot send session cache limiter - headers already sent
Здравствуйте хочу спросить как реализовать сессию на авторизацию вот кусок кода for($i = 0; $i < $rt; $i++) { if($mas ==...

12
 Аватар для AllageARH
47 / 47 / 4
Регистрация: 05.06.2009
Сообщений: 122
01.06.2012, 17:04
Цитата Сообщение от DedaGates Посмотреть сообщение
Но если я цепляю дизайн к скрипту, то начинается
Кода дай людям))) иногда даже из-за пробела перед session_start() не работает.
0
0 / 0 / 1
Регистрация: 21.05.2012
Сообщений: 5
01.06.2012, 17:13  [ТС]
AllageARH, код настолько говнокод, что я боюсь его давать

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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<head>
<title>Test</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
 
<body>
<div id="wrapper">
    <div id="masthead"></div>
    <div id="top_nav">
        <ul id="topmenu">
        </ul>
    </div>
    
        <div id="page_content">
        
            <h1><center>Auth</center></h1>
<?php
session_start();
include ('mysql.php');
if (isset($_GET['logout']))
{
    if (isset($_SESSION['user_id']))
        unset($_SESSION['user_id']);
        
    setcookie('login', '', 0, "/");
    setcookie('password', '', 0, "/");
    // и переносим его на главную
    header('Location: index.php');
    exit;
}
 
if (isset($_SESSION['user_id']))
{
    // юзер уже залогинен, перекидываем его отсюда на закрытую страницу
    
    header('Location: closed.php');
    exit;
 
}
 
 
 
if (!empty($_POST))
{
    $login = (isset($_POST['login'])) ? mysql_real_escape_string($_POST['login']) : '';
    
    $query = "SELECT `salt`
                FROM `account`
                WHERE `email`='{$login}'
                LIMIT 1";
    $sql = mysql_query($query) or die(mysql_error());
    
    if (mysql_num_rows($sql) == 1)
    {
        $row = mysql_fetch_assoc($sql);
        
        // итак, вот она соль, соответствующая этому логину:
        $salt = $row['salt'];
        
        // теперь хешируем введенный пароль как надо и повторям шаги, которые были описаны выше:
        $password = md5(md5($_POST['password']) . $salt);
        
        // и пошло поехало...
 
        // делаем запрос к БД
        // и ищем юзера с таким логином и паролем
 
        $query = "SELECT `id`
                    FROM `account`
                    WHERE `email`='{$login}' AND `password`='{$password}'
                    LIMIT 1";
        $sql = mysql_query($query) or die(mysql_error());
 
        // если такой пользователь нашелся
        if (mysql_num_rows($sql) == 1)
        {
            // то мы ставим об этом метку в сессии (допустим мы будем ставить ID пользователя)
 
            $row = mysql_fetch_assoc($sql);
            $_SESSION['user_id'] = $row['id'];
            
            
            // если пользователь решил "запомнить себя"
            // то ставим ему в куку логин с хешем пароля
            
            $time = 86400; // ставим куку на 24 часа
            
            if (isset($_POST['remember']))
            {
                setcookie('login', $login, time()+$time, "/");
                setcookie('password', $password, time()+$time, "/");
            }
            
            // и перекидываем его на закрытую страницу
            header('Location: closed.php');
            exit;
 
            // не забываем, что для работы с сессионными данными, у нас в каждом скрипте должно присутствовать session_start();
        }
        else
        {
            die('Такой логин с паролем не найдены в базе данных. И даём ссылку на повторную авторизацию. — <a href="login.php">Авторизоваться</a>');
        }
    }
    else
    {
        die('пользователь с таким логином не найден, даём ссылку на повторную авторизацию. — <a href="login.php">Авторизоваться</a>');
    }
}
 
print '
<form action="login.php" method="post">
    <table>
        <tr>
            <td>Логин:</td>
            <td><input type="text" name="login" /></td>
        </tr>
        <tr>
            <td>Пароль:</td>
            <td><input type="password" name="password" /></td>
        </tr>
        <tr>
            <td>Запомнить:</td>
            <td><input type="checkbox" name="remember" /></td>
        </tr>
        <tr>
            <td></td>
            <td><input type="submit" value="Авторизоваться" /></td>
        </tr>
    </table>
</form>
';?>
</div>
    </div>      
    <div id="designed_by"><font color="ffffff" size="3"><p>Test Lk</p></font></div>
</div>
</body>
 
</html>
Вот.
0
 Аватар для AllageARH
47 / 47 / 4
Регистрация: 05.06.2009
Сообщений: 122
01.06.2012, 17:19
Да ладно, вместе поржем XD
А если серьезно, вот это перенеси в Саааааамое начало документа
Цитата Сообщение от DedaGates Посмотреть сообщение
<?php
session_start(); ?>
а там посмотри что он выкинет...)))
2
0 / 0 / 1
Регистрация: 21.05.2012
Сообщений: 5
01.06.2012, 17:21  [ТС]
Заработало! Спасибо!
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
01.06.2012, 18:15
Что означает предупреждение "headers already sent"
0
 Аватар для Sonicos
2 / 2 / 3
Регистрация: 07.11.2014
Сообщений: 98
21.11.2016, 16:10
Приветствую!
Хотел создать новую, но увидел эту.
У меня такая же ошибка, но всё работает.
Я после заполнения формы отправляю на специально созданный оработчик, который после обработки перекидывает на нужную страницу, где данные из сессии используются по назначению. В процессе обработки видно эту ошибку, а после открывается следующая страница, где всё исправно отображается. Не могу понять, что за дела.
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
<?php
session_start();
 
include_once("db.php");
if (isset($_POST['enter'])) 
{
  $e_login = $_POST['e_login'];
  $e_password = md5 ($_POST['e_password']);
 
  $result = $con->query("SELECT * FROM finist_1 WHERE login = '$e_login'");
  $user_data = $result->fetch_assoc();
  if ($user_data['password'] == $e_password)
  {
 
    $usn = $user_data['username'];
    $user_id = $user_data['user_id'];
    $idate = $user_data['i_date'];
    $_SESSION['user_id'] = $user_id;
    $_SESSION['username'] = $usn;
    $_SESSION['i_date'] = $idate;
 
    echo 'Добро пожаловать, '.$usn.'!'
    .'<script type="text/javascript">
    window.location = "counter.php"
    </script>';
  }
 else 
 {
     echo "Не верный логин или пароль";
 }
}
?>
0
 Аватар для AllageARH
47 / 47 / 4
Регистрация: 05.06.2009
Сообщений: 122
21.11.2016, 17:40
Вы этот код, случаем, не инклюдите где-нибудь внутри файла?
например:
PHP
1
2
3
4
5
6
7
8
9
10
11
<html>
  <body>
    <?php if(isset($_POST['enter'])) { 
                 include "autoriz.php"
              } else { ?>
              <form action="" method="post">
               ...
              </form>
    <?php } ?>
  </body>
</html>
0
 Аватар для Sonicos
2 / 2 / 3
Регистрация: 07.11.2014
Сообщений: 98
21.11.2016, 17:51
Вроде нет. Если я правильно понял вопрос.
Он у меня только в этом файле присутствует.
0
 Аватар для AllageARH
47 / 47 / 4
Регистрация: 05.06.2009
Сообщений: 122
21.11.2016, 18:02
Как форма авторизации выглядит (код)?
0
 Аватар для Sonicos
2 / 2 / 3
Регистрация: 07.11.2014
Сообщений: 98
21.11.2016, 18:05
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
require 'app/header.php';
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Skyinvest Авторизация</title>
    <link rel="stylesheet" type="text/css" href="public/css/style.css">
</head>
<body>
    <div id="wrapper">
        <div id="choose">
            <form method="POST" action="app/enter.php">
                <input type="text" name="e_login" class="form" placeholder="Введите Логин" required>
                <br> 
                <input type="password" name="e_password" class="form" placeholder="Введите Пароль" required>
                <input type="submit" value="войти" name="enter" class="button">
            </form>
            <a href="register.php" id="reg_link">регистрация</a>
        </div>
    </div>
</body>
</html>
0
 Аватар для AllageARH
47 / 47 / 4
Регистрация: 05.06.2009
Сообщений: 122
21.11.2016, 18:41
Тут вроде всё ок. Читал ссыку выше (Что означает предупреждение "headers already sent")?
а именно:
И сохраним его в кодировке UTF-8. Но если мы теперь просмотрим файл в кодировке cp1251, то увидим, что вначале файла добавлены символы:
PHP
1
2
3
п»ї<?php
 
?>
0
 Аватар для Sonicos
2 / 2 / 3
Регистрация: 07.11.2014
Сообщений: 98
21.11.2016, 21:35
Проверял. Ничего. Там пусто.

Добавлено через 1 минуту
По идее, в такой ситуации он должен не работать. Но блин... Работает же.
Это больше всего и удивляет

Добавлено через 6 минут
...ну и надпись эта напрягает

Добавлено через 1 час 43 минуты
РАЗОБРАЛСЯ!!!
В общем, проблема, действительно в кодировке была.
Я до этого говорил, что проверял на наличие "ВОМ" - это так. Но я работаю в SublimeText. И проверял и сохранял с его помощью, а там нет такого "UTF8 без ВОМ".
Открыл код в Notepad++ Сохранил в нужной кодировке (там есть "...без ВОМ") и ошибка пропала.
Но всё равно, загадкой осталось для меня, ПОЧЕМУ ЭТО РАБОТАЛО???


Добавлено через 44 минуты
Балин!
Теперь иероглафами пишет )))
По первому коду там внизу у меня echo, где есть надпись "'Добро пожаловать, '.$usn.'!'"
Браузер выдаёт иероглифами. Подозреваю, что где-то нужно прописать кодировку тут.
Вот только где?

Добавлено через 2 минуты
А, всё. Нашёл ))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.11.2016, 21:35
Помогаю со студенческими работами здесь

Cannot send session cache limiter - headers already sent
Решил сделать ограничение на просмотр контента, в зависимости от того, залогинился человек на сайте или нет. При это выдает ошибку: ...

Ошибка Cannot send session cache limiter - headers already sent
Почитал в интернете, что такая ошибка возникает если перед &lt;?php session_start(); ?&gt; стоят какие-либо символы. Открываю свой файл через...

Ошибка Cannot send session cache limiter - headers already sent
Warning: session_start() : Cannot send session cache limiter - headers already sent (output started at...

Ошибка в сессии (Cannot send session cache limiter-headers already sent)
&lt;?php session_start(); $_SESSION = ''; $_SESSION = ''; $_SESSION = ''; $_SESSION = ''; require_once('../config.php'); ...

Warning: session_start(): Cannot send session cache limiter - headers already sent
выдает это чудище: Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru