У меня есть веб-сайт PHP версии 5.4.45, хотя при входе в систему он работает, как и ожидалось, в настольных компьютерах и на некоторых мобильных устройствах, но на на некоторых мобильных устройствах сбой входа в систему .
Информация о моем мобильном устройстве:
Версия приложения: Chrome 73.0.3683.90
Операционная система: Android 8.1.0; Moto G (5S) Plus Build OPSS28.65-36-9
Правовая информация: Copyright 2019 Google Inc. Все права защищены
Я пробовал использовать следующие решения, но не могу сохранить сеанс
- php session.use_trans_sid
- Сессия PHP потеряна после перенаправления
- Сеанс PHP слишком рано уничтожен в мобильных браузерах
Я отладил код на этом устройстве, а затем обнаружил, что сеанс очищается при перенаправлении. Перед перенаправлением я проверил сеанс с var_dump($_SESSION)
, он показывает все значения сеанса, которые я установил ранее после перенаправления header("Location: $redirectURL");
, на перенаправленной странице, которую я проверяю с var_dump($_SESSION)
, отображается пустой массив.
Я также пытался в PHP 7.1.X и 7.2.X, но это дает тот же результат - сеанс очищается.
Мои образцы кодов:
authenticate.php
session_start();
// temporarily I set the flag to true,
// actually it will set after database check
$login = true;
if ($login == true) {
// Session variable set
$_SESSION['userID'] = "user01";
$redirectURL = "profile.php";
header("Location: $redirectURL");
exit();
} else {
$redirectURL = "login.php";
header("Location: $redirectURL");
exit();
}
profile.php
session_start();
// Display empty string
echo($_SESSION['userID']);
Мне нужно было поддерживать сеанс при header("Location: $redirectURL");