将URL作为URL参数传递

时间:2010-04-21 14:45:16

标签: php url cakephp

我正在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。

3 个答案:

答案 0 :(得分:6)

我的建议是将网址存储在会话中。

答案 1 :(得分:1)

我的第一个建议是尝试PHP的urlencode()和urldecode()函数,但我不完全确定当你编码和解码已经为OpenID身份的参数进行url编码的东西时会发生什么。

答案 2 :(得分:0)

您可以尝试这种方式:

$this->redirect(array(
    'controller' => 'users',
    'action' => 'openid_create',
    '?' => array('id' => $openid)
));