2011-03-25 22 views
1

我的php页面生成的html取决于用户是否登录。例如,如果用户登录到“显示“注销”链接;如果用户未登录,则显示“登录”链接。如何在使用php和ajax自动记录用户时顺利生成html页面内容

我正在实现自动登录功能。当用户登录时,他们可以选中一个框以保持登录状态。如果他们选中此框,则会创建一个随机ID并将其存储到Cookie中并与用户信息一起存储到数据库中。 (这与[这里]描述的方法类似[1]。

我想实现这个的方式是为了生成一个javascript函数,如果用户没有登录,它会请求cookie如果cookie不存在,我会在页面上显示“登录”链接或将页面指向登录屏幕如果cookie存在,我将使用ajax将cookie传递给php脚本和日志用户回来了。

接下来应该做什么?我应该使用ajax来生成“登录”或“注销”链接吗?这是有道理的,但我觉得使用ajax生成内容取决于是否与否用户登录可能会在我的一些页面上变得复杂,也许我可以在JavaScript中重新加载页面?在这个次要负载上,php会检测用户登录并适当地显示页面。虽然在两次页面加载之间可能会有一些闪烁。

任何想法或建议如何做到这一点,以便它是令人愉快的用户将不胜感激。

谢谢。

回答

1

如果您正在使用PHP生成页面,为什么不用if ($is_logged_in) {...}检查php?

只需访问该cookie为$_COOKIE['my_autologin_token'],检查它是否有效,并开始输出任何HTML代码之前登录的用户。

例子:

<?php 

$is_logged_in = check_if_has_session(); 

if (!$is_logged_in AND isset($_COOKIE['my_autologin_token'])) { 
    $token = $_COOKIE['my_autologin_token']; 
    // get user id from database, based on $token 
    // if is valid token/user_id set $is_logged_in = true; 
} 

?> 
// html content start 
<?php if ($is_logged_in) { /* "Log out" link */ } else { /* Login link */ } ?> 
+0

我做这些的PHP检查,但那些只是帮助而会话处于活动状态。一旦会话过期,我需要依靠客户端的cookie。我会考虑你等待输出html代码的建议,直到我登录用户。可能工作......需要查看我的网页,看看我能够轻松地将其解决。谢谢。 – user418775 2011-03-26 00:42:18

+0

要点是 - 您可以使用PHP访问cookie,而不是使用javascript来完成,然后将值传递给PHP。 – 2011-03-26 07:03:43

+0

没有意识到你可以使用PHP访问cookie - 这使得生活更容易!谢谢。 – user418775 2011-03-26 12:48:57