2013-12-16 2 views
0

Как описано в документации CodeIgniter, flashdata - это сеансы, которые живы только в запросе, и после этого они умирают.CodeIgniter flashdata не умирает после одного запроса

Теперь я использовал этот механизм для моего процесса входа в систему, однако он терпит неудачу. Всякий раз, когда я нахожусь на странице, то есть flashdata жив.

Я установил flashdata в случаях, когда логин email/pass является неправильным, и возврат на страницу входа в систему, после чего я устанавливаю условие, которое проверяет, установлены ли флеш-данные, а затем выведите сообщение об ошибке. Теперь, каждый раз, когда я посещаю страницу входа в систему, он показывает ошибку с ошибкой входа. Зачем?

Вот страница Логина в условном операторе, который проверяет наличие flashdata наличия (в файле представление login.php)

if($this->session->flashdata("login-result") == 0) 
{ 
    show_fail("رمز عبور یا رایانامه اشتباه می باشد."); 
} 

Я также поставил echo() код, чтобы увидеть, если flashdata когда-либо установлен, который показывает правильное значение:

echo ($this->session->flashdata("login-result")); 

А вот Логин условие, которое я использовал для установки flashdata:

// go with regular registration 
$this->db->where("email", $this->input->post("email")); 
$this->db->where("password", md5($this->input->post("password"))); 
$this->db->from("users"); 
$login_result = $this->db->count_all_results(); 
if($login_result == 0) 
{ 
    $this->session->set_flashdata("login-result", 0); 
    redirect(base_url("access/login")); 
} 
else if($login_result > 0) 
{ 
    redirect("panel/home"); 
} 
+1

Вы использовали его правильно в вашем коде, так почему вы продолжаете называть его FlashCard ?? –

ответ

0

Возможно, вы присвоили FLASHDATA значение 0, что соответствует числу, но в PHP 0 также означает FALSE, что является регулярным возвращаемым значением flashdata, которое не установлено.

Так что попробуйте дать ему значение truish:

$this->session->set_flashdata("login-result", 1); 

, и вы увидите, что

if(!$this->session->flashdata("login-result")) 
{ 
    show_fail("رمز عبور یا رایانامه اشتباه می باشد."); 
} 

будет работать.

Если вы хотите сохранить 0, использовать строгое равенство проверка:

if($this->session->flashdata("login-result") === 0) 

Так что он будет проверять, что flashdata такое же значение и введите.

Смотрите types comparison chart для получения более подробной информации

+0

хорошая рекомендация/решение. он работает –

0

$this->session->set_flashdata('your message') попробуйте использовать

+0

Возможно, вы захотите объяснить, почему ваш ответ (или может быть) правильный, чтобы помочь OP или будущим читателям понять ваши рассуждения. – Joe

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