Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Codeigniter unset session

Tags:

Hi I have a site develop in CodeIgniter.

In one of my page I'm using pagination of CodeIgniter after a search form.

In this case I store into my session the search value passed by $_POST because if I have more result clicking the next page the search keppe the searching value.

But when I change page for example I want to return to the index and after return to my search form page the session is already created and make the query with the value of the session. How can I destroy or unset the value of the session when I change page? Is this possible?

Into my model function I check if the session value is different from 0 and exist, if true I make a query with the session value.

This is my controller (nation is the value to store into the session)

public function region_list(){         $this->load->model('backend/Nation_model');         $this->load->library("pagination");          if($_POST)         {             if (isset($_POST['ricerca'])){                  $nation = $this->input->post('nation');                 if(strlen($nation) > 0){                    $this->session->set_userdata('nation',$nation);                 }                  $config = array();                 $config["base_url"] = base_url() . "index.php/backend/region/region_list";                 $config["total_rows"] = $this->Region_model->countRegionSearch();                 $config["per_page"] = 10;                 $config["uri_segment"] = 4;                  $this->pagination->initialize($config);                  $page = ($this->uri->segment(4)) ? $this->uri->segment(4) : 0;                 $data["regionlist"] = $this->Region_model->regionSearch($config["per_page"], $page);                 $data["links"] = $this->pagination->create_links();                 $data["nationlist"] = $this->Nation_model->nationList();                  $this->load->view('backend/region_list_view',$data);             }         }         else         {             $config = array();             $config["base_url"] = base_url() . "index.php/backend/region/region_list";             $config["total_rows"] = $this->Region_model->countRegion();             $config["per_page"] = 10;             $config["uri_segment"] = 4;              $this->pagination->initialize($config);              $page = ($this->uri->segment(4)) ? $this->uri->segment(4) : 0;             $data["links"] = $this->pagination->create_links();             $data["regionlist"] = $this->Region_model->regionList($config["per_page"], $page);             $data["nationlist"] = $this->Nation_model->nationList();              $this->load->view('backend/region_list_view',$data);         }     } 

and this is my model to search:

function regionList($limit=null, $start=null) {         $nation_id = $this->session->userdata('nation');         if ($this->session->userdata('language')=="it")             $this->db->select('region.id, region.name_it as name,nation.id as nation_id, nation.name_it as nation_name');         if ($this->session->userdata('language')=="en")             $this->db->select('region.id, region.name_en as name,nation.id as nation_id, nation.name_en as nation_name');         $this->db->from('region');         $this->db->join('nation', 'region.nation_id = nation.id','left');         if((isset($nation_id))&&($nation_id!=0))             $this->db->where('region.nation_id', $nation_id);         $this->db->order_by("name", "asc");         $this->db->limit($limit, $start);         $query = $this->db->get();         $region = array();         foreach ($query->result() as $row)             array_push($region, $row);          return $region;          }      function countRegion() {         $nation_id = $this->session->userdata('nation');         if ($this->session->userdata('language')=="it")             $this->db->select('region.id, region.name_it as name,nation.id as nation_id, nation.name_it as nation_name');         if ($this->session->userdata('language')=="en")             $this->db->select('region.id, region.name_en as name,nation.id as nation_id, nation.name_en as nation_name');         $this->db->from('region');         $this->db->join('nation', 'region.nation_id = nation.id','left');         if((isset($nation_id))&&($nation_id!=0))             $this->db->where('region.nation_id', $nation_id);         $this->db->order_by("name", "asc");         $query = $this->db->get();         return $query->num_rows();       }      public function regionSearch($limit=null, $start=null){         $nation_id = $this->session->userdata('nation');         if ($this->session->userdata('language')=="it"){             $this->db->select('*,region.id, region.name_it as name,nation.id as nation_id, nation.name_it as nation_name');             if($this->input->post('name')!="")                 $this->db->where('region.name_it LIKE "%'.$this->input->post('name').'%"');         }          if ($this->session->userdata('language')=="en"){             $this->db->select('*,region.id, region.name_en as name,nation.id as nation_id, nation.name_en as nation_name');             if($this->input->post('name')!="")                 $this->db->where('region.name_en LIKE "%'.$this->input->post('name').'%"');         }         $this->db->from('region');         $this->db->join('nation', 'region.nation_id = nation.id','left');         if((isset($nation_id))&&($nation_id!=0))             $this->db->where('region.nation_id', $nation_id);         $this->db->order_by("name", "asc");         $this->db->limit($limit, $start);         $query = $this->db->get();         $region = array();         foreach ($query->result() as $row)             array_push($region, $row);          return $region;       }       public function countRegionSearch(){         $nation_id = $this->session->userdata('nation');         if ($this->session->userdata('language')=="it"){             $this->db->select('*,region.id, region.name_it as name,nation.id as nation_id, nation.name_it as nation_name');             if($this->input->post('name')!="")                 $this->db->where('region.name_it LIKE "%'.$this->input->post('name').'%"');         }          if ($this->session->userdata('language')=="en"){             $this->db->select('*,region.id, region.name_en as name,nation.id as nation_id, nation.name_en as nation_name');             if($this->input->post('name')!="")                 $this->db->where('region.name_en LIKE "%'.$this->input->post('name').'%"');         }         $this->db->from('region');         $this->db->join('nation', 'region.nation_id = nation.id','left');         if((isset($nation_id))&&($nation_id!=0))             $this->db->where('region.nation_id', $nation_id);         $this->db->order_by("name", "asc");          $query = $this->db->get();         return $query->num_rows();            } 
like image 346
Alessandro Minoccheri Avatar asked Jan 09 '13 10:01

Alessandro Minoccheri


People also ask

How do you unset a session in CI?

In PHP, we can remove data stored in session using the unset() function as shown below. unset($_SESSION['some_name']); Removing session data in CodeIgniter is very simple as shown below. The below version of unset_userdata() function will remove only one variable from session.

How check session is empty or not in CodeIgniter?

If you want to verify that a session value exists, simply check with isset() : <? php // returns false if the 'some_name' item doesn't exist or is null, // true otherwise: if (isset($_SESSION['some_name'])) { // ... }

How do you check session is set or not in CodeIgniter 4?

3 Answers. Show activity on this post. $this->session->set_userdata('some_name', 'some_value'); But before that ensure that you have the session library included.

How do you destroy a session?

Destroying a PHP Session A PHP session can be destroyed by session_destroy() function. This function does not need any argument and a single call can destroy all the session variables. If you want to destroy a single session variable then you can use unset() function to unset a session variable.


1 Answers

answering to your question:

How can I destroy or unset the value of the session?

I can help you by this:

$this->session->unset_userdata('some_name'); 

and for multiple data you can:

$array_items = array('username' => '', 'email' => '');  $this->session->unset_userdata($array_items); 

and to destroy the session:

$this->session->sess_destroy(); 

Now for the on page change part (on the top of my mind):

you can set the config "anchor_class" of the paginator equal to the classname you want.

after that just check it with jquery onclick for that class which will send a head up to the controller function that will unset the user session.

like image 139
mamdouh alramadan Avatar answered Oct 03 '22 21:10

mamdouh alramadan