Как передать URL-адрес в качестве параметра URL-адреса в Zend Framework?


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

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

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

404 не найдено - / login / index/dest / / invitation / 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 3

3 ответа:

Не можете ли вы просто отправить его в качестве параметра simpel GET?

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

Вот как это в основном делается на самом деле.

  1. , что ChrisR писал совершенно ответ
  2. Почему бы вам просто не использовать $_SERVER['referer']

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

<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