2010-04-21 4 views
0

Я использую вход OpenId в приложении CakePHP. В какой-то момент мне нужно перенаправить на другое действие, сохраняя при этом информацию о личности OpenId, который сам по себе является URL (с параметрами GET), напримерПередача URL-адреса в качестве параметра URL-адреса

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

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

EDIT: В ответ на комментарии я должен быть более понятным. Я использую компонент OpenId, и у меня есть работающая реализация OpenId. Мне нужно связать OpenId с существующей пользовательской системой. Когда новый пользователь регистрируется через OpenId, я запрашиваю более подробную информацию, а затем создаю нового пользователя с этими данными. Проблема в том, что я должен сохранить URL OpenId на протяжении всего процесса.

+0

Вы знаете, это уже существует как компонент для CakePHP. Если вы не хотите его использовать, вы всегда можете скачать его и пройти через код, чтобы получить представление. –

ответ

6

Мое предложение - сохранить URL-адрес в сеансе.

+0

Ничего себе, это было так просто! :-D – Andrea

1

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

0

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

$this->redirect(array(
    'controller' => 'users', 
    'action' => 'openid_create', 
    '?' => array('id' => $openid) 
)); 
Смежные вопросы