Codeigniter Flash Данные не удаляются - PullRequest
0 голосов
/ 02 сентября 2018

Мой код на самом деле не удаляется. Я проверяю, является ли переменная $ 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;
     }

Ответы [ 4 ]

0 голосов
/ 27 ноября 2018

если вы все еще найдете решение, вы можете попробовать мое решение

Добавить функцию загрузки 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 каждый раз, когда вы загружаете новый контроллер. это работа для меня, потому что ваша проблема также кошмар для меня раньше.

0 голосов
/ 03 сентября 2018

Шаг 01

В модели вы проходите return $result->row(0)->id; и проверяете if($user_id == true){. Это никогда не пойдет внутрь фунта boolen! = Intiger .

Заменить

if($user_id == true){

к этому

if($user_id != false){

Шаг 02

у вас есть два пути в контроллере if and иначе . Only one defined with redirect`

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 маршруту, и это будет работать.


  1. Данные Flash могут использовать только ОДИН РАЗ .
  2. Flash data работает в браузере REFRESH .
0 голосов
/ 03 сентября 2018

Используйте jQuery для исчезновения данных.

<script>
    setTimeout(function () {
        $("#div_id").hide();
    }, 4000);
</script>
0 голосов
/ 03 сентября 2018

Для того чтобы 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 } ?>

надеюсь, что поможет:)

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