CakePHP проверить реферер - PullRequest
2 голосов
/ 24 июля 2011

У меня есть следующий код:

function success()
    {
        if(!$this->referer(array('controller'=>'contact','action'=>'index')))
        {
            $this->redirect(array('controller'=>'contact','action'=>'index'));
        }
    }

Я пытаюсь проверить, получил ли пользователь доступ к странице успеха из действия index, и если нет, то отправил его обратно в метод index, чтобы он не мог просмотреть страницу успеха, если он ранее не отправил некоторые данные. на действие индекса.

Однако это не работает, так как пользователь все еще может посетить страницу успеха, даже если он сначала не посещал страницу индекса ...

Кто-нибудь может помочь? Спасибо

Ответы [ 3 ]

3 голосов
/ 24 июля 2011
function success()
{
    if($this->referer() != Router::url(array('controller'=>'contact','action'=>'index')))
    {
        $this->redirect(array('controller'=>'contact','action'=>'index'));
    }
}
3 голосов
/ 05 декабря 2013

попробуйте добавить true в конце Router :: url, функция для получения полного URL:

if($this->referer() != Router::url(array('controller'=>'contact','action'=>'index'),true))
1 голос
/ 24 июля 2011

Я думаю, это не сработает.Теперь вы просто устанавливаете реферер по умолчанию с этим кодом.Попробуйте что-то вроде:

if($this->referer() != Router::url(array('controller'=>'contact','action'=>'index')))

Редактировать: исправил код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...