Почему я теряю сеанс при смене страницы? - PullRequest
2 голосов
/ 11 февраля 2012

Поэтому я пытаюсь интегрировать PHP facebook SDK / API с codeigniter, потому что я люблю codeigniter, но по какой-то причине я теряю сеанс facebook, как только я меняю страницы со своего базового URL, я напечатал $_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. Т.е.Мой URL, когда я меняю страницы, выглядит так: www.example.com/index.php/controller_name/method_name/

мне также нужно что-то делать с переменными $ _GET?потому что это одна вещь, которую я заметил ... кажется, что некоторые вещи передаются в URL, но они не переходят на другие страницы.

любая помощь по этому вопросу будет принята с благодарностью.Я действительно в растерянности.

Ответы [ 2 ]

1 голос
/ 11 февраля 2012

Если вы используете библиотеку сеансов CodeIgniter, вы должны знать, что «класс Session не использует собственные сеансы PHP. Он генерирует собственные данные сеанса»

Класс сеанса CodeIgniter

0 голосов
/ 12 февраля 2012

моя проблема была несколько простой, я продолжал терять свои данные сеанса каждый раз, когда менял страницы, и это настраивает, решение было довольно простым. в конфигурационном файле CI вы должны указать базовый URL-адрес веб-сайтов, и я установил сеанс для http://www.mysite.com/, поэтому php sdk / api создал один сеанс для первого URL-адреса и другой для второго. Таким образом, я потерял все данные, как только я изменил страницы. так что это простая проблема, но она заняла много времени.

...