Запретить повторную отправку данных формы в Code Igniter - PullRequest
4 голосов
/ 11 февраля 2012

Я довольно новичок в Code Igniter (это мой первый фреймворк, который я изучаю).

Я получил это в моем контроллере:

   if ($this->form_validation->run() === FALSE)
    {
        $this->load->view('account/register', $data);
    }
    else
    {
        $data['message'] = $this->lang->line('account_created');
        $this->register->insert_account();
        $this->load->view('account/register_success', $data);
    }

Если форма подтверждена успешно, она просто меняет представление, но все еще можно нажать кнопку обновления и повторно отправить данные формы - это не большая проблема для меня, так как я проверяю, являются ли поля уникальный, но было бы лучше для меня, чтобы предотвратить повторную отправку данных формы.

Обычно в чистом PHP я бы использовал header("Location: ...");, но я загружаю представление здесь, поэтому после перенаправления к нему невозможно получить доступ - не так ли?

Есть ли у вас какие-либо предложения для этого?

Ответы [ 2 ]

8 голосов
/ 11 февраля 2012

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

контроллер

Сделайте это при успехе формы

$this->session->set_flashdata("success", $strMessage);
redirect("account/register");

вид

Это отобразит сообщение об успехе на странице формы.

if($this->session->flashdata("success") !== FALSE)
{
    echo "<div class=\"formSuccess\">" . $this->session->flashdata("success") . "</div>\n";
}
0 голосов
/ 11 февраля 2012

Ajax вид, который вам нужен в div.Видишь, о чем я?изменить содержимое страницы, но не саму страницу.

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