#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';
}