PHP会话仅适用于某些页面

时间:2017-06-03 00:42:45

标签: php ajax session

这有点奇怪。好的,我正在使用会话来了解用户何时登录。当用户登录时,会创建会话。

我遇到的问题是会话不在某些页面上工作。当我在索引页面上执行$LastVerb = "http://schemas.microsoft.com/mapi/proptag/0x10810003" $Monitor.Items | Where-Object { $_.PropertyAccessor.GetProperty($LastVerb) -gt 0 } 时,会显示会话:var_dump($_SESSION['u_up']);但是当我对另一个脚本进行Ajax调用并执行相同的array(1) { ["u_up"]=> string(7) "example" }时,它会返回一个空数组:{{ 1}}。

有谁知道为什么会这样?我在这两个文件上都有var_dump($_SESSION['u_up']);,但不知怎的,我的第二个脚本无法接受我的会话。非常感谢任何帮助!

这是我简单的Ajax脚本:

array(0){}

2 个答案:

答案 0 :(得分:2)

您正在执行跨域请求, 192.168.1.75 localhost 不被视为相同的域,并且不共享Cookie。

出于安全原因,跨域请求不包含cookie。如果您不发送phpsessid cookie,您将无法检索旧的php会话,这将使您的会话为空。

除此之外,我强烈建议你使用相对路径来解决未来的问题。

$.ajax({
    type: "POST",
    url: '/php/script.php',
    success: function(data){
        console.log(data);
    }
});

答案 1 :(得分:0)

好的,事实证明我必须将Ajax请求中的url更改为localhost。所以最终看起来像这样:

//Update to not view tutorial           
$.ajax({
    type: "POST",
    url: 'http://localhost/php/script.php',
    success: function(data){
        console.log(data);
    }
});

我真的不知道为什么我必须指定localhost而不能指定我的电脑的IP。