首先,是的,我知道这是一个很大的安全性 NONO 。但情况是这样的;
在网上商店结账时,我使用支付网关,可以通过SSL代理我的结账表单。
(以下网址只是理论,其他网址适用于申请)
它的工作方式,网站将用户重定向到他们的 https ://gateway.org/secure-tunnel.php,在这样的查询中传递一个网址?url = http://myshop.com/cc-form.php&lt ; - 需要进行urlencoded。
安全隧道请求网址 - 在文档中的网址上撒上一些魔法 - 并将其显示给用户。
现在我想将会话ID传递给cc-form.php网址,并使该部分正常工作。但是请求的页面不会获取传递的会话ID。
有关于此的任何想法吗?
以下内容来自我的application.ini
resources.session.name = UPSSESSID
resources.session.save_path = APPLICATION_PATH "/../data/session"
resources.session.use_only_cookies = off
resources.session.referer_check = off
resources.session.remember_me_seconds = 864000
同时在研究我发现Suoshin扩展可能会导致一些问题时,我已将此添加到.htaccess
php_flag suhosin.session.cryptua off
我使用支付表格的路线
$this->_helper->url->url(array(session_name() => Zend_Session::getId()), 'payment')
编辑:可能的,相当狡猾的解决方案
我实际上设法通过在我的引导程序文件中将其插入_initApplication()
来恢复会话。这是相当狡猾的,所以如果有人知道更好 - 更多的ZF'ish - 方式,请建议!
if(isset($_GET[$appConfig->resources->session->name])) {
session_id($_GET[$appConfig->resources->session->name]);
}
编辑:DOH!
嗯..结果不需要以前的编辑。就在我将之前的行添加到bootstrap之前,我还更改了url布局。
将其从/pay/UPSSESSID/{session-id-here}
更改为/pay?UPSSESSID={session-id-here}
- 这实际上是问题的根源:(
现在我已经从引导程序中删除了行,并且我正确恢复了sessionId。
我的错误!
答案 0 :(得分:0)
默认情况下,PHPSESSID不能作为URL重写的一部分传递。
?PHPSESSID={session_id}
- 格式解决了我的问题。