-1

我有一个应用程序,它在前面使用 jQuery,在后面使用 PHP。如果 PHP 会话过期,那么如果用户尝试与之交互,应用程序将会做一些奇怪的事情。因此,我想定期检查以确保 PHP 会话仍然设置,如果没有,提示用户重新登录,然后才能执行任何操作。

所以,我的问题如下:如果我每 10 秒发送一个 ajax 帖子来检查是否有特定的 PHP 会话变量 isset,这是否矫枉过正?基本上,我使用 ajax 向一个看起来像这样的 php 页面发送请求:

<?php
session_start();

// CHECK FOR SESSION
if (isset($_SESSION['UserID'])) {
    $response = 'true';
} else {
    $response = 'false';    
}

// ECHO RESPONSE
echo "<response>\n";
echo "\t<row>\n";
echo "\t\t<valid>".$response."</valid>\n";
echo "\t</row>\n";
echo "</response>\n";
?>

然后我解析结果。

有人可以建议一种更轻松的方法吗?或者我做的有什么问题吗?

4

1 回答 1

1

如果会话过期,当有人试图与应用程序交互时,“奇怪的事情”是什么?是因为它还从服务器获取数据,并且因为会话过期而没有得到正确的数据吗?

如果是这样,如果会话过期,您可以让服务器发回某个响应并在 javascript 中检查。例如,您可以让响应发送回一个 json,第一个键session是一个布尔值,指示会话是否仍然有效,第二个键data在会话仍然有效时保存最初请求的数据。

当您使用这种方法时,您不必每 10 秒检查一次,您只需在检测到会话过期后立即做出适当的响应。

于 2013-05-29T16:08:17.807 回答