В CodeIgniter, как очистить «данные формы» после перенаправления страницы - PullRequest
0 голосов
/ 03 июня 2010

Я не уверен, что правильно объяснил это в заголовке вопроса, поэтому вот подробности:

Login контроллер:

function authenticate() {
    if ( authorized ) {
        redirect('lobby');
    } else {
        redirect('login');
    }
}

Lobby контроллер:

function index() {
    //load lobby view
}

В результате получается, что на странице входа в систему я ввожу user / pass, нажимаю Login, затем вызывается authenticate() и перенаправляет на Lobby.

Однако, когда я нажимаю кнопку «Обновить» в Лобби, форма входа снова отправляется, поэтому я снова «захожу». Как я могу предотвратить это?

Ответы [ 2 ]

3 голосов
/ 03 июня 2010

То, что вы видите, - это поведение браузера, которое само по себе не связано с CodeIgniter. Веб-браузер хранит данные POST для формы входа в систему и переходит к действию формы, когда пользователь нажимает кнопку отправки. Ответ от сервера - перенаправление. Поэтому, когда пользователь нажимает кнопку обновления, браузер выполняет обновление действия формы, а не ответа перенаправления с сервера.

У вас есть несколько вариантов, чтобы обойти или избежать этого. Первое, что приходит на ум, - это установить в методе authenticate проверку, чтобы убедиться, что пользователь уже вошел в систему. Если это так, тогда переходите к лобби. В противном случае проверьте регистрационные данные пользователя как обычно.

Вы также можете просто изменить действие формы входа в систему, чтобы перейти непосредственно в лобби и выполнить аутентификацию в методе индекса лобби. Если пользователь не вошел в систему, перенаправьте его оттуда обратно в форму входа.

0 голосов
/ 17 июня 2010

Вы должны использовать контроллер для проверки в конструкции, если пользователь зарегистрирован или нет, таким образом, вы можете перенаправить или не на основе переменной сеанса.

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