У меня странная проблема с флеш-данными codeigniters в моей форме входа в систему.Когда я отправляю форму с ошибкой (нераспознанная электронная почта или неверный пароль электронной почты), для отображения сообщения об ошибке требуется две отправки.Вот соответствующий код:
//If an email address is matched
if($rowcount === 1) {
$row = $query->row();
if (hash('sha1', $row->salt . $_POST['password']) === $row->password) {
//there's a matching user...create a session here and redirect to homepage
} else {
$this->session->set_flashdata('credentials_error', '1');
// echo 'recognise email but not password';
}
} else {
//send message back to view here
$this->session->set_flashdata('email_error','1');
}
print_r($this->session);
$global_data['page_data'] = $this->load->view('login-template','',true);
$this->load->view('global', $global_data);
и соответствующий бит из представления:
if($this->session->flashdata('email_error')) {
echo '<p class="error">We dont recognise this email address.</p>';
}
if($this->session->flashdata('credentials_error')) {
echo '<p class="error">We dont recognise these details. Please try again.</p>';
}
Поэтому, если я отправляю форму с неверным адресом электронной почты, который не распознан, я устанавливаю флеш email_errorданные.Проблема в том, что в представлении я вижу, что flashdata устанавливается, когда я распечатываю все данные сеанса ([flash: new: emaili_error] => 1), но мое сообщение об ошибке не отображается.Однако при повторной отправке формы (повторная отправка тех же данных) появляется сообщение об ошибке.
Есть идеи, почему это может быть?