2016-10-21 9 views
0

Пожалуйста, простите меня, я знаю, что есть некоторые вопросы, на переполнение стека относительно этого, но я не нахожу любое решение, которое подходит моя проблема. У меня проблема, когда срок действия сессии истек, страница не перезагружается автоматически. Пожалуйста помоги. Спасибо! Любая помощь будет оценена по достоинству.Как автоматически обновить страницу и перенаправляет на страницу входа в систему, когда сеанс закончен (PHP)

Это код, который я попробовал, $_SESSION['created'] = time();

if((time() - $_SESSION['created']) > 600) { 
    header("Refresh: 1;url='logout.php'"); 
} else { 
    $_SESSION['created'] = time(); 
} 
+0

удалите одинарные кавычки в заголовке параметра url ("Refresh: 1; url = logout.php"); – JYoThI

+0

поместить этот код во все верхней части страницы, когда-либо перемещаться на все страницы во время сеанса истекло означает, что он будет перенаправлять logout.php – JYoThI

+0

@JYoThI не нравится, когда-либо сеанс истек он должен автоматически перенаправлять на страницу входа в систему. – Naresh

ответ

1

В соответствии с вашими потребностями вы должны проверить сессию каждый раз секунд сеанс действителен или нет в стороне сервера, так что-то вроде этого.

1) Создано яваскрипт и Ajax для проверки сеанса истек или не в стороне сервера каждые раз секунды

2) session.php страница, чтобы проверить действительную сессию или нет

3) Затем возвращение 1 или -1, основанный на том, что запускает функцию location.reload(), она автоматически перемещается в logout.php, потому что теперь ваше истинное состояние становится истинным.

session.php

 <?php 

      session_start(); 


      if(!isset($_SESSION['created']) || (time() - $_SESSION['created']) > 600) { 

       session_destroy(); 

       echo "-1"; 

      } else { 

       echo "1"; 

      } 

     ?> 

Вставьте этот JavaScript в каждой странице

Java Script:

 <script type="text/javascript"> 

       function session_checking() 
       { 
        $.post("session.php", function(data) { 

         if(data == "-1") 
         { 
          alert("Your session has been expired!"); 
          location.reload(); 
         } 

        }); 
       } 

       var validateSession = setInterval(session_checking, 1000); 

    </script> 

Этот код должен быть на каждой странице сверху

if(!isset($_SESSION['created']) || (time() - $_SESSION['created']) > 600) { 
header("Refresh: 1;url=logout.php"); 
} else { 
$_SESSION['created'] = time(); 
} 
+0

Спасибо вам, что это работает, но у меня есть небольшая проблема, если кто-то остается на той же странице, без перехода на другой страницу или перезагрузить страницу, которую она считает бездействующей. Сессия не заканчивается до тех пор, пока он не перейдет на другую страницу. – Naresh

+0

нет нет его работы во всех случаях. потому что javascript, проверяющий сеанс каждую секунду, если истек, означает, что он перезагрузит текущую страницу с помощью location.reload(); так что страница автоматически перезагружается, и теперь ваша вершина, если условие станет истинным, и переадресовать страницу в logout.php, вы поняли? – JYoThI

+0

Я попробовал Jyothi и столкнулся с этой проблемой, поэтому я упомянул. – Naresh