$ _SESSION работает после второго входа

Здравствуйте, у меня есть странная проблема, где у меня есть страница входа в систему index.php: на какую страницу входа я устанавливаю:

$_SESSION['user'] = $row['username'];

для пользователей, которые успешно вошли в систему.
Затем на целевой странице я проверил, вошел ли пользователь в систему, если не будет перенаправлен на страницу входа:

if(!$session->is_loggedin()) {
// session no set redirects to login page
$session->redirect('index.php');
}

Внутри файла класса:

public function is_loggedin() {
if(isset($_SESSION['user'])) {
return true;
}
}

Так что проблема, с которой я сталкиваюсь, представлена ​​только на интернет-сервере, на локальном хосте xampp все работает нормально. Проблема в том, если я захожу на сайт. затем, если вы выйдете из системы и введете URL-адрес для входа, я буду перенаправлен на home.php, где я делаю print_r ($ _ SESSION), и он показывает, что в массиве есть сеанс, который еще существует. но когда я нажимаю на любые ссылки в меню, я возвращаюсь на страницу входа без сеанса.

и должны войти в систему.

код на странице index.php, чтобы проверить, существует ли сессия:

if($login->is_loggedin()!="") {
$login->redirect('home.php');
}

Таким образом, в этом случае каждый раз, когда пользователь заходит на страницу, он показывает, что он вошел в систему, но это не так, и тогда он может увидеть home.php, который должен быть защищен. Когда пользователь нажимает на любую ссылку меню, он перенаправляется на страницу входа.

Я предполагаю, что это может быть какая-то конфигурация php, поскольку на локальном хосте XAMPP работает. Есть идеи, где мне искать?

РЕДАКТИРОВАТЬ: я разместил следующую проверку на странице индекса:

if(isset($_SESSION['user']) && !empty($_SESSION['user'])) {
echo 'Set and not empty, and no undefined index error!';
}

чтобы проверить, есть ли сеанс, поэтому каждый раз, когда я открываю URL, он показывает TRUE. когда я открываю /home.php, он открывает домашнюю страницу, щелкая любые ссылки, перенаправленные на домашнюю страницу, где ничего не отображается. Такое ощущение, что сервер кеширует первую страницу сессией каждый раз, когда я ее открываю. или браузер автоматически отправляет эту информацию на сервер.

Или другой сценарий случая, который иногда встречается. Я открываю сайт и захожу на него. нажав любую кнопку, я перенаправлен на страницу входа после второй попытки входа, все работает просто отлично.

Другая вещь, которая происходит, — то, что, когда поддельная сессия установлена, все глифы Bootstrap показывают квадраты вместо фактических символов

Я вижу, что в php info для session.use_only_cookies установлено значение ON, возможно, это проблема.

0

Решение

для начала, ваш логин,

if($login->is_loggedin()!="")
{
$login->redirect('home.php');
}

почему это не if($login->is_loggedin()!== true)

Это вывело бы любые странные возвращения на проверку if,

В настоящее время, если он видит что-то, что не является «», он не будет перенаправлять на дом, т.е. если ваша функция возвращает false.

Это главное, что выделяется для меня, (я могу быть далеко от базы здесь)

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector