2012-03-13 3 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', чтобы проверить, что у вас есть данные, и они вошли в сеанс. Распечатайте '$ _SESSION' на стр. 2, чтобы узнать, имеет ли он какой-либо контент вообще, используя' print_r() '. Также проверьте, что вы просматриваете обе страницы как на WWW, так и на WWW. Если вы так переписываетесь, данные сеанса не будут доступны для обоих. – MrCode

+0

Вспомните, также проверьте свой журнал ошибок PHP/Apache для любых подсказок. – MrCode

ответ

0

Если вы выполняете перенаправление, вам необходимо вызвать session_write_close() перед выполнением перенаправления. Это заставляет PHP писать данные сеанса.