CodeIgniter - Os meus dados de sessão personalizados sendo despojado pelo Facebook?

StackOverflow https://stackoverflow.com/questions/1610231

  •  05-07-2019
  •  | 
  •  

Pergunta

Eu estou querendo saber se há uma maneira para despejar todos os valores de

$this->session->userdata() 

para que eu possa solucionar?

Eu estou trabalhando dentro de Facebook, e tem uma página de login, e uma vez que é bem sucedida eu quero passar ao redor do UID do usuário atual, e eu pensei que isso iria funcionar bem.

Eu tenho atualmente o conjunto uid da seguinte forma:

require_once 'facebook.php';
$appapikey = 'XXXX';
$appsecret = 'XXXX';
$facebook = new Facebook($appapikey, $appsecret);
$user_id = $facebook->require_login();
$this->db->like('uid', $user_id);
$this->db->from('users');
$has_signed_up = $this->db->count_all_results();

if ($has_signed_up == 0) {
redirect('/setup/signup/', 'location');
}
else {
$this->session->set_userdata('uid', $user_id);
redirect('/preferences/index/', 'location');
}

Assim, o redirecionamento ocorrer, e eu tenho uma configuração muito simples sobre a preferências / index:

    echo "this is the preferences form <br />";
    echo $this->session->userdata('uid');
    echo $this->session->userdata('session_id');

E o resultado é uma inescrutável:

this is the preferences form
858f500e167e359edc1942a96f3bac35

Por isso, totalmente salta sobre o eco meio contendo o uid. Que não estou definindo isso corretamente? Existe uma maneira para despejar todos os valores do array de sessão para ver o que está recebendo através? Qualquer ajuda seria ótimo.

Atualizar

Eu tenho que correr var_dump ($ this-> session-> userdata) em cada site cru e através do Facebook.

No site que expõe todos os valores definidos em uma matriz contendo 5 valores (session_id, IP, USER_AGENT, last_activity, e uid).

Dentro do cromo Facebook no entanto, ele só mostra os 4 valores fixados pelos CodeIgniter. Eu ouvi os cookies só pode ser 4k e que a criptografia pode ser um problema. Poderia FB ser enchendo os cookies com o seu próprio (leia-se: maior) criptografado? Dados

UPDATE 2

Quando eu comentar o redirecionamento, e apenas se:

  else {
  $this->session->set_userdata('uid', $user_id);
  echo ':test_'.$this->session->userdata('uid').'_test:';
  //redirect('/preferences/index/', 'location');
  }

Ele obedientemente retorna: test_1234_test: dentro do Facebook. Então, em algum lugar durante o redirecionamento é perder esta parte do array (mas não toda a matriz).

É possivelmente apenas criar uma nova sessão na página de redirecionamento? Então é por isso que só tem quatro variáveis ??"stock"? Se este for o caso, eu vou ter de pesquisar como ele cria as sessões, e se Facebook apaga os cookies suponho.

Update 3

Então eu virei para utilizar um banco de dados para armazenar informações de sessão em vez de cookies, pensando FB foi ou retirando-os ou colidir com eles. Eu tenho atualmente o aplicativo criado para

  1. Set $ ??user_id = 1234
  2. $ this-> session-> set_userdata ( 'uid', $ user_id)
  3. Redirecionar para a nova página
  4. var_dump possível de informações

O que ocorre no DB é esta: DB registra http://nikolausjj.facebook.joyent.us/Picture2.png

Assim, ele cria um registro bom, com os dados do usuário, em seguida, imediatamente após o redirecionamento cria uma nova sessão sem reconhecer o anterior. Alguém pode explicar onde os controlos quadro CI para ver se ele tem uma sessão anterior existente? O manual do usuário explica-lo como "mágica" basicamente.

Foi útil?

Solução

Você pode usar var_dump() para a saída da sessão. Algo como isto

var_dump($this->session);

A chamada set_userdata parece ok. Tem certeza $user_id está definido. Porque o eco é surley executado, mas uid não está definido ou conjunto de cadeia vazia.

Tente substituir o eco com

echo ':test_'.$this->session->userdata('uid').'_test:';

Outra informação útil para responder

  • O navegador você está usando?
  • Você tem uma _ sublinhado no seu nome de domínio?
  • Você está usando sessões CI ou algum invólucro para PHPsessions nativos
  • É o valor para uid também perdeu / não definido quando você comentar o redirecionamento?

Outras sugestões:

  • Tente redirect('/preferences/index/', 'refresh'); vez de location
  • Eu não estou familiarizado com o desenvolvimento facebook mas é /preferences/index sob seu controle? Se sim tente remover (se houver) $this->load->library(‘session’) e em vez carregá-lo no autoload.php.
  • tente alterar $config[‘sess_match_ip’] para `false
  • tente definir $config[‘sess_encrypt_cookie’] para FALSE
  • tente substituir o uso de CI-Session com CI Native sessão
  • é UID informações sensata se não armazená-lo em um cookie. Se é importante se ele pode ser falsificado não.

Outras dicas

Eu não resolveu como passar variáveis ??de sessão a partir de uma página para outra via Facebook. Minha solução foi simplesmente para chamar a API do Facebook para o UID do usuário novamente em cada página. Não grande programação, mas funciona bem para mim. : - /

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top