У меня есть логин, который я реализовал с помощью AJAX, и PHP на бэкэнде устанавливает $ _SESSION ['guest'] перед отправкой текста ответа обратно.Затем javascript на внешнем интерфейсе перенаправляет меня на гостевую страницу, которая проверяет, является ли isset ($ _ SESSION ['guest']), но часто это приводит к значению false, и меня переводят на другую страницу (используя мою ветку else).
Мне интересно, возможно, я проверяю это слишком рано, и поэтому isset ($ _ SESSION ['guest']) приводит к значению false.Но я заставляю его отсчитывать 5 секунд перед перенаправлением на страницу, которая его проверяет, так что я этого не понимаю.
После того, как это произошло пару раз (я выхожу из системы и снова захожу), он перестает работать, и я не могу заставить его потерпеть неудачу, что, очевидно, не помогает!Я подумал, что это может быть проблема с кэшированием / cookie, но я все это очистил, и она все равно больше не потерпит неудачу.
Есть идеи?
//this is the login script snippet
if($rows == 1){
$_SESSION[$type] = $username; //$type is posted over as guest or client. this is valid right?
$_SESSION[$type.'_id'] = $result['id'];
echo $_SESSION['welcome'] = 'You have logged in successfully.';
}
<?php
//snippet from the guest page. session_start() is invoked within the included 'page_top.php'
include('page_top.php');
if(isset($_SESSION['guest'])){
if(isset($_GET['sect'])){
if($_GET['sect'] == 'photography'){
include('view_album.php');
}
else{
include('404.html');
}
}
else{
include('welcome.php');
}
}
else{
include('403.html'); //i get redirected here!
}
include('page_bottom.php');
?>
edit: теперь я думаю, что когдаон терпит неудачу, переменная сеанса просто не устанавливается, потому что, если я перезагружаю свою гостевую страницу, она каждый раз приводит к странице 403.html, так что это не задержка, она просто не устанавливается.