Php 与本地主机通信时会话不工作

Php 与本地主机通信时会话不工作,php,session,http-headers,Php,Session,Http Headers,如果我在浏览器中导航到'sub.domain.com/session_test.php',会话将被保存并正常工作。我可以看到页面刷新上的所有会话 但是,如果我从localhost中的javascript向同一URL发出http post请求,则会话不会被保存,因为我不会返回任何数据(“if”语句中的数据) 知道为什么会这样吗 session_start(); 如果(isset($_会话['u']){ var_dump(ini_get('session.save_path'); var_dump

如果我在浏览器中导航到'sub.domain.com/session_test.php',会话将被保存并正常工作。我可以看到页面刷新上的所有会话

但是,如果我从localhost中的javascript向同一URL发出http post请求,则会话不会被保存,因为我不会返回任何数据(“if”语句中的数据)

知道为什么会这样吗

session_start();
如果(isset($_会话['u']){
var_dump(ini_get('session.save_path');
var_dump(ini_get('session.gc_maxlifetime');
var_dump(ini_get('session.cookie_life');
回显“”。打印\r($\u会话,TRUE)。“”;
模具();
}
$\会话['u']=“34343gf”;
死亡(“结束”);

我使用一对名为index.php和index2.php的文件来尝试您的代码。 会议正在进行中。(Windows7、Wamp2.5、Apache2.22、php5.4)

我认为您无权进入会话所在的/tmp文件夹。 尝试使用php函数
file\u put\u contents(ini\u get('session.save\u path')。“/test file.txt”,“test file is OK”)


代码正常。

PHP会话变量是服务器端变量。Cookie仅存储会话id以检索正确的会话信息

无论如何,假设:

sub.domain.com/session\u test.php
localhost/session\u test.php
的别名(它们指向同一个文件)

您无法从另一个域中的一个域读取cookie,即使它们解析到同一服务器。然而,有一些方法可以解决这个问题。一种方法是将cookie会话id作为GET参数传递,尽管这不是很安全


另一种方法是将会话ID存储在本地(文本文件或数据库中)并在以后检索。

会话使用cookie,cookie与特定域关联。会话存储在服务器上,而不是浏览器上。只有标识符
会话id
通过浏览器上的cookie存储。
session_start();


if(isset($_SESSION['u'])){  

var_dump(ini_get('session.save_path'));
var_dump(ini_get('session.gc_maxlifetime'));
var_dump(ini_get('session.cookie_lifetime'));
echo '<pre>' . print_r($_SESSION, TRUE) . '</pre>';
die();

}

$_SESSION['u'] = "34343gf"; 
die('end');