单击主页上的注销链接后,会话不会破坏 . 这是我的代码
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>
这是我的 logout 用于销毁会话,但问题是会话没有破坏 . 我尝试了一切来破坏会话,但它仍然存在 . 如果我在网址中调用 user/loggin ,则会直接显示我的主页,并在其上显示我的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");
}
1 回答
我不知道
class
你有logout
方法 . 这是class
对吗? (否则在内部看到$this
的用法会很奇怪) .class
中有session
对象吗?您的session
对象在class
中有什么class
?session
对象的class
是否具有sess_destroy
方法?如果是的话,是public
?如果是这样,它包含什么?另外,你在哪里调用logout()
方法?它甚至被执行了吗?这应该是你应该问自己的问题 .
This是关于如何在php中销毁会话的参考 .