我有一個Facebook的iframe應用程序。一旦應用程序授權確認,我從簽名的請求中獲取一些數據並將其放入會話中:在Facebook AJAX請求中維護PHP會話
<?php
session_start();
$signed_request = $_REQUEST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
if(empty($data["user_id"])) {
echo("<script> top.location.href='$auth_url'</script>");
exit;
}
$_SESSION['fb_id'] = $data['user_id'];
?>
簡單吧?所以現在用戶可以與我的應用進行交互,並且最終的用戶動作觸發AJAX請求。我使用jQuery這個:
$.ajax({
type:'POST',
url:'include/handler.php',
data:'name=value',
success: function(msg) {
alert("Success: "+msg);
},
error: function(msg) {
alert("Fail: "+msg);
}
});
所以後來在handler.php,我需要使用以前保存會話值,但會是空的。
<?php
session_start();
echo $_SESSION['fb_id'];
?>
顯然這些代碼片段是簡化的,但任何人都可以向我解釋這一點嗎?我有一種感覺,我正在做一些愚蠢的事情,但這是漫長的一天。
ajax調用是否使用相同的會話?每次獲得新會話都會顯示爲fb_id變量不是「粘住」的,因爲它是在其他會話中設置的。 – 2011-03-23 18:50:53
我不得不假定他們不是昨晚,最後完全放棄了會議。我已經通過不使用會話解決了該問題,但我仍然很感激爲什麼發生這種情況的解釋。 – shanethehat 2011-03-24 09:35:58