>source

저는 codeigniter의 초보자이며 사용자를 만들고 관리하는 프로젝트를 만들고 있습니다. 여기에서 "사용자 생성" 등과 같은 임시 메시지를 표시하기 위해 flashdata를 사용하고 있습니다.

플래시 데이터를 설정하는 code는

   $this->session->set_flashdata('message', 'User Created.');

내 생각에 나는 그것을 다음과 같이 불렀다.

$this->session->flashdata('message');

내 문제는 사용자가 생성될 때 플래시 데이터가 표시되고 홈 링크를 클릭하면 플래시 데이터를 계속 사용할 수 있지만 새로 고침/홈을 다시 클릭하면 사라집니다. 홈 링크 자체를 처음 클릭할 때 지워지기를 원합니다. 코딩하는 방법이 있나요??

Flashdata는 애플리케이션에 액세스할 때마다 지워집니다. 홈 버튼에 ajax 속임수를 쓰고 있지 않습니까?

Maxim Kumpan2021-11-14 20:24:47

고마워 얘들아 ... 나는 그런 반응을 기대하지 않았다 ... 정말 흥분 ..이 사이트가 여기에 있도록 PHP에 대해 훨씬 더 깊이 파고들 것입니다 .... 기분이 좋습니다 ...

Pradeep G2021-11-14 20:24:47
  • 답변 # 1

    다른 방법이 도움이 되지 않으면 세션 라이브러리를 확장하고 clear_flashdata 함수를 추가하기만 하면 됩니다.

    <?php defined('BASEPATH') or exit('No direct script access allowed');
    //application/libraries/Session/MY_Session.php
    class MY_Session extends CI_Session
    {
        public function __construct(array $params= array())
        {
            parent::__construct($params);
        }
        /**
         * Clear flashdata
         *
         * Legacy CI_Session compatibility method
         *
         * @param   mixed   $data   Session data key or an associative array
         * @return  void
         */
        public function clear_flashdata($data)
        {
            $this->set_userdata($data, null);
        }
    }
    

  • 답변 # 2

    컨트롤러또는 다른 보기 파일에서 set_flash를 지우려면 이 간단한 code를 사용할 수 있습니다.

    $this->session->set_flashdata('error', 'User not found...'); //create set_flash
    

    설정되지 않음set_flash

    //echo "<pre>"; print_r($_SESSION); die; //for check
    if(isset($_SESSION['error'])){
        unset($_SESSION['error']);
    }
    

  • 답변 # 3

    Ajax 프레임워크를 사용하여 플래시 메시지를 자동으로 숨길 수 있습니다. 또한 모든 플래시 작업이 포함되어 있습니다.

    여기에서 더 많은 정보를 얻을 수 있습니다. https://github.com/EllisLab/CodeIgniter/wiki/Ajax-Framework-For-CodeIgniter

    이것이 해결책이지만 뷰 로드와 리디렉션의 문제에 대한 사용자 질문에 직접 답변하지 않는다고 생각합니다.

    Chad Priddle2021-11-14 20:24:47
  • 답변 # 4

    페이지를 다음으로 리디렉션해야 합니다.$this->세션-> set_flash('항목','값');

    :

    if ($this->form_validation->run()== FALSE){
        $this->session->set_flashdata('error',validation_errors());
        redirect(base_url().'user/login');
    }
    else{
        $this->session->set_flashdata('success','Thank you');
        redirect(base_url().'user/login');
    }
    

    일반적으로 개발자는 동일한 페이지에 데이터를 제출할 때 실수를 합니다. 그들은 플래시 데이터를 설정했지만 리디렉션하는 것을 잊었습니다.

    리디렉션해도 플래시 메시지가 사라지지 않습니다. 도와주세요. 동일한 페이지로 리디렉션합니다. { $this->Crud_model->insert_dept($deptdata); $this->session->set_flashdata('dept_created', '부서가 생성되었습니다..!'); redirect(base_url() . '잊어/설정'); //redirect(base_url() . '잊어/설정'); }else{ $this->session->set_flashdata('dept_not_created', '부서가 생성되지 않았습니다..!'); 리디렉션(base_url() . '잊어/설정'); }

    Abdul Rahman2021-11-15 07:27:11
  • 답변 # 5

    플래시 데이터는 한 번 표시되어야 합니다.

    페이지 새로고침 시 사라집니다.

    따라서 페이지를 다른 페이지로 리디렉션하면 작동합니다.

    페이지를 새로 고치지 않으면 jQuery를 통해 할 수 있습니다.

    플래시를 표시하는 div를 말합니다.

    <div id="flash-messages">Success Message</div>

    제이쿼리 작성:

    <script type="text/javascript">$(function(){
      $("#flash-messages").click(function(){$(this).hide()});
    });
    </script>

    jquery를 사용하여 시간 간격을 설정하여 hide(time_interval)처럼 숨길 수 있나요??.. 맞나요?

    Pradeep G2021-11-14 20:24:47

    감사합니다 ... 물어봐서 죄송합니다 ... 하지만 설정 방법 b'coz 나는 jquery 및 모든 것을 잘하지 못합니다 ...

    Pradeep G2021-11-14 20:24:47

    $(문서).ready(function(){ var refreshId= setInterval( function() { $("#flash-messages").hide()); }, 5000); });

    Pupil2021-11-14 20:24:47
  • 답변 # 6

    플래시 데이터는 다음 서버 요청에만 사용할 수 있으며 자동으로 지워집니다.

    if($user_created)
    {
        $this->session->set_flashdata('success', 'User created!');
        redirect('login');
    }
    else
    {
        redirect('register');
    }
    

    이것은 나를 위해 그것을 했다. 같은 문제가 발생했습니다. 리디렉션하는 대신 보기를 로드했습니다. 여전히 오류 메시지와 같은 값을 리디렉션에 전달할 수 있었습니다.

    Chad Priddle2021-11-14 20:24:47
  • 답변 # 7

    당신은리디렉션~ 후에사용자 생성. 그럼 언제다음번당신은 클릭홈 링크그것은 나타나지 않을 것입니다, 이것을 시도하십시오,

    $this->session->set_flashdata('message', 'User Created.');
    redirect(base_url().'home.php');//you can change accordingly
    

  • 이전 php : ajax 호출 후 값을 저장하는 방법은 무엇입니까?
  • 다음 python : pytz -UTC 및 시간대를 현지 시간으로 변환