Передача URL в качестве параметра URL - PullRequest
0 голосов
/ 21 апреля 2010

Я реализую вход в систему OpenId в приложении CakePHP. В определенный момент мне нужно перенаправить к другому действию, сохраняя при этом информацию об идентификаторе 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) закодировать URL дружественным CakePHP способом для его передачи и декодирования после этого, или

2) передать URL как параметр POST

но я не знаю, как это сделать.

РЕДАКТИРОВАТЬ: В ответ на комментарии, я должен быть более ясным. Я использую компонент OpenId, и у меня есть рабочая реализация OpenId. Что мне нужно сделать, это связать OpenId с существующей системой пользователя. Когда новый пользователь входит в систему через OpenId, я спрашиваю более подробную информацию, а затем создаю нового пользователя с этими данными. Проблема в том, что я должен сохранять URL-адрес OpenId на протяжении всего этого процесса.

Ответы [ 3 ]

6 голосов
/ 21 апреля 2010

Я предлагаю сохранить URL в сеансе.

1 голос
/ 21 апреля 2010

Моим первым предложением было бы попробовать PHP-функции urlencode () и urldecode (), но я не совсем уверен, что произойдет, когда вы кодируете и декодируете материал, который уже был закодирован для параметров идентификаторов OpenID.

0 голосов
/ 22 апреля 2010

Вы можете попробовать так:

$this->redirect(array(
    'controller' => 'users',
    'action' => 'openid_create',
    '?' => array('id' => $openid)
));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...