Codeigniter Flash Data не удаляется

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

Alex 02.09.2018 21:45

Возможно дубликат Flashdata не очищается в Codeigniter. Вы можете попробовать некоторые решения, указанные в этом вопросе. Они должны работать.

Hassan-Zahid 02.09.2018 23:01

покажи свою страницу просмотра

Yadhu Babu 03.09.2018 08:19
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
913
4

Ответы 4

Чтобы сделать 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, и это сработает.


  1. Флэш-данные могут использовать только ОДИН РАЗ.
  2. Флэш-данные работает в браузере ОБНОВИТЬ.

Привет, на самом деле у меня проблема, я понял, что использую действие формы на той же странице, поэтому он вызывает эту ошибку, потому что флэш-данные появляются постоянно, вы можете помочь мне исправить это?

Abdul Rafay 03.09.2018 11:22

если ($ это-> сеанс-> flashdata ('login_success')) {echo $ this-> session-> flashdata ('login_success'); } elseif ($ this-> сессия-> flashdata ('login_failed')) {echo $ this-> session-> flashdata ('login_failed'); }

Abdul Rafay 03.09.2018 11:38

добавьте в свой вопрос и добавьте форму

Abdulla Nilam 03.09.2018 11:39

привет, я исправил это, изменив действие на другой странице action = "login / login_check", но не могли бы вы рассказать мне, как я могу отобразить ошибку на той же странице, как в основном php if (isset ($ _ POST ['' submit ])) {эхо-ошибка?>

Abdul Rafay 03.09.2018 11:41

Используйте 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.

Michal 27.11.2018 05:49

Это работает, потому что вы выполняете код PHP при загрузке страницы, независимо от того. Нет причин использовать javascript или вызов onload.

Marcus Hughes 27.11.2018 15:08

Другие вопросы по теме