2010-06-16 52 views
0

我的web系统即时编码与原来的phpBB系统集成在一起。我的意思是当你登录我的网络系统时,你已经登录到登录页面。现在我来到“注销”部分,我想让它变得聪明。现在,它是一个简单地退出链接:如何以智能的方式做到这一点

<a href="<?php echo BASEDIR; ?>../../ucp.php?mode=logout&sid=<? echo $user->data['session_id']; ?>" style="margin-left: 14px; font-size: 10px;">- Log Out</a> 

当你在链接看到它是指forum's ucp.php模式=注销,你需要有SID变量是为了?退出权..无论如何..

我想做一个聪明的方式注销部分,我的意思是,不是你登陆论坛的“你现在已经注销”,我想要的东西也许比如点击后在后台运行此页面,然后刷新当前页面。

或者它应该更聪明只是尝试修改phpbb文件ucp.php?我认为它是硬编码的,而不是我编码的方式,所以这就是为什么我觉得它棘手。

谢谢您的答案和实例如何可以这样做,在一个巧妙的方法..

回答

1

它看起来像注销仅仅是一个GET请求,所以你可以使用jQuery的AJAX库来做到这一点的您。

看看这里的jQuery.get()文档 http://api.jquery.com/jQuery.get/

的基本流程,你要找的是

  1. 当链接用户点击,拦截使用jQuery的点击。
  2. 向注销页面发出AJAX GET请求,并传递必要的数据。
  3. 返回false以防止用户浏览器导航到链接(这样,如果他们关闭了JS,它仍然可以工作)。
  4. 当AJAX请求完成时,更新页面以表明用户已注销。
$.get('../../ucp.php', {mode:"logout", sid:sid-goes-here}, function(){ 
    //do something here after the logout, perhaps updating the page to say "Logged out" 
}); 

这将请求发送到注销页面中传递启动注销所需的变量的背景。一旦这个请求被发送,最后一个参数中定义的函数将被调用。也许是这样的:

$("#header").append("<div class = 'logout-success'>You have been logged out!</div>"); 

会为你工作,但你可以自由地做任何你想在那里。

编辑以总结我乱序的想法这里有一个可能的例子。

$(function(){ 

    $(".logout-link").click(function(){ 
     $.get('../../ucp.php', {mode:"logout", sid:sid-goes-here}, function(){ 
      $("#header").append("<div class = 'logout-success'>You have been logged out!</div>"); 
     }); 
     return false; 
    }); 

}); 
+0

另外,使用GET请求注销函数是一个坏主意。 – 2010-06-16 23:21:29

+0

是的,那里有点不好,但是如果他在问题中发布的代码确实有效,这将起作用。如果它是POST,它不会有太大的不同。 – 2010-06-16 23:22:37

0

运行:

session_destroy(); 

而且似的,你退出。如果您还想清理更多内容,请参阅以下示例: http://ww.php.net/manual/en/function.session-destroy.php运行方式和位置取决于您的其他设置。

会议由phpBB启动的事​​实不起作用。你可能需要设置一个session_name(),但随着其他页面似乎工作我假设你已经完成了排序。