Мой код на самом деле не удаляется. Я проверяю, является ли переменная $ user_id истинной или ложной. Если true, пользователь вошел в систему и перенаправлен, а если false, то создаются флэш-данные, показывающие, что он не вошел в систему. Проблема в том, что после того, как созданные флэш-данные не исчезают, я возвращаю количество строк из модели в переменной $ user_id.
$user_id = $this->login_model->login($email,$password);
if ($user_id == true){
$user_data = array("user_id"=>$user_id,"email"=>$email,"loggedin"=>true);
$this->session->set_userdata($user_data);
$this->session->set_flashdata('login_success','You Are Now Logged In');
redirect('dashboard');
}else{
$this->session->set_flashdata('login_failed','Email Or Password Is Incorrect');
}
Вот мой модельный код:
$query =$this->db->where('email',$email);
$query =$this->db->where('password',$password);
$result = $this->db->get('users');
if ($result->num_rows() == 1){
return $result->row(0)->id;
}else{
return false;
}
Возможно дубликат Flashdata не очищается в Codeigniter. Вы можете попробовать некоторые решения, указанные в этом вопросе. Они должны работать.
покажи свою страницу просмотра






Чтобы сделать flash_dataпропадать или тускнеть, вам необходимо создать для этого скрипт.
используйте это, чтобы исчезнуть ваш flash_data.
setInterval(function()
{
$('#flash_data').fadeOut('slow');
}, 3000);
установите интервал и в своем HTML-код сделайте это ...
<?php if (($this->session->flashdata('name')=='Hello, I am Flash Data')){?>
<div class = "alert alert-info alert-dismissible fade in" role = "alert" id = "flash_data"> //set your id here
<i class = "glyphicon glyphicon-ok"></i> <?php echo $this->session->flashdata('notif'); ?>
</div>
<?php } ?>
надеюсь, это поможет :)
Шаг 01
В модели вы передаете return $result->row(0)->id; и проверяете if ($user_id == true){. Он никогда не войдет в функцию boolen! = Intiger.
Замените это
if ($user_id == true){
к этому
if ($user_id != false){
Шаг 02
у вас есть два пути в контроллере if andelse. Only one defined withredirect`
if ($user_id == true){ # Must change accroding to step 01
$this->session->set_flashdata('login_success','You Are Now Logged In');
redirect('dashboard');
}else{
$this->session->set_flashdata('login_failed','Email Or Password Is Incorrect');
# missing ??? Maybe redirect('login');
}
Добавьте redirect в маршрут login, и это сработает.
Привет, на самом деле у меня проблема, я понял, что использую действие формы на той же странице, поэтому он вызывает эту ошибку, потому что флэш-данные появляются постоянно, вы можете помочь мне исправить это?
если ($ это-> сеанс-> flashdata ('login_success')) {echo $ this-> session-> flashdata ('login_success'); } elseif ($ this-> сессия-> flashdata ('login_failed')) {echo $ this-> session-> flashdata ('login_failed'); }
добавьте в свой вопрос и добавьте форму
привет, я исправил это, изменив действие на другой странице action = "login / login_check", но не могли бы вы рассказать мне, как я могу отобразить ошибку на той же странице, как в основном php if (isset ($ _ POST ['' submit ])) {эхо-ошибка?>
Используйте jQuery, чтобы удалить данные.
<script>
setTimeout(function () {
$("#div_id").hide();
}, 4000);
</script>
если вы все же найдете решение, вы можете попробовать мое решение
Добавьте функцию onload js в свое тело
<body onload = "clearme();">
Добавьте js-скрипт внизу перед
<script type = "text/javascript">
function clearme() {
<?php
if (isset($_SESSION['msg_success'])):
unset($_SESSION['msg_success']);
elseif (isset($_SESSION['msg_error'])):
unset($_SESSION['msg_error']);
endif;
?>
}
</script>
он будет очищать сеанс flashdata каждый раз, когда вы загружаете новый контроллер. это работает для меня, потому что твоя проблема и раньше казалась мне кошмаром.
Почему вы оборачиваете PHP-код в javascript? Хотя синтаксически он действителен, он не имеет семантических отношений и не будет выполняться при вызове clearme(). Вместо этого PHP выполнит код при рендеринге страницы, независимо от любого javascript.
Это работает, потому что вы выполняете код PHP при загрузке страницы, независимо от того. Нет причин использовать javascript или вызов onload.
Код модели не имеет отношения к вашему вопросу. Как вы показываете flashdata?