Здравствуйте, у меня есть странная проблема, где у меня есть страница входа в систему 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, возможно, это проблема.
для начала, ваш логин,
if($login->is_loggedin()!="")
{
$login->redirect('home.php');
}
почему это не if($login->is_loggedin()!== true)
Это вывело бы любые странные возвращения на проверку if,
В настоящее время, если он видит что-то, что не является «», он не будет перенаправлять на дом, т.е. если ваша функция возвращает false.
Это главное, что выделяется для меня, (я могу быть далеко от базы здесь)
Других решений пока нет …