2

我有一个奇怪的问题。我正在使用 jquery$.post()PHP脚本发送/接收变量。

JavaScript:

$("#r_submit").click(function()
{
    $.post("http://" + server + "/msws/", 
    {
        action: "register",
        sub_action: "register_validate"
    },
    function(json) 
    {
        json = $.parseJSON(json);
        alert(json.cell_is_good);
    });
});

PHP

http://textuploader.com/?p=6&id=S7zDD

问题:

如果我在我的电脑(WAMP)上运行代码,它可以正常工作,但是如果我将它上传到我的服务器(justhost),那么如果我在创建会话时提醒会话,它就不会保留会话,它就在那里,但是当我稍后尝试获取会话,它已经消失了,我认为这与服务器认为浏览器已关闭,因此它破坏了会话有关?谢谢 :)

4

2 回答 2

2

您在没有会话 ID 的情况下开始会话。为此,您的 PHP 必须配置为使用默认禁用的透明会话 id 。因此,您必须在具有 AJAX 调用的脚本中启动会话,并session_id()在 POST 请求中提交,然后在 PHP 中启动会话,如下所示:

if (!isset($_POST['SID'])) {
    die('{}');
}
session_start($_POST['SID']);

另外,我会省略您正在调用的 url 的主机部分,$.post以避免跨域 ajax 调用问题(这很可能不会解决您的问题)。它只能在同一台服务器上工作,因此您可以像这样编写 ajax 调用:

$.post("/msws/", //...
于 2012-12-20T19:00:22.330 回答
0

检查您是否有多个会话 cookie。

我和codeigniter有同样的情况,我发现每个新页面都会创建自己的会话

于 2012-12-20T18:49:29.630 回答