Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查会话是否仍在运行的正确方法是什么?有哪些方法?_Javascript_Php_Ajax_Session - Fatal编程技术网

Javascript 检查会话是否仍在运行的正确方法是什么?有哪些方法?

Javascript 检查会话是否仍在运行的正确方法是什么?有哪些方法?,javascript,php,ajax,session,Javascript,Php,Ajax,Session,所以我已经有了我的第一次网页设计经验,但是我做了一些我不喜欢的事情,主要是因为时间。所以不管怎样,我不知道哪种方法是处理会话的正确方法。我在上一个项目中所做的是将PHP嵌入HTML,并基于$\u会话中的任何内容,通常是一个id和一个用户类型号,然后通过嵌入式PHP向用户打开或关闭网站的部分 然而,这不是我最初想做的,首先我想做的是制作一个JavaScript代码,通过AJAX向服务器发送请求,并检查会话是否仍然处于活动状态,并基于网站的打开/关闭部分,但是,我必须在每个页面上发出请求,并且每隔一

所以我已经有了我的第一次网页设计经验,但是我做了一些我不喜欢的事情,主要是因为时间。所以不管怎样,我不知道哪种方法是处理会话的正确方法。我在上一个项目中所做的是将PHP嵌入HTML,并基于$\u会话中的任何内容,通常是一个id和一个用户类型号,然后通过嵌入式PHP向用户打开或关闭网站的部分

然而,这不是我最初想做的,首先我想做的是制作一个JavaScript代码,通过AJAX向服务器发送请求,并检查会话是否仍然处于活动状态,并基于网站的打开/关闭部分,但是,我必须在每个页面上发出请求,并且每隔一段时间发出一次请求,以确保用户已登录。我应该在客户端处理类似的事情吗


还有哪些方法可以检查会话,但不嵌入PHP,而是使用JavaScript修改HTML文档

要做到这一点,您只需要一个ajax循环请求和一个php文件来检查会话

Javascript

function checkLogin(un) { //put this function in a loop of some sort depending on how you want to use it
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
      logout(xmlhttp.responseText);
    }
  }
  xmlhttp.open("GET", "checklogin.php?un=" + un, true);
  xmlhttp.send();
}

function logout(resp) {
  if (resp == "false") { //comparing actual text, not boolean
    window.location.href = 'logout.php'; //destroy the session or something
  }
}
PHP文件checklogin.PHP(非常简单)



php将取决于您存储会话的方式,但在本例中,它仅使用一个以用户名命名的会话来存储
true
(如果登录)。如果您决定实际使用它,我建议您将其变得更复杂。

可能的答案太多,或者好的答案对于这种格式来说太长。请添加详细信息,以缩小答案集或隔离可以在几段中回答的问题。我建议你找一个发展论坛(也许?)来概括一下。然后,当您遇到特定的编码问题时,请回到StackOverflow,我们很乐意提供帮助。会话将在X秒的非活动时间后过期(取决于您的PHP配置),因此您可能只需要一个JavaScript计时器就可以了。当然,您的用户可能会使用另一个窗口/选项卡注销,AJAX op可以解决这一问题,但重复检查计时器会浪费带宽(尤其是在移动设备上,数据可能很昂贵)。老实说,这似乎是一个很好的解决方案。谢谢你的建议。
<?php
if ($_SESSION[$_GET['un']] != true) {
  echo 'false';
}
?>