2013-05-29 56 views
-1

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

所以,我的问题是以下几点:如果我每10秒发送一个ajax文章来检查一个特定的PHP会话变量是否被设置,是否过度杀伤?基本上,我发送一个请求与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"; 
?> 

然后我解析结果。

有人可以建议一个更轻的方法?或者我在做什么错事?

+0

我个人不会说这是过度杀毒,现在像Facebook这样的网站,发送上帝知道多少个Ajax请求。虽然他们确实编码了他们的退货内容以缩小尺寸。这一切都取决于您的服务器/连接的规格/速度。它还使用名为[Comet](http://en.wikipedia.org/wiki/Comet_%28programming%29)的数据将数据从服务器推送到客户端,而不进行轮询。 – MatthewMcGovern

回答

1

如果会话过期时有人试图与应用程序交互,那么“怪异的东西”是什么?是否因为它也从服务器提取数据,并且由于会话过期而无法获取正确的数据?

如果是这样,您可以让服务器发回特定的响应,如果会话过期并检查在JavaScript中。例如,你可以让响应发回一个json,第一个键是session,它是一个布尔值,指示会话是否仍然有效,当第二个键data保持原始请求的数据时,会话仍然有效。

当您使用这种方法时,您不必每10秒检查一次,只要您检测到会话过期,您就可以做出适当的响应。