X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Ошибка сессии - PHP
Konark
Konark
Topic Starter сообщение 17.3.2016, 5:27; Ответить: Konark
Сообщение #1


Доброй ночи.
Ошибка при работе с сессиями. Уже и пробовал другую кодировку, и в начало, но все никак.

Цитата
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at W:\domains\localhost\Laba11\lab11-1.php:6) in W:\domains\localhost\Laba11\lab11-1.php on line 17

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at W:\domains\localhost\Laba11\lab11-1.php:6) in W:\domains\localhost\Laba11\lab11-1.php on line 17


Вот сам код:
Код
<html>
<head>
    <title>Laba 11 - 1</title>
</head>
<body>
    <?php
        $dbconnect = mysql_connect("localhost", "root", "")
        or die("Could not connect: " . mysql_error());
        mysql_select_db("1310125");
        $nickname = $_POST["nickname"];
        $password = $_POST["password"];
        $result = mysql_query("SELECT Nickname, Password FROM test_table");
        $list_f = mysql_query("SELECT * FROM test_table");
        $n = mysql_num_rows($list_f);
        for ($i = 0; $i < $n; $i++ ){
            if ($nickname == mysql_result($result, $i, Nickname) and $password == mysql_result($result, $i, Password)){
                session_start();
                break;
            }elseif ($i == ($n-1)){
                echo "Такого пользователя нету в системе. <br/> <a href='register.html'>Зарегистрироваться</a> или <a href='lab11-1.html'>Ввести данные заново</a>";
            }
        }
        mysql_close($dbconnect);
    ?>
</body>
</html>


--------------------
Мой блог о продукции Adobe и фотографиях
Только авторские уроки по Adobe Photoshop и Adobe Lightroom.
Хостинг - Попробовать
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SpaceX
SpaceX
сообщение 17.3.2016, 8:29; Ответить: SpaceX
Сообщение #2


читайте внимательней мануал... session_start() надо использовать до выводов HTML...


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
x64
x64
сообщение 17.3.2016, 9:21; Ответить: x64
Сообщение #3


Сессия строится на куках, куки отсылаются в заголовках, заголовки, в свою очередь, предшествуют html.
Пихните буферизацию вывода в начало файла
Код
<?php ob_start(); ?>


Поблагодарили: (2)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Konark
Konark
Topic Starter сообщение 17.3.2016, 17:46; Ответить: Konark
Сообщение #4


x64, спасибо!
Теперь все заработало :)

Сделал вот так:
Код
<?php ob_start();
    session_start();
    session_name("Auth");
    header('Content-Type: text/html; charset= utf-8');
    $dbconnect = mysql_connect("localhost", "root", "")
    or die("Could not connect: " . mysql_error());
    mysql_select_db("1310125");
    $nickname = $_POST["nickname"];
    $password = $_POST["password"];
    $result = mysql_query("SELECT Nickname, Password, GroupUser FROM test_table");
    $list_f = mysql_query("SELECT * FROM test_table");
    $n = mysql_num_rows($list_f);
    for ($i = 0; $i < $n; $i++ ){
        if (($nickname == mysql_result($result, $i, Nickname) and $password == mysql_result($result, $i, Password)) or ($_SESSION['logged_user'] != "")){
            if ($_SESSION['logged_user'] == ""){
                $_SESSION['logged_user'] = mysql_result($result, $i, Nickname);
                $_SESSION['password_user'] = mysql_result($result, $i, Password);
                $_SESSION['groupusers'] = mysql_result($result, $i, GroupUser);
            }
            if (mysql_result($result, $i, GroupUser) == "Admin" or $_SESSION['groupusers'] == "Admin"){
                header('Location: lab11-4.php');
                exit;
            }
            echo $_SESSION['logged_user'];
            echo ", Вы успешно войшли в систему.<br/>";
            echo "<form action='lab11-3.php' method='post'><input type='submit' name='exit' value='Закрыть сессию' /></form>";
            break;
        }elseif ($i == ($n-1)){
            echo "Такого пользователя нету в системе. <br/> <a href='register.html'>Зарегистрироваться</a> или <a href='lab11-1.html'>Ввести данные заново</a>";
        }
    }
    mysql_close($dbconnect);
    ob_end_flush();
    ?>
<html>
<head>
    <title>Laba 11 - 1</title>
</head>
<body>
</body>
</html>


--------------------
Мой блог о продукции Adobe и фотографиях
Только авторские уроки по Adobe Photoshop и Adobe Lightroom.
Хостинг - Попробовать


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SpaceX
SpaceX
сообщение 17.3.2016, 18:39; Ответить: SpaceX
Сообщение #5


а заработало как надо? ))
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
x64
x64
сообщение 17.3.2016, 18:41; Ответить: x64
Сообщение #6


Говоря про «предшествуют html» подразумевался протокол http, в котором сначала следуют заголовки (включая куки), а затем, через 2 перевода строки, страница :)

Если буферизация включена, то пых собирает в буфер весь вывод. Содержимое буфера выводится после ob_flush()/ob_end_flush(), либо после завершения работы скрипта автоматически.
Обычно, чтобы избежать гемора, session_start() пихают в начало. Но можно что-то вроде такого сделать:
Код
<?php
ob_start(); // включить буфер
?>
<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>ex</title>
</head>
<body>
<?php
echo '<h1>Заполните форму</h1>';
session_start(); // стартуем сессию
?>
  <form>
    форма
  </form>
</body>
</html>



Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Konark
Konark
Topic Starter сообщение 19.3.2016, 17:21; Ответить: Konark
Сообщение #7


SpaceX, да, конечно.

x64, То есть, не обязательно весь скрипт лепить перед хэдером?


--------------------
Мой блог о продукции Adobe и фотографиях
Только авторские уроки по Adobe Photoshop и Adobe Lightroom.
Хостинг - Попробовать
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SpaceX
SpaceX
сообщение 19.3.2016, 18:39; Ответить: SpaceX
Сообщение #8


если приведённый вами последний код конечный, то моё как надо и ваше сильно разнятся ))

P.S. загляните в исходный код странички..
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Konark
Konark
Topic Starter сообщение 19.3.2016, 19:02; Ответить: Konark
Сообщение #9


Цитата(SpaceX @ 19.3.2016, 16:39) *
если приведённый вами последний код конечный, то моё как надо и ваше сильно разнятся ))

P.S. загляните в исходный код странички..

Вот сейчас я не понимаю, если честно :)
Что не так то?
Я проверял, сессия точно работает (заходил на страницу без авторизации, а напрямую). А когда я закрывал сессию (удалял переменные сессии), то выводило совсем другое (мол пользователя нету, залогиньтесь или зарегистрируйтесь). Этот код не совсем конечный, вот последний:
Код
<?php ob_start();
    session_start();
    session_name("Auth");
    header('Content-Type: text/html; charset= utf-8');
    $dbconnect = mysql_connect("localhost", "root", "")
    or die("Could not connect: " . mysql_error());
    mysql_select_db("1310125");
    $nickname = $_POST["nickname"];
    $password = $_POST["password"];
    $result = mysql_query("SELECT Nickname, Password, GroupUser FROM test_table");
    $list_f = mysql_query("SELECT * FROM test_table");
    $n = mysql_num_rows($list_f);
    for ($i = 0; $i < $n; $i++ ){
        if (($nickname == mysql_result($result, $i, Nickname) and $password == mysql_result($result, $i, Password)) or ($_SESSION['logged_user'] != "")){
            if ($_SESSION['logged_user'] == ""){
                $_SESSION['logged_user'] = mysql_result($result, $i, Nickname);
                $_SESSION['password_user'] = mysql_result($result, $i, Password);
                $_SESSION['groupusers'] = mysql_result($result, $i, GroupUser);
            }
            if (mysql_result($result, $i, GroupUser) == "Admin" or $_SESSION['groupusers'] == "Admin"){
                header('Location: lab11-4.php');
                exit;
            }
            echo $_SESSION['logged_user'];
            echo ", Вы успешно войшли в систему.<br/>";
            echo "<form action='lab11-3.php' method='post'><input type='submit' name='exit' value='Закрыть сессию' /></form>";
            break;
        }elseif ($i == ($n-1)){
            echo "Такого пользователя нету в системе. <br/> <a href='register.html'>Зарегистрироваться</a> или <a href='lab11-1.html'>Ввести данные заново</a>";
        }
    }
    mysql_close($dbconnect);
    ob_end_flush();
    ?>
<html>
<head>
    <title>Laba 11 - 1</title>
</head>
<body>
</body>
</html>


--------------------
Мой блог о продукции Adobe и фотографиях
Только авторские уроки по Adobe Photoshop и Adobe Lightroom.
Хостинг - Попробовать
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SpaceX
SpaceX
сообщение 19.3.2016, 20:09; Ответить: SpaceX
Сообщение #10


при "Вы успешно войшли в систему" или "Такого пользователя нету в системе." посмотрите в браузере исходный код странички.. дальше думайте сами..
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое
5 CULA 3421 19.12.2023, 18:55
автор: CULA
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1244 24.11.2023, 14:46
автор: alexey
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44935 19.7.2023, 10:03
автор: qpPeW
Открытая тема (нет новых ответов) Есть спецы по php/laravel?
3 Mixatraider 1891 26.5.2023, 20:48
автор: Mixatraider
Открытая тема (нет новых ответов) Опытный PHP\Python разработчик в поиске интересных задач
6 daikzlex 3406 25.5.2023, 13:55
автор: daikzlex


 



RSS Текстовая версия Сейчас: 25.4.2024, 4:03
Дизайн