2013-05-26 45 views
0

好吧,我做了一个代码,我连接用户到我的数据库,然后我设置为该用户登录,如果电子邮件已经在数据库中,我只是登录用户...当他们使用连接通过Facebook无法注销用户从网站

问题是注销按钮不工作..我试过了。

session_start(); 
session_destroy(); 

在退出,但只要被重定向到索引页,(我想再次loged)

我怎样才能避免这种情况..

编辑:我不想用户被从Facebook取消。刚刚从我的网站中删除

这是我的代码。

<?php 
if ($userId) { 
// 
// already logged? show some data 
$userInfo = $facebook->api('/' + $userId); 





if (isset($userInfo['email'])) 

{ include "facebookregister.php"; } else { echo "no hay permisos de facebook"; } 

} else { 
// 
// use javaascript api to open dialogue and perform 
// the facebook connect process by inserting the fb:login-button 
?> 
<div id="fb-root"></div> 
<fb:login-button scope='email,user_birthday'></fb:login-button> 
<?php 
} 
?> 
<script> 
window.fbAsyncInit = function() { 
FB.init({ 
appId : <?=YOUR_APP_ID?>, 
status : true, 
cookie : true, 
xfbml : true, 
oauth : true, 
}); 



FB.Event.subscribe('auth.login', function(response) { 
// ------------------------------------------------------ 
// This is the callback if everything is ok 
window.location.reload(); 
}); 
}; 

(function(d){ 
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} 
js = d.createElement('script'); js.id = id; js.async = true; 
js.src = "//connect.facebook.net/en_US/all.js"; 
d.getElementsByTagName('head')[0].appendChild(js); 
}(document)); 
</script> 

并注销。

function logout_action() 
    { 
     $srv_nms=BASE; 
     $srv_nms=str_replace("http://","",$srv_nms); 
     $srv_nms=str_replace("https://","",$srv_nms); 
     $srv_nms=str_replace("www.","",$srv_nms); 


     $srv_pats=$srv_nms; 

     $srv_nms_arr=explode("/",$srv_nms); 
     $srv_nms=$srv_nms_arr[0]; 


     $srv_pats=str_replace($srv_nms."/","",$srv_pats); 


     setcookie(COOKIE_LOGINID,"",0,"/".$srv_pats,$srv_nms); 
     setcookie(COOKIE_USERNAME,"",0,"/".$srv_pats,$srv_nms); 
     setcookie(COOKIE_PASSWORD,"",0,"/".$srv_pats,$srv_nms); 

    session_start(); 
session_destroy(); 

     header("Location: ".$this->make_url("user/login/l")); 
     die; 
    } 

回答

0
在注销操作

你是session_destroy将在您的服务器只,而不是在API清除会话注销。

所以你需要使$ facebook-> api注销请求完全从Facebook注销。 注意:请参阅api文档以了解注销请求。

+0

多数民众赞成正是我想避免...我不想从Facebook注销用户,只为我的网站..但此代码创建一种“循环”,他们总是logeid再次登录时.. 。我可以设置一个名称为fb:登录名称=“”或其他条件的“登录”过程。 –

1

我想我会使用一个cookie。注销时,请设置一个cookie,告诉您已请求注销。然后在主页上,从facebook API获取数据之前,检查cookie。很明显,您必须在登录后覆盖或过期Cookie ...但这应该为您解决。

+0

是的脚本它已经使用cookie setcookie(COOKIE_USERNAME,“”,0,“/”。$ srv_pats,$ srv_nms);问题是我不明白这个价值..也我认为这COOKIE_USERNAME被定义在其他地方..我尝试了正常的设置和它dosent工作...我将搜索教程设置饼干感谢 –

+0

你不必-想想吧。虽然不是“优雅”......不用担心已经使用的cookies ......为此特定目的制作一个新的cookie。只需设置一个名为“fblogout”的cookie(例如),并将该值设置为“yes”或其他。然后你可以检查$ _COOKIE ['fblogout'] =='yes'并绕过facebook API。登录后,只需将该cookie的到期日期设置为'-1',它就会消失(尽管我也会将该值设置为'no'作为备用预防措施)。 – techtheatre

相关问题