Не могу понять в чем проблема не выводится логин пользователя после его авторизации, хотя должен: Админ-панель PHP: <?php require "/includes/lgsn.php"; ?> <?php if( isset($_SESSION['logged_user']) ) : ?> Вы авторизованы! <?php echo $_SESSION['logged_user']; ?> </br> Привет, <?php echo $_SESSION['logged_user']->login; ?> <hr><a href="/logout.php">Выйти</a> <?php else : ?> Вы не авторизованы! <?php endif; ?> Авторизация PHP: <form action="/login.php" method="POST"> <?php $data = $_POST; if( isset($data['do_login']) ) { $errors = array(); if( trim($data['login']) == '' ) { $errors[] = 'Введите логин'; } if( $data['password'] == '' ) { $errors[] = 'Введите пароль'; } $user = R::findOne('users', 'login = ?', array($data['login'])); if( $user ) { if( password_verify($data['password'], $user->password) ) { echo 'You' . "'" . 've been signup!'; $_SESSION['logged_user'] = $user; } else { $errors[] = 'Неверный пароль!'; } } else { $errors[] = 'Пользователь с таким логином не найден!'; } if( ! empty($errors) ) { echo '<div style="color: red;">'.array_shift($errors).'</div'; } } ?> <p><label for="login">Логин:</label></p> <p><input id="login" type="text" name="login" value="<?php echo @$data['login']; ?>"></p> <p><label for="password">Пароль:</label></p> <p><input id="password" type="text" name="password" value="<?php echo @$data['password']; ?>"></p> <p><button type="submit" name="do_login">Войти</button></p> </form> <strong>Файлы все равно на лок-хосте. Файл подключения базы данных работает корректно - это проверено. Ошибка может быть где в этом коде</strong> Использую redbean php
допиши отображение ошибок error_reporting ... и узнай с чем, с какой функцией работают $_SESSION какая функция старт дает ? гугл что говорит ? почему ? $data = $_POST; 58 и 62 собаки убери - недруг кодера
1. Какое значение выдают $data['password'] и $user->password? 2. У Вас пароли хранятся в незашифрованном виде? 3. Лучше написать так PHP: if( $user instanceof ИмяКласса) {... //или if( $user !== false) {... 4. Что в конечном счете выводится:"Вы не авторизованы!" или "Вы авторизованы!"? P.S.: echo'You\'ve been signup!';
1. $data['password'] - значение введенное пользователем в поле пароль (e.g. 000) $user->password - зашифрованный пароль из базы данных 2. Пароли, которые пользователи вводят на странице signup хранятся в зашифрованном виде в БД с помощью ф-ии password_hash 3. + 4. Вы авторизованы, если данные введены верно
4. То-есть, выводится "вы авторизованы", но логин не выводится? PHP: //ни тут: echo $_SESSION['logged_user']; //ни тут: echo $_SESSION['logged_user']->login; // ?
Ой, я подумал про страницу авторизации Здесь PHP: echo $_SESSION['logged_user']->login; должно вывестись логин пользователя из базы
isset($_SESSION['logged_user']) дает true или false при вводе корректного логина и пароля пользователем? Если true - значит проблема в самом объекте $user (точнее его классе). У свойства login установлено public?
В догонку: Загружено ли описание класса (require 'имя файла класса' ) в момент доступа к свойству login?
isset($_SESSION['logged_user']) = true --- Добавлено --- Я новичок - можете объяснить --- Добавлено --- Я предоставил весь код php кроме файла который подключается в начале. Он сообщается с базой данных --- Добавлено --- PHP: <?php session_start();?> <?php require "/rb.php"; R::setup( 'mysql:host=?;dbname=?', '?', '?'); ?> ? - вопросы - значения конкретные я их скрыл
В этой строке из первого Вашего сообщения в $user передается (как я понял) объект пользователя или false. Так вот этот объект должен быть описан в каком либо классе. Объявление этого класса, наверняка, лежит в отдельном файле. Вопрос в том подгружается ли этот файл (с классом пользователя) в момент, когда Вы запрашиваете свойство login? PHP: <?php echo $_SESSION['logged_user']->login; ?>
Я так полагаю в файл админ-панели Вам надо добавить строчку PHP: <?php require_once "/rb.php"; ?> Или какой другой файл, где есть описание класса пользователя