2017-06-03 68 views
1

这有点奇怪。好吧,我正在使用一个会话来了解用户何时登录。当用户登录会话时会被创建。PHP会话只适用于某些页面

我遇到的问题是会话不能在某些页面上工作。当我在我的索引页上执行var_dump($_SESSION['u_up']);时,它显示会话:array(1) { ["u_up"]=> string(7) "example" },但是当我对另一个脚本进行Ajax调用并执行相同的操作时var_dump($_SESSION['u_up']);它将返回一个空数组:array(0){}

有谁知道为什么会发生这种情况?我在这两个文件上都有session_start(),但不知怎的,我的第二个脚本不会在我的会话中找到。任何帮助是极大的赞赏!

这是我简单的Ajax脚本:

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

您的两个页面是否位于相同的域/子域? –

+2

你显示的代码只是不足以找出解决方案,添加ajax脚本和不工作的php脚本的基本部分 –

+0

请确保你的'php.ini'文件确实有这个:'session.use_cookies = 1'和path设置为'session_save' – NDFA

回答

0

好了,所以原来我不得不改变url在Ajax请求到本地主机。因此,它结束了看起来像这样:

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

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

+0

[127.0.0.1和IPv4地址之间的区别](https://superuser.com/questions/897699/what-is-the-difference-between-127-0-0-1-and-my-assigned-ipv4-地址) – Fahmi

2

你正在做一个跨域请求,192.168.1.75本地主机不被认为是相同的域和不共享的cookie。

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

除此之外,我强烈建议您使用相对路径来避免未来的这些问题。

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