2012-03-13 4 views
0

안녕하세요 저는 첫 번째 앱을 통해 facebook 앱 개발과 새로운 작업을하고 있습니다. 내 앱의 흐름은 첫 페이지가 사용자가 페이지를 좋아하는지 여부를 확인하는 방문 페이지이며, 사용자가 이미 페이지를 좋아한다면 사용자를 다음 페이지로 리디렉션하는 것과 같습니다.세션 객체가 변수를 반환하지 않습니다.

$ signed_request 객체가 첫 방문 페이지에서 검색되었지만 앱 전체에서 사용될 것이므로이 변수를 $ _SESSION [] 객체를 통해 다음 페이지로 전달하려고하지만 다른 페이지에서 검색 할 수 없습니다. .

<?php 
session_start(); 
?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    … 
</head> 
<body> 
<?php 
      $app_id = "160336875618730"; 
      $app_secret = "b14ac6d2b7frewdb259599b06983e881"; 
      $canvas_page = "http://apps.facebook.com/myapp"; 
      $auth_url = "https://www.facebook.com/dialog/oauth?client_id=" . $app_id . "&redirect_uri=" . $canvas_page . "&scope=email,read_stream,publish_stream,user_photos"; 

      $signed_request = $_REQUEST["signed_request"]; 
      list($encoded_sig, $payload) = explode('.', $signed_request, 2); 
      $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); 
      $_SESSION['signed_request']=$data; 

… ….. 

그리고 page2.php있는 동안에

이 같은를 검색하는 것을 시도하고있다 : 그것은 나에게 변수의 뒷면을 포기하지 않을 것

<?php 
session_start(); 
?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD H ... 
... ... 
<body> 
<?php 
$data = $_SESSION['signed_request']; 

      //User Info. Variables: 
      try { 
       $userId = $data["user_id"]; 
       echo "ID:".$userId; 
       $userName =json_decode(file_get_contents('http://graph.facebook.com/' . $userId)) -> name; 
… 

.

친절하게 도와주세요.

+0

첫 페이지에는 데이터가 있는지 확인하기 위해'$ data'와'$ _SESSION'을 출력하고 세션에 들어갔습니다. 'print_r()'을 사용하여 내용이 있는지 확인하기 위해 page2에있는'$ _SESSION'을 출력하십시오. 또한 www 또는 www가 아닌 ​​두 가지 페이지를 모두보고 있는지 확인하십시오. 이와 같이 교환하면 세션 데이터를 양쪽에서 사용할 수 없습니다. – MrCode

+0

PHP/Apache 오류 로그에서 단서를 확인하십시오. – MrCode

답변

0

리디렉션을 수행하는 경우 리디렉션을 수행하기 전에 session_write_close()를 호출해야합니다. 이렇게하면 PHP가 세션 데이터를 작성하게됩니다.

관련 문제