在每个ajax调用中重新创建php会话

时间:2013-11-21 10:34:52

标签: php ajax session jquery-mobile cross-domain

我正在尝试使用JqueryMobile编写移动网络应用程序,移动设备将是我的客户端,我还有一个将管理登录会话的php服务,但是php会在每个ajax调用中创建一个新会话,我看到了在我的会话文件路径中生成会话文件,我需要恢复php会话。

php文件如下所示:     

header("Content-type: text/html; charset=utf-8");
header("Access-Control-Allow-Origin: *");

require 'connect_to_db.php';

// Starting the session
session_name('MySessionName');

// Making the cookie live for 2 weeks
session_set_cookie_params(2*7*24*60*60);

session_start();
...
// checking if loged in ...
?>

和ajax请求:

$.ajax({
    url: baseUrl + "login.php",
    crossDomain: true,
    type: "POST",
    data:{
        command: "Login",
        username: $("#username").val(),
        password: $("#password").val()
    },
    dataType: "json",
    success: function(response)
    {
        $.mobile.changePage("#DataList");
    },
});

我从stackoverflow检查了很多页面但没有成功。 我在firefox和xampp中测试我的应用程序。

1 个答案:

答案 0 :(得分:0)

使用浏览器的开发人员工具检查请求的请求/响应标头。响应标头应包含以下内容:

Set-Cookie: MySessionName=abcdef12345; expires=Wed, 21-May-2014 10:46:20 GMT; path=/; HttpOnly

第一次请求后,下一个请求需要重新发送cookie。

Cookie: MySessionName=abcdef12345

浏览器可能不接受cookie(生命周期,3方,p3p政策......)。如果是这种情况并且它没有发回会话ID,那么PHP无法识别它并将创建一个新的。