【发布时间】:2012-05-14 15:19:15
【问题描述】:
如果 SESSION 已过期,我有一些 AJAX 调用仍然部分工作。
例如:将加载一个联系我们的表单,可以填写并显示为已发送,但 AJAX 调用在后端失败,因为 SESSION 变量不存在。
我想设置一个通用的 PHP 来检查会话是否仍然存在,例如:
session_start();
<?php if(!isset($_SESSION['userid']) {header('Location: index.php');}?>
但是在这个地方没有任何反应。
我假设 header() 仅在页面加载时起作用 - 这是正确的吗?
因此,我假设我需要获取 AJAX 调用以在会话中返回成功或失败,并从 JQUERY 进行重定向。
这是最好的方法吗? header() 可以在 AJAX 调用上重定向吗?还有另一种方法可以让重定向从 AJAX PHP 调用中工作吗?
谢谢
* 更新 *
是的,页面已经加载。 AJAX 调用是一个发送联系请求的后页面加载函数。因此,我认为 header() 从我在这里读到的内容是不行的。 header() 本来会很好,因为它可以放在大型 PHP 脚本的顶部,并一般响应设置会话的任何请求。
看起来我必须为每个使用会话的 AJAX 调用构建一个签入。可以使用通用函数。当会话在 AJAX 站点上过期时,是否有更简单的方法可以让用户退出?
【问题讨论】:
-
不,这实际上应该有效,除非您已经发送了一些输出。你有任何错误吗?
-
@Truth 如果他通过 AJAX 调用并获取该信息,很可能他已经有了输出(AJAX 调用需要输出?),所以标题不能更改,除非页面已刷新。
-
这里的问题是这段代码发生在哪里。 AJAX 调用本身还没有发送输出,所以它仍然是可能的。亚当应该改写他的问题并更好地解释它。
-
@Truth 我认为根据他提供给我们的信息,我们可以安全地假设他的代码来自 AJAX 调用。无论哪种方式我都同意,可以更好地解释代码的运行。