@Richswitch
junior

Как справиться с ошибкой $_SESSION?

Привет!
Есть 2 блока (1 блок = Вход / Регистрация 2 блок = Личный кабинет пользователя), которые находятся в файле usercab.php
<?php 

 $login_r = '<div class="reg_wrap">
							<a href="../pages/login.php">Вход</a>
							<a href="../pages/signup.php">Регистрация</a>
							<!-- <a href="#"><img src="img/icons/loginx.svg" style="width: 35px; height: 30px"></a> -->
						</div>';

	$parea = '<div class="usercab_wrap">
							<label class="button_chek" for="formToggler">Кабинет</label>
							<input type="checkbox" id="formToggler">
							<ul id="parea">
								<li>'.$_SESSION['logged_user']->login.'</li>   ---- выводит undefined, что логично ведь мы еще не авторизовались
								<li><a href="#"></i>Профиль</a></li>
								<li><a href="#"></i>Истории</a></li>
								<li><a href="#"></i>Сообщения</a></li>
								<li><a href="#"></i>Настройки</a></li>
								<li><a href="../pages/logout.php">Выход</a></li>
							</ul>
						</div>'
 ?>

В index.php я подключаю этот файл, а также подключаю саму БД
<body>
<?php 
require 'usercab.php';
require 'pages/db.php'
?>
....
И здесь if else

						<?php 
						

						if( ! isset($_SESSION['logged_user'])) {
									echo $login_r;
									
						} else {
									echo $parea;
						}
							?>

Получается, что когда пользователь не авторизован он видит 1 блок (Вход\Регистрация), а когда авторизован видит 2 блок (Личный кабинет).

Но, когда пользователь не авторизован и видит блок 1 (Вход/Регистрация) появляется ошибка undefiend, интерпретатор не может найти имя пользователя, которое я запрашиваю во 2 блоке командой$_SESSION['logged_user']->login.
И я не пойму,
- или мой if else в html работает не совсем корректно и подгружает как бы два случая, но показывает один, поэтому и возникает ошибка, когда пользователь не авторизован (хотя это было бы заметно визуально, да и инспекторе HTML в браузере все работает как задуманно)
- или при подключении require 'usercab.php'; в index.php интерпретатором прочитывается сначла весь код, а потом уже применяется if else
- или мои догадки вовсе не догадки, а бред.
Поэтому вопрос к вам, как справиться с ошибкой?
  • Вопрос задан
  • 283 просмотра
Решения вопроса 1
VasiliyIsaichkin
@VasiliyIsaichkin
Web front/back-end (JS-full stack) app developer
Вы неверно понимаете работу интерпретатора, в случае если бы вы использовали функции-геттеры - проблем бы не было, но вы используете обычные переменные, а значит их значения рассчитываются сразуже в момент require 'usercab.php';
Оберните ваши блоки в функции которые возвращают их значение и enjoy!
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы