2015-11-04 3 views
0

Я хотел создать функцию JavaScript, которая изменяет тайм-аут сеанса PHP как для входа в систему, так и для пользователя без входа.Пустой сеанс php (если инструкция else)

Я добавил тайм-аут сеанса до header.php. Это связано с тем, что, когда пользователи регистрируются, пользователи могут получить доступ ко всему веб-сайту. Однако некоторые страницы доступны как для зарегистрированных пользователей, так и для неавторизованных пользователей.

Я не уверен, как сделать JavaScript в инструкции if else таким образом, что он будет отличать гостя session id или может быть успехом Ajax для размещения истинного или ложного возврата с PHP. Я не уверен, как это должно быть сделано.

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

обыскали , но не смог найти ни одного вывода. Пожалуйста, помогите мне. Благодаря! Вот мой код.

ajax.js

window.onload = init; 
var interval; 
function init() { 
    interval = setInterval(trackLogin, 1000); 
} 
function trackLogin() { 
    var xmlReq = false; 
    try { 
     xmlReq = new ActiveXObject("Msxml2.XMLHTTP"); 
    } catch (e) { 
     try { 
      xmlReq = new ActiveXObject("Microsoft.XMLHTTP"); 
     } catch (e2) { 
      xmlReq = false; 
     } 
    } 
    if (!xmlReq && typeof XMLHttpRequest != 'undefined') { 
     xmlReq = new XMLHttpRequest(); 
    } 

    xmlReq.open('get', 'check.php', true); 
    xmlReq.setRequestHeader("Connection", "close"); 
    xmlReq.send(null); 
    xmlReq.onreadystatechange = function() { 
     if (xmlReq.readyState == 4 && xmlReq.status == 200) { 
      if (xmlReq.responseText == 1) { 
       clearInterval(interval); 
       alert('You have been logged out. You will now be redirected to home page.'); 
       document.location.href = "index.php"; 
      } 
     } 
    } 
} 

ответ

1

Он смотрит на меня, как если бы ваш сервер возвращает 1 который является то, что линия xmlReq.responseText == 1 оценивает. Вместо этого просто верните объект JSON, а затем проанализируйте этот ответ и найдите результат.

В PHP возвращает JSON закодированный массив, в отличие от return true

return json_encode(array(
    'role' => $_SESSION['role'], //assuming something like guest/logged-in 
    'user_id' => $_SESSION['user_id'] 
)); 

Затем разобрать текст ответа, как, например, с тем, чтобы сделать сравнение:

var obj = xmlReq.responseText; 
var jsonObj = JSON.parse(obj); 
//now we can make a comparison against our keys 'role' and 'user_id' 

if(jsonObj['role'] == 'guest'){ 
    //guest role, do something here 
} else if (jsonObj['role'] == 'logged-in') { 
    //do something else for logged in users 
} 

удачи.

+0

wow я могу попробовать сначала, потому что я все еще новичок. Я должен закодировать это в 'ajax.js'? @Ohgodwhy –

+0

Часть javascript (2-я часть) должна заменить весь условный оператор: 'if (xmlReq.responseText == 1) {' все время, пока вы не закроете его ')' – Ohgodwhy

+0

Я ссылался на пример ур, но я didn 't получить всплывающее сообщение о том, что пользователь входа в систему вышел из системы @Ohgodwhy –

Смежные вопросы