php - 在 Facebook AJAX 请求中维护 PHP session

标签 php jquery ajax facebook session

我有一个 Facebook iframe 应用程序。一旦应用程序授权得到确认,我就会从签名的请求中获取一些数据并将其放入 session 中:

<?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 中,我需要使用之前保存的 session 值,但 session 是空的。

<?php
    session_start();
    echo $_SESSION['fb_id'];
?>

显然这些代码片段是简化的,但是有人可以向我解释一下吗?我有一种感觉,我正在做一些愚蠢的事情,但这已经是漫长的一天了。

最佳答案

$.ajax({ ..., 缓存:假, ... }); 如果您使用 IE,这可能是问题所在,因为 IE 会缓存 ajax 请求。或者,如果 facebook graph api 请求与 ajax 请求同时运行,则可能会出现一些计时问题。

关于php - 在 Facebook AJAX 请求中维护 PHP session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5409988/

相关文章:

jQuery Waypoint - 想要反转功能

c# - 如何将元素的背景颜色与 2 个半透明元素背景颜色相匹配

php - PHP session 是否跨子目录工作?

PHP-FFMpeg 先决条件

PHP导出DBF文件格式

javascript - 如何使用 jQuery 保存照片?

javascript - 导航栏,包含在所有文件中

javascript - Symfony2 将ajax请求数据传递给表单渲染 Controller

javascript - ajax使用codeigniter更新数据库中的数据

javascript - 如何定位 JSON 文件中的特定对象