首页 文章

在codeigniter(facebook集成)中单击注销链接后无法销毁会话

提问于
浏览
1

单击主页上的注销链接后,会话不会破坏 . 这是我的代码

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 回答

  • 0

    我不知道 class 你有 logout 方法 . 这是 class 对吗? (否则在内部看到 $this 的用法会很奇怪) . class 中有 session 对象吗?您的 session 对象在 class 中有什么 classsession 对象的 class 是否具有 sess_destroy 方法?如果是的话,是 public ?如果是这样,它包含什么?另外,你在哪里调用 logout() 方法?它甚至被执行了吗?

    这应该是你应该问自己的问题 .

    This是关于如何在php中销毁会话的参考 .

相关问题