public function login()
{
$config['appId'] = '405802852809513';
$appid=$config['appId'];
$config['secret'] = 'b873cf1c00e9e1554cb0eede34d252d5';
$secret=$config['secret'];
$this->load->library('facebook', $config);
$user = $this->facebook->getUser();
if ($user) {
try {
$user_profile = $this->facebook->api('/me'); print_r($user_profile);
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
if ($user) {
echo"<br>";
echo $data['logoutUrl']=$this->facebook->getLogouturl(array("next"=>site_url('/user/logout')));
} else {
$scope = array(
'scope' => 'email,offline_access,publish_stream,user_birthday,user_location,user_work_history,user_about_me,user_hometown'
);
$data['loginUrl'] = $this->facebook->getLoginUrl($scope);
}
if ($user) {
$logoutUrl=$data['logoutUrl'] ;
$user_info = array(
'name' => $user_profile["name"],
'app_id'=>$appid,
'secret'=>$secret,
'id' =>$user_profile["id"],
'logoutUrl'=> $logoutUrl,
);
$this->load->library('session');
$this->session->set_userdata($user_info);
redirect('user/home') ;
} else {
$this->load->view('frm_login',$data);
}
}
填写电子邮件和passoward后,用户将重定向到主页, home 方法将被调用
public function home(){
$this->load->library('session');
$user_info=$this->session->all_userdata();
if(isset($user_info['name'])){
$data['name']=$user_info['name'];
if(isset($user_info['logoutUrl']))$data['logoutUrl']=$user_info['logoutUrl'];
$this->load->view("home",$data);
}
else{
redirect("user/login");
}
}
这是我的主页的视图
<html>
<body>
Welcome <?php echo $name;?>
<?php
if(isset($logoutUrl))
{?>
<a href="<?php echo $logoutUrl?>">Fb_Logout</a>
<?php }
else
{?>
<a href="<?php echo site_url().'/user/logout';?>">Logout</a>
<?php
}
?>
</body>
</html>
这是我的注销用于销毁会话但问题是该会话没有销毁。我尝试了一切来摧毁会话,但它仍然存在。 如果我在网址中调用用户/登录,那么它会直接显示我的主页,并在其上显示我的Facebook名称。如果会话被成功销毁,那么它必须显示facebook的登录屏幕,但是它没有显示出来。请帮助我在这里呆了差不多2天。您的回复非常受欢迎。
public function logout(){
$this->load->library('session');
$this->load->library('facebook', $config);
$this->session->unset_userdata($user_info);
$this->facebook->destroysession();
$this->session->sess_destroy();
redirect("user/login");
}
答案 0 :(得分:0)
我不知道您使用class
方法logout
class
。这是$this
对吗? (否则看到内部使用session
会很奇怪)。你class
中有class
个对象吗?您的session
对象在class
中有class
的内容? session
对象的sess_destroy
是public
方法吗?如果是,是logout()
吗?如果是这样,它包含什么?另外,您在哪里调用{{1}}方法?它甚至被执行了吗?
这些应该是你应该问自己的问题。
This是关于如何在php中销毁会话的参考。