Как передать URL как параметр URL в Zend Framework? - PullRequest
3 голосов
/ 14 июля 2011

Мой вопрос возникает после того, как я отправил пользователю электронное письмо со следующим текстом:

http://mydomain.net/login/index/dest/%2Finvitation%2Fconfirm%2Fconfirmation_key%2F15116b5e4c61e4111ade679c10b3bf27

Как вы можете видеть, я пытаюсь передать URL в качестве параметра "dest", чтобы страница входа в систему знала, куда перенаправить после входа пользователя. Однако мне представлено следующее :

404 Not Found - /login/index/dest//invitation/confirm/confirmation_key/15116b5e4c61e4111ade679c10b3bf27

Это представление, которое я использую для создания электронного письма:

<p>
<?if($this->invitation->user):?>
<a href='<?=$this->serverUrl($this->baseUrl().$this->url(array(
    'action'=>'index',
    'controller'=>'login',
    'dest'=>$this->url(array(
        'action'=>'confirm',
        'controller'=>'invitation',
        'confirmation_key'=>$this->invitation->confirmation_key
    ))
)));?>'>Log in to confirm this invitation.</a>

//The view continues...

Любая идея о том, как не допустить перевода этого элемента в кодировке URI в их буквальное значение, будет принята с благодарностью.

Ответы [ 3 ]

6 голосов
/ 14 июля 2011

Разве вы не можете просто отправить его как параметр GET simpel?

Как и http://mydomain.net/login/index/?redirect=/invitation/confirm/confirmation_key/15116b5e4c61e4111ade679c10b3bf27

Вот как это обычно делается на самом деле.

1 голос
/ 14 июля 2011
  1. То, что написал ChrisR, является абсолютным ответом
  2. Почему бы вам просто не использовать $_SERVER['referer']
0 голосов
/ 13 августа 2011

Вы также можете обновить свою ссылку следующим образом:

<a href='<?=$this->serverUrl($this->baseUrl().$this->url(array(
'action'=>'index',
'controller'=>'login',
'dest'=>base64_encode($this->url(array(
    'action'=>'confirm',
    'controller'=>'invitation',
    'confirmation_key'=>$this->invitation->confirmation_key
))))

));?>'>Log in to confirm this invitation.</a>

Но на /login/index вам нужно будет использовать base64_decode(), чтобы получить оригиналНе самое симпатичное решение, но если вы не можете использовать простую строку запроса, это способ безопасного передачи строки через URL.

http://en.wikipedia.org/wiki/Base64

...