如何访问子域上的cookie

时间:2011-11-25 18:02:52

标签: php session

我想访问子域名上的cookie,

在主域上工作的cookie很好但无法访问子域上的cookie,我创建了两个文件testing_1.php和testing_2.php,这些cookie是通过testing_1.php设置的

$domain = '.localhost';
session_set_cookie_params(0, '/', $domain);
session_start();

$_SESSION['name'] = 'Jogesh';
setcookie("f_name", "jogesh", 0, "/", "$domain");

if( isset( $_COOKIE["f_name"] ) )
    echo "Set Cookie on 1: " . $_COOKIE["f_name"];
else
    var_dump(setcookie("f_name", "jogesh", 0, "/", "$domain"));

在上面的代码中我也尝试访问会话,但只是获得了会话ID,我想在子域上访问$_SESSION['name']如果可能的其他明智的cookie

现在tests_2.php在这里

session_start();

if( isset( $_SESSION['name'] ) )
    echo "Session Name: " . $_SESSION['name'];
else
    echo "Session not set!";

if( isset( $_COOKIE["f_name"] ) )
    echo "Cookie Name: " . $_COOKIE["f_name"];
else
    echo "Cookie not set!";

这两个文件在localhost上运行良好,但是当我尝试从demo.localhost访问文件testing_2.php时,无法访问任何内容,请告诉我我做了什么错误,< / p>

1 个答案:

答案 0 :(得分:0)

如果您是在www.example.com创建它们,则无法从cdn.example.com读取它们。您必须在example.com创建它们。此外,您无法使用JavaScript和签证阅读PHP创建的cookie。它还取决于浏览器。 tsk.tr存在问题。你必须看到浏览器的列表http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1可能是因为浏览器处理localhostsubdomain.localhost作为不同的域名。尝试真实环境中的代码或使用hosts文件。