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



 

Здравствуйте, гость ( Вход | Регистрация )

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


Бывалый
****

Группа: User
Сообщений: 371
Регистрация: 5.12.2010
Из: Вознесенск
Поблагодарили: 36 раз
Репутация:   7  


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

Цитата
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


Участник
***

Группа: User
Сообщений: 205
Регистрация: 13.3.2011
Поблагодарили: 66 раз
Репутация:   18  


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


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


F.A.L.L.O.U.T.
*******

Группа: Super Moderator
Сообщений: 3424
Регистрация: 30.6.2011
Из: Железнодорожный (Балашиха)
Поблагодарили: 2746 раз
Репутация:   289  


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


--------------------


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


Бывалый
****

Группа: User
Сообщений: 371
Регистрация: 5.12.2010
Из: Вознесенск
Поблагодарили: 36 раз
Репутация:   7  


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


Участник
***

Группа: User
Сообщений: 205
Регистрация: 13.3.2011
Поблагодарили: 66 раз
Репутация:   18  


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


F.A.L.L.O.U.T.
*******

Группа: Super Moderator
Сообщений: 3424
Регистрация: 30.6.2011
Из: Железнодорожный (Балашиха)
Поблагодарили: 2746 раз
Репутация:   289  


Говоря про «предшествуют 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


Бывалый
****

Группа: User
Сообщений: 371
Регистрация: 5.12.2010
Из: Вознесенск
Поблагодарили: 36 раз
Репутация:   7  


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

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


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


Участник
***

Группа: User
Сообщений: 205
Регистрация: 13.3.2011
Поблагодарили: 66 раз
Репутация:   18  


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

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


Бывалый
****

Группа: User
Сообщений: 371
Регистрация: 5.12.2010
Из: Вознесенск
Поблагодарили: 36 раз
Репутация:   7  


Цитата(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


Участник
***

Группа: User
Сообщений: 205
Регистрация: 13.3.2011
Поблагодарили: 66 раз
Репутация:   18  


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


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Недорогие услуги - php/js/mysql/jquery/bootstrap
2 vlads 645 Вчера, 21:01
автор: vlads
Открытая тема (нет новых ответов) Веб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
18 qpPeW 3380 12.12.2017, 13:32
автор: qpPeW
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыОшибка при создании шаблона страницы ВП
Нет картинок
5 semarg 698 9.12.2017, 15:36
автор: Nell
Открытая тема (нет новых ответов) php скрипты любой сложности / диз+верстка (адаптивно)
любые задачи на php - автоматизация, парсинг, работа с БД
1 affrodita 496 8.12.2017, 17:40
автор: affrodita
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыImage Optimizer (PHP)
6 bars96 908 17.11.2017, 0:47
автор: bars96


 



RSS Текстовая версия Сейчас: 14.12.2017, 8:31
Дизайн