Как включить разные меню для зарегистрированных и незарегистрированных пользователей в php?

#php #session

#php #сессия

Вопрос:

Мне нужна небольшая помощь с php. Я пытаюсь включить разные меню для зарегистрированных и незарегистрированных пользователей.

 <?php
if ($_SESSION['user-class'] == 1) // 1 is class of registered users, which is assign after user log in
{echo '<a href="index.php?id=logout">Log out</a>'; }
else
{echo '<a href="index.php?id=login">Log in</a>'; }
?>
  

Это работает нормально, но есть одна маленькая проблема: когда пользователь не вошел в систему, он получает сообщение
Обратите внимание: Неопределенный индекс: user-class

Как это исправить?

Ответ №1:

Вместо этого вы можете использовать if( isset( $_SESSION['user-class'] ) ) , который проверит, существует ли переменная. В качестве альтернативы, вы можете просто предопределить $_SESSION['user-class'] переменную для всех пользователей, вошедших в систему или нет, в ваших заголовочных файлах.

Ответ №2:

Убедитесь, что вы вызвали, session_start() прежде чем пытаться получить доступ к каким-либо $_SESSION переменным. И имейте в виду, что этот индекс не будет установлен, пока вы его не установите, вы можете проверить, установлен ли он с помощью isset() : if (isset($_SESSION['user-class']) amp;amp; $_SESSION['user-class'] == 1) { ... . Также, в качестве практики, не называйте свои $_SESSION переменные с помощью - , используйте _ вместо этого — позволяет использовать такие функции, как list() .

Ответ №3:

 if (!isset($_SESSION)) session_start();

if (isset($_SESSION['user-class']) amp;amp; $_SESSION['user-class'] == 1) {
   echo ' logout';
} else { 
   echo ' login';
}