2012-02-11 64 views
2

所以我想用笨的PHP Facebook的SDK/API集成,因爲我愛笨,但由於某種原因,我一直當我改變從我的基礎URL的網頁失去我的facebook會議上,我已經印在$ _SESSION和我所得到的是陣列([fb_339393762762289_state] => cb8c201ed66ebcaa60407114aa92f001)任何想法,爲什麼發生這種情況?爲什麼我在頁面更改中丟失了會話?

這裏是我的控制器是什麼樣子:

class Main extends CI_Controller { 

var $user; 
var $log_in_url; 
var $log_out_url; 

function __construct() { 
    parent::__construct(); 
    $this->load->library('facebook'); 
    $perams = array(
     'scope' => 'user_about_me, read_friendlists', 
     'redirect_uri' => 'http://www.example.com/' 
    ); 
    $this->user = $this->facebook->getUser(); 
    $this->log_out_url = $this->facebook->getLogoutUrl(); 
    $this->log_in_url = $this->facebook->getLoginUrl($perams); 

    print_r($this->user); 
    print_r($this->log_out_url); 
    print_r($this->log_in_url); 
} 

public function index() { 
    if ($this->user) { 
     try { 
      $data['user_profile'] = $this->facebook->api('/me'); 
     } catch (FacebookApiException $e) { 
      error_log($e); 
      $this->user = null; 
     } 
    } 

    if ($this->user) { 
     $data['logout_url'] = $this->log_out_url; 
    } else { 
     $data['login_url'] = $this->log_in_url; 
    } 
    $data['user'] = $this->user; 
    $this->load->view('templet/header', $data); 
    $this->load->view('main view'); 
    $this->load->view('templet/footer'); 
} 

    public function account() { 

    if ($this->user) { 
    try { 
    $data['user_profile'] = $this->facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
    error_log($e); 
    $this->user = null; 
    } 
    } 

    if ($this->user) { 
     $data['logout_url'] = $this->log_out_url; 
    } else { 
     $data['login_url'] = $this->log_in_url; 
    } 
    $data['user'] = $this->user; 
    $this->load->view('templet/header', $data); 
    $this->load->view('account'); 
    $this->load->view('templet/footer'); 
    } 

從我可以從API的源代碼不解的是,它是負責處理的會議,所以我不明白爲什麼它一直在失去它。

我想這也許可以有一些與我的.htaccess設置.. IE瀏覽器。當我改變我的網頁的URL看起來像這樣www.example.com/index.php/controller_name/method_name/

還做我需要做的$ _GET瓦爾什麼?因爲那是我注意到的一件事情。似乎有些東西在URL中傳遞,但是它們不會繼續到其他頁面。

任何幫助,將不勝感激。我真的很茫然。

+0

你是否失去了其他的$ _SESSION變量(由你自己設置),或者只有FB? – Cheery 2012-02-11 06:28:28

+0

我還沒有嘗試設置我自己的會話呢。謝謝你給我這個想法。我甚至沒有想過要檢查。我會嘗試設置一些我自己的。我想知道,爲什麼我的變量不能將數據從一個頁面保存到另一個頁面,因爲它們在控制器上具有全局範圍。所以看起來數據應該仍然存在。 – 2012-02-11 06:32:41

+0

只是檢查和會議工作正常。如果我通過CI功能來做它們...你認爲我應該嘗試使用Facebook SDK來使用CI功能嗎? – 2012-02-11 06:49:00

回答

0

我的問題有點簡單,我不停地鬆動我每次更換頁面時都會收到會話數據,並且解決方案非常簡單。在配置文件的配置文件你必須把你的網站基地的URL,我把和會議正在創建http://www.mysite.com/所以php sdk/api創建一個會話的第一個網址和另一個第二..因此,我失去了所有的數據,只要我改變了頁面。所以這是一個簡單的問題,但是花了很多麻煩。

1

如果你用笨會話庫,你必須知道「Session類並不使用PHP本身的會話。它產生自己的會話數據」

CodeIgniter Session Class

+0

我很感謝你的回答,但我明白了。這是我的基地網站域名。它錯過了www。這意味着它設置了兩個cookie,一個用於http:// site.com「和一個用於http:// www.site.com」 – 2012-02-11 20:07:24