我运行一个网站,它可以通过不同的域到达后可供选择:domainname.de,domainname.ch,domainname.at,domainname.es等...PHP会话有时不能传递到另一个域
当我的客户想要支付我们的付款页面,当然这是https保护。由于服务器的限制,我只能拥有一个SSL证书,我只能将其放在一个域名中:domainname-secure.com。
因为我收取不同的价格,我需要知道用户属于哪个域,所以当重定向到domainname-secure.com时,我将域(例如domainname.de)保存在会话变量$_SESSION['domain_default']
中,并通过添加session_id=[session_id]
作为get参数。
然后我检查我采取$_GET['session_id']
和运行后续命令对domainname-secure.com提供的会话:
session_id($_GET['session_id']);
session_start();
当我测试它自己,它工作完全正常,但我做一个日志当有人进入domainname-secure.com并且没有设置$_SESSION['domain_default']
时输入。
这种情况每天发生几次,但我真的不知道为什么这样做不起作用!我从很多不同的链接一次又一次地测试它,但对我来说它工作得很好。
你们有些人可以想象为什么它有时不起作用吗?
将会话ID传递到另一个域是不是“好”或不安全,并且在重定向后它不总是可读的?
我知道你很难确定一个错误,但我正在寻找一些有关会话的知识问题,或者是一个提示如何以更好的方式做到这一点?
您的服务器设置是否包含suhosin补丁集? – complex857
为什么不直接将域添加到数据库中的用户?那么你不需要这个不必要的复杂设置。 – jeroen
@jeroen他想要获取他存储在'$ _SESSION'中的数据。这就是为什么他通过get来传递session_id。我假设他从原始域以外的'$ _SESSION'变量获得了一些其他信息。否则,他可以将域名放在'$ _GET'参数中。 –