我运营的网站可以通过不同的域名访问:domainname.de,domainname.ch,domainname.at,domainname.es等......
当我的客户想要付款时,我们会进入支付页面,当然这是https安全的。由于服务器的限制,我只允许使用一个SSL证书,我只将其放在一个域名:domainname-secure.com。
因为我收取不同的价格,我需要知道用户所属的域名,所以当重定向到domainname-secure.com时,我将域名(例如domainname.de)保存在会话变量$_SESSION['domain_default']
中并传递sessionID通过添加session_id=[session_id]
作为get参数。
然后我检查我是否$_GET['session_id']
并运行follow命令以在domainname-secure.com上提供会话:
session_id($_GET['session_id']);
session_start();
当我自己测试它时,它工作得非常好,但是当有人访问domainname-secure.com并且没有设置$_SESSION['domain_default']
时,我会创建一个日志条目。
这种情况一天发生几次,但我真的不知道为什么这不起作用!我从许多不同的链接一次又一次地测试它,但对我来说它完全正常。
有些人可以想象为什么它有时不起作用?
将会话ID传递给另一个域是不是“好”或不安全,重定向后它是否总是可读?
我知道你很难阻止一个错误,但是我正在寻找一些关于会话的知道问题,或者可能会提示如何以更好的方式做到这一点?
答案 0 :(得分:2)
会话由PHP以每个域进行管理,这意味着他们不会故意混合域。
如果您要使用其他会话存储机制,例如写入数据库或使用memcached会话,您将能够克服此限制。
如果您希望在更改域时能够访问会话信息,则有两种方法:
或者: