title: Losing session data in code igniter
body: <p>I am facing problems with session data. After login to the website, I'm losing session data. I have tired creating sessions in database and also tried native php session class but nothing worked. I have also cleared tmp folder from server. 
  The website uses code igniter framework and it is hosted on godaddy VPS
  Please help me. Thank You...</p>
  
  <pre><code>&lt;?php  if (!defined('BASEPATH')) exit('No direct script access allowed');
  
  class CI_Session {
      var $session_id_ttl; // session id time to live (TTL) in seconds
     var $flash_key = 'flash'; // prefix for "flash" variables (eg. flash:new:message)
  
  
  
  function CI_Session()
  {
      $this-&gt;object =&amp; get_instance();
      log_message('debug', "Native_session Class Initialized");
      $this-&gt;_sess_run();
  }
  
  /**
  * Regenerates session id
  */
  function regenerate_id()
  {
      // copy old session data, including its id
      $old_session_id = session_id();
      $old_session_data = $_SESSION;
  
      // regenerate session id and store it
      session_regenerate_id();
      $new_session_id = session_id();
  
      // switch to the old session and destroy its storage
      session_id($old_session_id);
      session_destroy();
  
      // switch back to the new session id and send the cookie
      session_id($new_session_id);
      session_start();
  
      // restore the old session data into the new session
      $_SESSION = $old_session_data;
  
      // update the session creation time
      $_SESSION['regenerated'] = time();
  
      // session_write_close() patch based on this thread
      // http://www.codeigniter.com/forums/viewthread/1624/
      // there is a question mark ?? as to side affects
  
      // end the current session and store session data.
      session_write_close();
  }
  
  /**
  * Destroys the session and erases session storage
  */
  function destroy()
  {
      //unset($_SESSION);
      session_unset();
      if ( isset( $_COOKIE[session_name()] ) )
      {
            setcookie(session_name(), '', time()-42000, '/');
      }
      session_destroy();
  }
  
  /**
  * Reads given session attribute value
  */    
  function userdata($item)
  {
      if($item == 'session_id'){ //added for backward-compatibility
          return session_id();
      }else{
          return ( ! isset($_SESSION[$item])) ? false : $_SESSION[$item];
      }
  }
  
  /**
  * Sets session attributes to the given values
  */
  function set_userdata($newdata = array(), $newval = '')
  {
      if (is_string($newdata))
      {
          $newdata = array($newdata =&gt; $newval);
      }
  
      if (count($newdata) &gt; 0)
      {
          foreach ($newdata as $key =&gt; $val)
          {
              $_SESSION[$key] = $val;
          }
      }
  }
  
  /**
  * Erases given session attributes
  */
  function unset_userdata($newdata = array())
  {
      if (is_string($newdata))
      {
          $newdata = array($newdata =&gt; '');
      }
  
      if (count($newdata) &gt; 0)
      {
          foreach ($newdata as $key =&gt; $val)
          {
              unset($_SESSION[$key]);
          }
      }        
  }
  
  /**
  * Starts up the session system for current request
  */
  function _sess_run()
  {
  
      $session_id_ttl = $this-&gt;object-&gt;config-&gt;item('sess_expiration');
  
      if (is_numeric($session_id_ttl))
      {
          if ($session_id_ttl &gt; 0)
          {
              $this-&gt;session_id_ttl = $this-&gt;object-&gt;config-&gt;item('sess_expiration');
          }
          else
          {
              $this-&gt;session_id_ttl = (60*60*24*365*2);
          }
      }
  
      session_start();
  
      // check if session id needs regeneration
      if ( $this-&gt;_session_id_expired() )
      {
          // regenerate session id (session data stays the
          // same, but old session storage is destroyed)
          $this-&gt;regenerate_id();
      }
  
      // delete old flashdata (from last request)
      //$this-&gt;_flashdata_sweep();
  
      // mark all new flashdata as old (data will be deleted before next request)
      //$this-&gt;_flashdata_mark();
  }
  
  /**
  * Checks if session has expired
  */
  function _session_id_expired()
  {   
      if ( !isset( $_SESSION['regenerated'] ) )
      {
          $_SESSION['regenerated'] = time();
          return false;
      }
  
      $expiry_time = time() - $this-&gt;session_id_ttl;
  
      if ( $_SESSION['regenerated'] &lt;=  $expiry_time )
      {
          return true;
      }
  
      return false;
  }
  
  /**
  * Sets "flash" data which will be available only in next request (then it will
  * be deleted from session). You can use it to implement "Save succeeded" messages
  * after redirect.
  */
  function set_flashdata($key, $value)
  {
      $flash_key = $this-&gt;flash_key.':new:'.$key;
      $this-&gt;set_userdata($flash_key, $value);
  }
  
  /**
  * Keeps existing "flash" data available to next request.
  */
  function keep_flashdata($key)
  {
      $old_flash_key = $this-&gt;flash_key.':old:'.$key;
      $value = $this-&gt;userdata($old_flash_key);
  
      $new_flash_key = $this-&gt;flash_key.':new:'.$key;
      $this-&gt;set_userdata($new_flash_key, $value);
  }
  
  /**
  * Returns "flash" data for the given key.
  */
  function flashdata($key)
  {
      $flash_key = $this-&gt;flash_key.':old:'.$key;
      return $this-&gt;userdata($flash_key);
  }
  
  /**
  * PRIVATE: Internal method - marks "flash" session attributes as 'old'
  */
  function _flashdata_mark()
  {
      foreach ($_SESSION as $name =&gt; $value)
      {
          $parts = explode(':new:', $name);
          if (is_array($parts) &amp;&amp; count($parts) == 2)
          {
              $new_name = $this-&gt;flash_key.':old:'.$parts[1];
              $this-&gt;set_userdata($new_name, $value);
              $this-&gt;unset_userdata($name);
          }
      }
  }
  
  /**
  * PRIVATE: Internal method - removes "flash" session marked as 'old'
  */
  function _flashdata_sweep()
  {
      foreach ($_SESSION as $name =&gt; $value)
      {
          $parts = explode(':old:', $name);
          if (is_array($parts) &amp;&amp; count($parts) == 2 &amp;&amp; $parts[0] == $this-&gt;flash_key)
          {
              $this-&gt;unset_userdata($name);
          }
      }
  }
  }
  </code></pre>