$_SESSION 跨子域

发布于 2025-01-07 04:51:28 字数 663 浏览 0 评论 0原文

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

我可以使用两个不同的子域访问特定的 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
?>

谢谢, 米尔凯尔

did anyone know how to keep a session across subdomains?

i can access a specific cookie using two different subdomains, but a problem remains ... when i try to send a $_SESSION['test'] for a subdomain to another , it doesn't show up in the other :

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
?>

thanks,
milkael

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

月下客 2025-01-14 04:51:28

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

因此,假设您的域和子域访问相同的数据库(或者至少可以访问保存会话的数据库):

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

Better store sessions in the database, and pass it around as cookies. PHP has a parameter (domain) in it's setcookie() to make a cookie available to the whole domain (including subdomains).

so, provided that your domain and subdomains access the same database (or at least has access to the database that holds sessions):

  • store session ids in the database (session ids should be unique for every user)
  • store the same session id in a cookie in the browser (available across domains)
  • when a user visits another subdomain of yours, just compare the cookie value with the value from the database and you'll know who that person is one and the same.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文