Добрый день делаю личный кабинет использую сессию после авторизации входа личный кабинет проблема в том что при обновлении страницы сессия теряется провирял так if (isset($_SESSION['logged_user'])){ echo 'Сессия существует'; }else echo 'Сессия несуществует';
да --- Добавлено --- вот код 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©</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 ' <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©</p> </div> </body> </html>'; ?>
я тоже не вижу все работает как задумал только при нажатии f5 клавиши сессия сбрасывается файл сессии создается в каталоге /tmp работаю на windows 7 denver php7 не пойму почему
Ахах, а читать твой код думаешь удобно без подсветки? --- Добавлено --- И кстати, зачем вот это? PHP: $data=$_POST;
эта проблема из параллельного мира, а в этом мире выясняется что у автора куки не сохраняются в браузере, либо ошибка 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: <?php error_reporting ( E_ALL ); echo $_SESSION['s'] ?? 111; session_start(); $_SESSION['s'] = 222; --- Добавлено --- я же в свою очередь ответа не увидел на пост https://php.ru/forum/threads/pochemu-pri-obnovlenii-stranicy-sessija-popadaet.69487/#post-561191
Парни так в чем причина почему не сохраняются сессия при обновлении страницы может я что-то не дописал --- Добавлено --- используется форма и массив post после нажатия кнопки данные введенные в фору заганяются в массив $_post и передаются в переменную $data
одно из двух или оба разом: * BOM * ошибка/предупреждение возникающее до session_start то есть сессии нет т.к. сессинная кука не устанавливается по причине "Headers already sent"
Парни можете скинуть рабочий пример работы сессия на php как у меня только рабочий алгоритм авторизация - вход в личный кабинет-если обновление страницы- остаемся авторизованы как то так, как я пытаюсь разработать личный Кабинет
я разобрался в чем причина всем спасибо за советы видимо потому что я на каждой страницы писал session_start() плюс подключал db.php где есть строчка session_start
UTF-8 WITH BOM мог повлиять. MouseZver предложил решение: "без BOM". Невидимый в редакторе текста BOM стоит до певого <?php и является выводом в тело страницы. а это мешает заголовкам.
Поймёшь когда столкнёшься с проблемой. Зачастую эта проблема вылазит при создании классов. Изи это проверить через консоль, где нибудь в редакторе nano или vim или ещё в каком.
Ага я понял - типа старого древнего забытого пробела перед скобочкой <?php (т.е. содержимое уже выводится.)