我正在CakePHP应用程序中实现OpenId登录。在某个时刻,我需要重定向到另一个动作,同时保留有关OpenId身份的信息,例如它本身就是一个URL(带有GET参数),
https://www.google.com/accounts/o8/id?id=31g2iy321i3y1idh43q7tyYgdsjhd863Es
如何传递此数据?第一次尝试将是
function openid() {
...
$this->redirect(array('controller' => 'users', 'action' => 'openid_create', $openid));
}
但显而易见的问题是,这完全弄乱了CakePHP解析URL参数的方式。
我需要执行以下任一操作:
1)以CakePHP友好的方式对URL进行编码以传递它,然后对其进行解码,或者
2)将URL作为POST参数传递
但我不知道该怎么做。
编辑:在回应评论时,我应该更清楚。我正在使用OpenId组件,我有一个有效的OpenId实现。我需要做的是将OpenId链接到现有的用户系统。当新用户通过OpenId登录时,我会询问更多详细信息,然后使用此数据创建新用户。问题是我必须在整个过程中保留OpenId URL。答案 0 :(得分:6)
我的建议是将网址存储在会话中。
答案 1 :(得分:1)
我的第一个建议是尝试PHP的urlencode()和urldecode()函数,但我不完全确定当你编码和解码已经为OpenID身份的参数进行url编码的东西时会发生什么。
答案 2 :(得分:0)
您可以尝试这种方式:
$this->redirect(array(
'controller' => 'users',
'action' => 'openid_create',
'?' => array('id' => $openid)
));