Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
Php 如果会话已过期,则AJAX注销_Php_Ajax_Session - Fatal编程技术网

Php 如果会话已过期,则AJAX注销

Php 如果会话已过期,则AJAX注销,php,ajax,session,Php,Ajax,Session,我有许多AJAX调用,如果会话已过期,这些调用仍能部分工作 例如:将加载一个ContactUs表单,该表单可以填写并显示为已发送,但AJAX调用在后端失败,因为会话变量不存在 我想设置一个通用的PHP来检查会话是否仍然存在,如下所示: session_start(); <?php if(!isset($_SESSION['userid']) {header('Location: index.php');}?> session_start(); 如果是AJAX调用,则页

我有许多AJAX调用,如果会话已过期,这些调用仍能部分工作

例如:将加载一个ContactUs表单,该表单可以填写并显示为已发送,但AJAX调用在后端失败,因为会话变量不存在

我想设置一个通用的PHP来检查会话是否仍然存在,如下所示:

 session_start();     
 <?php if(!isset($_SESSION['userid']) {header('Location: index.php');}?>
session_start();

如果是AJAX调用,则页面的标题已经发送,因此无法通过AJAX调用进行更改。相反,请尝试使用元刷新代替标头重定向:

<?php
session_start();
if(!isset($_SESSION['userid']) { 
    echo '<meta http-equiv="refresh" content="0; url=index.php">'; 
} 
?>

更新您的脚本如下:

<?php
session_start();
if(!isset($_SESSION['userid']) {
  echo 'true';
} else echo 'false';
?>

不,除非您已经发送了一些输出,否则这实际上应该是可行的。你有什么错误吗?@Truth如果他通过AJAX调用并获取信息,很可能他已经有了输出(AJAX调用需要输出?),因此除非页面刷新,否则标题无法更改。问题是这段代码发生在哪里。AJAX调用本身还没有被发送到输出,因此仍然有可能。Adam应该改写他的问题并更好地解释它。@事实上,我认为根据他给我们的信息,我们可以放心地假设他的代码来自AJAX调用。无论哪种方式,我都同意,代码的运行可以解释得更好一些。很好,这也可以,但我想知道在会话过期时使用“meta-http-equiv=refresh”而不是头重定向是否有任何风险、优势或劣势。