【问题标题】:$_SESSION across subdomains$_SESSION 跨子域
【发布时间】:2012-02-19 12:09:27
【问题描述】:

有人知道如何跨子域保持会话吗?

我可以使用两个不同的子域访问特定的 cookie,但问题仍然存在......当我尝试将子域的 $_SESSION['test'] 发送到另一个时,它不会显示在另一个中:

subdomain1.domain.com/trial.php

<?php
ini_set("session.cookie_domain", ".domain.com");  // allow access to this cookie from any subdomain
session_start();      // create cookie
$_SESSION['test'] = "TEST1";  // lets try to send "TEST1" in the other subdomain
?>

subdomain2.domain.com/trial.php

<?php
ini_set("session.cookie_domain", ".domain.com");  
session_start();       // cookie already set
print_r($_SESSION);    // $_SESSION array is empty
?>

谢谢, 牛奶

【问题讨论】:

    标签: php session cookies


    【解决方案1】:

    更好地将会话存储在数据库中,并将其作为 cookie 传递。 PHP 在它的setcookie() 中有一个参数(域),以使cookie 可用于整个域(包括子域)。

    所以,前提是您的域和子域访问相同的数据库(或至少可以访问保存会话的数据库):

    • 在数据库中存储会话 ID(每个用户的会话 ID 应该是唯一的)
    • 在浏览器的 cookie 中存储相同的会话 ID(跨域可用)
    • 当用户访问您的另一个子域时,只需将 cookie 值与数据库中的值进行比较,您就会知道该人是谁。

    【讨论】:

    猜你喜欢
    • 2015-03-02
    • 2012-09-15
    • 2011-11-10
    • 1970-01-01
    • 2021-09-11
    • 2013-05-14
    • 2018-05-04
    • 2014-07-13
    • 2011-06-26
    相关资源
    最近更新 更多