Так как пару дней (по крайней мере, я об этом знаю) я не могу войти на свой сайт, используя Internet Explorer или Edge. Логин работает с использованием Firefox и Chrome! Я также видел проблему на других компьютерах, указывая, что это не проблема локального браузера.
Мне известно, что IE / Edge молча удаляет файлы cookie с доменов с _ в поддомене, однако в моей ситуации их нет.
После пота и боли я сократил сценарий до минимума, чтобы воспроизвести проблему.
Я также нашел проблему, но у меня нет истинного решения.
<?PHP
ini_set( 'session.cookie_lifetime', '3600' );
if( session_id() == '' )
session_start( );
$i = 1;
if( isset( $_POST['logout'] ) ) {
unset( $_SESSION['loggedin' . $i] );
session_destroy();
header( 'Location: http://jbtje.com/test' . $i . '.php' );
}
if( isset( $_POST['login'] ) ) {
$_SESSION['loggedin' . $i] = 'LOGGED IN: ' . $i;
header( 'Location: http://jbtje.com/test' . $i . '.php' );
}
?><!DOCTYPE html>
<html>
<head>
<title>TEST <?PHP $i ?></title>
</head>
<body>
<?PHP echo 'You are currently ' . (isset($_SESSION['loggedin' . $i]) ? $_SESSION['loggedin' . $i] : 'not logged in ' . $i); ?>
<form method="POST"><input type="submit" name="login" value="login" /></form>
<form method="POST"><input type="submit" name="logout" value="logout" /></form>
</body>
</html>
Тестовый сайт: http://jbtje.com/test1.php
Если вы нажмете кнопку входа в систему, текст должен измениться на «Вы вошли в систему». Но это не так.
Однако, если вы прокомментируете строку ini_set (и измените $ i на 2):
http://jbtje.com/test2.php Это делает Работа….
Почему установка cookie_lifetime с использованием PHP приводит к тому, что IE и Edge не сохраняют cookie? (и как это решить …?)
С наилучшими пожеланиями,
Джеффри
Задача ещё не решена.
Других решений пока нет …