1

好吧,就这样吧。

我的客户最近为 domain1.net 购买了 SSL 证书。几周后,他买了他认为更好的 domain1.com。

现在,他想使用 domain1.com,但我无法将证书从 domain1.net 移动到 domain1.com,因为时间已过。

因此,客户在 domain1.com 中导航,当他需要登录或输入信用卡信息时,我重定向到https://domain1.net。但是我需要在这两个域之间共享 PHP $_SESSION。

我怎样才能做到这一点?有任何想法吗?谢谢!

4

5 回答 5

2

您可以将会话数据放入缓存中,这两个域都应该可以访问(不确定您在后台有多少台服务器),然后在重定向发生后从缓存中检索会话数据。

于 2012-09-19T20:04:39.157 回答
0

There is a long way here

Create a php file(share.php) as following in both domains, data is shared by this method

<?php session_start();
echo json_encode($_SESSION);
?>

Now create another file, better to use as include, on another domain for receiving session data

<?php session_start();
$abc = file_get_contents('http://domain1.com/share.php');
$obj = json_decode($abc);

print_r($obj);

?>

print_r will show you whole session data of another server in this way. Use combination of objects and arrays to access all elements. If you need to overwrite this server's session use this code instead of print_r

<?php

foreach($obj as $key => $value){
$_SESSION[$key] = $value;
}

?>
于 2012-09-19T20:15:21.177 回答
0

我认为您对使用 $_SESSION 功能非常不走运。问题是您将无法在两个不同的域之间传递会话 id cookie(您可以通过控制 cookie 域在两个子域之间传递)。您可以尝试在查询字符串中传递会话 ID,但谁愿意这样做。

您可以实现自己的后端逻辑来存储两个域共有的信息,但我认为这将需要您自己的令牌系统在域之间来回移动时对用户进行身份验证以替换您的会话 ID。

您最好的选择是告诉您的客户他需要购买 .com 域的证书。要么他要么付给你更多的钱来构建你自己定制的伪会话系统。

于 2012-09-19T20:05:12.610 回答
0

你不能那样做,(感谢上帝)。

您必须找到其他方式来交换数据:

  • 也许这两个站点在同一台服务器上,并且可以访问一个公共目录。/tmp例如,这也是默认会话文件所在的位置。
  • 如果不在同一台服务器上,请使用 ftp、http 或其他协议来交换数据。

当然,最简单的解决方案是购买一个新证书(一年几美元)并将这些站点合并在一起。

于 2012-09-19T20:06:37.110 回答
0

您需要会话数据还是只需要一些登录信息?无论哪种情况,您都可以序列化 $_SESSION (http://php.net/manual/en/function.serialize.php) 或将其存储在数据库中。添加一个主键和一个可以用 rand(0,1000000000) 填充的“秘密”字段;

然后,当您链接到网站时,传递主密钥和密码,并使用它从数据库中获取会话信息。

于 2012-09-20T00:27:23.557 回答