2010-06-03 2 views
0

Я не уверен, что я объяснил это правильно в названии вопроса, так вот подробности:В CodeIgniter, как очистить «данные формы» после перенаправления страницы

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

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

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

function index() { 
    //load lobby view 
} 

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

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

ответ

3

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

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

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

0

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

Смежные вопросы