За последние 24 часа нас посетили 18920 программистов и 1640 роботов. Сейчас ищут 968 программистов ...

почему при обновлении страницы сессия попадает

Тема в разделе "PHP для новичков", создана пользователем upr_adm, 8 мар 2018.

  1. upr_adm

    upr_adm Новичок

    С нами с:
    23 дек 2017
    Сообщения:
    24
    Симпатии:
    0
    Добрый день

    делаю личный кабинет использую сессию
    после авторизации входа личный кабинет
    проблема в том что
    при обновлении страницы сессия теряется
    провирял так

    if (isset($_SESSION['logged_user'])){
    echo 'Сессия существует';

    }else echo 'Сессия несуществует';
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    сессию стартовал ?
     
  3. upr_adm

    upr_adm Новичок

    С нами с:
    23 дек 2017
    Сообщения:
    24
    Симпатии:
    0
    да
    --- Добавлено ---
    вот код login.php:
    <?php
    require 'db.php';
    session_start();
    $data=$_POST;
    if(isset($data['do_login']))
    {
    $errors = array();
    $user=R::findOne('user','login=?', array($data['login']));
    if($user)
    {

    // логин существует
    if (password_verify( $data['password'], $user->password))
    {


    echo "Пользователь:" .$user->login;
    echo '<div style="color:green;"> переход в систему... </div><hr>';
    $_SESSION['logged_user'] = $user->login;
    header ( 'refresh:5; url=/kab.php');
    }else
    {
    $errors[] = 'Неверно введен пароль ';
    }
    } else
    {
    $errors[] = 'Пользователь с таким не найден';
    }
    if ( ! empty($errors))
    {
    echo '<div style="color:red;">'.array_shift($errors).'</div><hr>';

    }
    }
    echo '
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html" />
    <meta name="author" content="admin" />
    <link href="style.css" rel="stylesheet" type="text/css">
    <title>Информационная система System Press </title>
    </head>
    <body>
    <div id="contaner">
    <a href="signup.php">Регистрация</a>
    <div style="border-radius:10px;width:200px; margin:10px; background-color:#33b0a8;color:#fff;">
    <form action="login.php" method="post">
    <p>
    <p><strong> Ваш логин: </strong></p>
    <input type="text" name="login" style=" border-radius:10px; margin:5px; color:green;bordercolor:#0000:" >
    </p>
    <p>
    <p><strong> Ваш пароль: </strong></p>
    <input style="border-radius:10px; margin:5px" type="password" name="password">
    </p>
    <button style="border-radius:10px; margin:20px; background-color:yellow" type="submit" name="do_login">Войти в систему </button>
    </div>
    </div>
    <div style="clear: both;"></div>
    <div id="empty"></div>
    </div>
    <div id="footer">
    <p style="text-align-first: 5px; padding-top: 5px;">System Press 2018&copy</p>
    </div>
    </body>
    </html>';
    ?>
    --- Добавлено ---
    вот код kab.php:
    <?php
    include 'db.php';
    session_start();
    if (isset($_SESSION['logged_user'])){
    echo 'Сессия существует';

    }else echo 'Сессия несуществует';
    $data=$_POST;
    if (isset($data['do_signup']))
    {
    $error =array();
    if (trim($data['name'])=='')
    {
    $error[]='<p style="color:green;baqckground:#0000;">заполните поле Имя</p>';

    }
    $dat = R::dispense('dat');
    $dat->name=$data['name'];
    $dat->telephone=$data['telephone'];
    $dat->family=$data['family'];
    $dat->email=$data['email'];
    R::store($dat);
    if (isset($_SESSION['logged_user'])){
    echo 'Сессия существует';

    }else echo 'Сессия несуществует';
    }
    echo
    '<!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html" />
    <meta name="author" content="admin" />
    <link href="style.css" rel="stylesheet" type="text/css">
    <title>Информационная система System Press </title>
    </head>
    <body>
    <div id="contaner">';
    echo 'Пользователь:' . $user = $_SESSION['logged_user'];
    echo '&nbsp;<A href="logout.php">Выход</a>';
    $_SESSION['logged_user'] = $user->login;
    echo '<div id="header">
    <h1 style="margin-top: 10px ;" >Информационная система System Press</h1>
    </div>
    <div id="content">
    <hr>';
    echo '
    <div style="border-radius:10px;width:200px; padding:10px; margin:10px; background-color:#33b0a8;color:#fff;">
    <form action="kab.php" method="post">
    <p>
    <p><strong> Имя: </strong></p>
    <input type="text" name="name" style="color:green;bordercolor:#0000:" >
    </p>
    <p>
    <p><strong> Фамилия: </strong></p>
    <input type="text" name="family" style="color:green;bordercolor:#0000:">
    </p>
    <p>
    <p><strong> Телефон: </strong></p>
    <input type="text" name="telephone" style="color:green;bordercolor:#0000:">
    </p>
    <p>
    <p><strong> Ваш email: </strong></p>
    <input type="email" name="email" style="color:green;bordercolor:#0000:">
    </p>
    <button type="submit" style="" name="do_signup">дабавить в базу </button>
    </div>
    ';
    echo '</div>
    <div style="clear: both;"></div>
    <div id="empty"></div>
    </div>
    <div id="footer">
    <p style="text-align-first: 5px; padding-top: 5px;">System Press 2018&copy</p>
    </div>
    </body>
    </html>';
    ?>
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    не вижу проблем и ошибок
     
  5. upr_adm

    upr_adm Новичок

    С нами с:
    23 дек 2017
    Сообщения:
    24
    Симпатии:
    0
    я тоже не вижу все работает как задумал
    только при нажатии f5 клавиши сессия сбрасывается
    файл сессии создается в каталоге /tmp
    работаю на windows 7 denver php7
    не пойму почему
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    ошибки включи
     
  7. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    и нафига весь html код постить? он никому не нужен.... ну и оформление в спец тегах никто не отменял
     
  8. upr_adm

    upr_adm Новичок

    С нами с:
    23 дек 2017
    Сообщения:
    24
    Симпатии:
    0
    вопрос не в коде а почему сессия пропадает при обновлении страницы
     
  9. Sergey_Tsarev

    Sergey_Tsarev Активный пользователь

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    Ахах, а читать твой код думаешь удобно без подсветки?
    --- Добавлено ---
    И кстати, зачем вот это?
    PHP:
    1. $data=$_POST;
     
  10. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    эта проблема из параллельного мира, а в этом мире выясняется что у автора куки не сохраняются в браузере, либо ошибка

    Warning: session_start(): Cannot send session cookie - headers already sent by

    https://php.net/manual/ru/function.session-start.php#refsect1-function.session-start-notes

    зацени крутой тест:
    PHP:
    1. <?php
    2.  
    3. error_reporting ( E_ALL );
    4.  
    5. echo $_SESSION['s'] ?? 111;
    6.  
    7.  
    8. $_SESSION['s'] = 222;
    --- Добавлено ---
    я же в свою очередь ответа не увидел на пост
    https://php.ru/forum/threads/pochemu-pri-obnovlenii-stranicy-sessija-popadaet.69487/#post-561191
     
    Sergey_Tsarev нравится это.
  11. upr_adm

    upr_adm Новичок

    С нами с:
    23 дек 2017
    Сообщения:
    24
    Симпатии:
    0
    Парни так в чем причина почему не сохраняются сессия при обновлении страницы может я что-то не дописал
    --- Добавлено ---
    используется форма и массив post
    после нажатия кнопки данные введенные в фору заганяются в массив $_post и передаются в переменную $data
     
  12. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    включи отображение ошибок
     
  13. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    одно из двух или оба разом:

    * BOM
    * ошибка/предупреждение возникающее до session_start

    то есть сессии нет т.к. сессинная кука не устанавливается по причине "Headers already sent"
     
  14. upr_adm

    upr_adm Новичок

    С нами с:
    23 дек 2017
    Сообщения:
    24
    Симпатии:
    0
    а как исправить "Headers already set" не прописывать на каждой страницы session_start
     
  15. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    кодировку всех скриптов в utf-8 no BOM
     
  16. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    думать прежде чем спросить ставить знаки препинания
     
  17. Sergey_Tsarev

    Sergey_Tsarev Активный пользователь

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    Аааа!!! $_POST это массив, а $data это переменная, я правильно понял?
     
  18. upr_adm

    upr_adm Новичок

    С нами с:
    23 дек 2017
    Сообщения:
    24
    Симпатии:
    0
    Парни можете скинуть рабочий пример работы сессия на php
    как у меня только рабочий
    алгоритм
    авторизация - вход в личный кабинет-если обновление страницы- остаемся авторизованы
    как то так, как я пытаюсь разработать личный Кабинет
     
  19. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    безнадёжен
     
  20. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
  21. upr_adm

    upr_adm Новичок

    С нами с:
    23 дек 2017
    Сообщения:
    24
    Симпатии:
    0
    я разобрался в
    чем причина всем спасибо за советы
    видимо потому что я на каждой страницы писал session_start() плюс подключал db.php где есть строчка session_start
     
  22. glorsh66

    glorsh66 Активный пользователь

    С нами с:
    9 июл 2017
    Сообщения:
    247
    Симпатии:
    4
    Кстати - поясните - как мог на сферическую ситуацию в вакумку - utf-8 no BOM повлиять?
     
  23. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    UTF-8 WITH BOM мог повлиять. MouseZver предложил решение: "без BOM".

    Невидимый в редакторе текста BOM стоит до певого <?php и является выводом в тело страницы. а это мешает заголовкам.
     
    glorsh66 нравится это.
  24. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Поймёшь когда столкнёшься с проблемой. Зачастую эта проблема вылазит при создании классов. Изи это проверить через консоль, где нибудь в редакторе nano или vim или ещё в каком.
     
  25. glorsh66

    glorsh66 Активный пользователь

    С нами с:
    9 июл 2017
    Сообщения:
    247
    Симпатии:
    4
    Ага я понял - типа старого древнего забытого пробела перед скобочкой <?php (т.е. содержимое уже выводится.)