CodeIgniter- 내 사용자 정의 세션 데이터가 Facebook에 의해 제거 되었습니까?

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

  •  05-07-2019
  •  | 
  •  

문제

모든 값을 버리는 방법이 있는지 궁금합니다.

$this->session->userdata() 

그래서 문제를 해결할 수 있습니까?

나는 Facebook 내에서 일하고 있고 로그인 페이지를 가지고 있으며, 일단 성공하면 현재 사용자의 UID를 전달하고 싶습니다. 이것이 잘 작동한다고 생각했습니다.

현재 UID 세트가 있습니다.

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');
}

따라서 리디렉션이 발생하며 환경 설정/색인에서 매우 간단한 설정이 있습니다.

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

그리고 결과는 불가능합니다.

this is the preferences form
858f500e167e359edc1942a96f3bac35

따라서 UID를 포함하는 중간 에코 위로 완전히 건너 뜁니다. 이것을 올바르게 설정하지 않습니까? 세션 배열의 모든 값을 덤프하여 무엇이 겪고 있는지 확인하는 방법이 있습니까? 어떤 도움이든 좋을 것입니다.

업데이트

각 원시 웹 사이트와 Facebook을 통해 var_dump ($ this-> session-> userData)를 실행했습니다.

웹 사이트에서는 5 값 (Session_id, IP, User_Agent, Last_Activity 및 UID)이 포함 된 배열에 모든 세트 값을 노출시킵니다.

그러나 Facebook Chrome 내에서 Codeigniter가 설정 한 4 가지 값 만 표시됩니다. 쿠키가 4K 일 수 있고 암호화가 문제가 될 수 있다고 들었습니다. FB가 자체 암호화 된 (읽기 : 더 큰) 데이터로 쿠키를 채울 수 있습니까?

업데이트 2

리디렉션에 댓글을 달고 다음과 같이하십시오.

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

정중하게 반환됩니다 : test_1234_test : Facebook 내에서. 따라서 리디렉션 중에 어딘가에 배열 의이 부분을 잃어 버리고 있습니다 (전체 배열은 아님).

리디렉션 페이지에서 새 세션을 만들 수 있습니까? 그래서 4 개의 "스톡"변수 만있는 이유는 무엇입니까? 이 경우 세션을 만드는 방법을 조사해야하며 Facebook이 쿠키를 지우면 내가 생각합니다.

업데이트 3

그래서 저는 쿠키 대신 세션 정보를 저장하기 위해 DB를 사용하여 FB가 제거하거나 충돌한다고 생각했습니다. 현재 앱을 설정하고 있습니다

  1. $ user_id = 1234를 설정하십시오
  2. $ this-> session-> set_userData ( 'uid', $ user_id)
  3. 새 페이지로 리디렉션하십시오
  4. var_dump 가능한 모든 정보

DB에서 발생하는 것은 다음과 같습니다.DB 레코드 http://nikolausjj.facebook.joyent.us/picture2.png

따라서 사용자 데이터를 사용하여 하나의 좋은 레코드를 생성 한 다음 바로 리디렉션 바로 그렇습니다. 이전 세션을 인식하지 않고 새 세션을 만듭니다. CI 프레임 워크가 어디에 있는지 설명하여 이전 세션이 존재하는지 확인할 수 있습니까? 사용자 설명서는 기본적으로 "마법"이라고 설명합니다.

도움이 되었습니까?

해결책

당신이 사용할 수있는 var_dump() 세션을 출력합니다. 이 같은

var_dump($this->session);

그만큼 set_userdata 전화는 괜찮아 보입니다. 확실합니까 $user_id 설정되었습니다. 에코가 Surley 실행되었지만 uid 비어있는 문자열로 설정되거나 설정되지 않습니다.

에코를 대체하십시오

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

답변에 도움이되는 기타 정보

  • 어떤 브라우저를 사용하고 있습니까?
  • 밑줄이 있습니까? _ 도메인 이름으로?
  • 기본 phpsessions에 CI 세션 또는 일부 포장지를 사용하고 있습니까?
  • 값입니다 uid 리디렉션을 댓글을 달 때 분실/설정되지 않습니까?

기타 제안 :

  • 노력하다 redirect('/preferences/index/', 'refresh'); 대신에 location
  • 나는 Facebook 개발에 익숙하지 않지만 그렇습니다 /preferences/index 당신의 통제하에? 그렇다면 예를 사용해보십시오 (현재 경우) $this->load->library(‘session’) 대신로드하십시오 autoload.php.
  • 변경해보십시오 $config[‘sess_match_ip’] `거짓
  • 설정해보십시오 $config[‘sess_encrypt_cookie’] 거짓
  • CI- 세션 사용을 대체하십시오 CI 네이티브 세션
  • 쿠키에 저장하지 않으면 현명한 정보입니까? 스푸핑 할 수있는 경우 중요하다면 그렇지 않습니다.

다른 팁

Facebook을 통해 세션 변수를 한 페이지에서 다른 페이지로 전달하는 방법을 해결하지 못했습니다. 내 솔루션은 단순히 각 페이지에서 사용자의 UID를 위해 Facebook API를 호출하는 것이 었습니다. 훌륭한 프로그래밍은 아니지만 나에게는 잘 작동합니다. :-/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top