CI sessions are an alternative to php sessions. It is advised to autoload the sessions so they are always available. CI sessions simplify using native php sessions, ie the
$_SESSION superglobal. For example, there is no need to include the
session_start() function (to start a new or resume an existing session). Session data is simply an array, associated with a particular session ID (cookie).
As well as read, set and unset values, CI also provides 2 special types of session data, flashdata and tempdata.
To read a session variable use either
$_SESSION['item_key_name'] (or the magic getter)
To retrieve all of the existing userdata, you can simply omit the item key
$_SESSION for example
print_r($_SESSION) (the magic getter only works for properties).
You can assign (set) data to the
$_SESSION array, as with any other variable. Or as a property of
$this->session. For example
$_SESSION['something'] = 'hello' or
$this->session->something = 'hello'
Check if a session variable exists:
To remove session variables, use for example,
unset($_SESSION['some_name']) or multiple values:
Flashdata is data that will only be available for the next request, and is then automatically cleared. This can be very useful, especially for one-time informational, error or status messages. To create a session variable as flashdata:
$_SESSION['item'] = 'value'; $this->session->mark_as_flash('item');
Or more concisely:
Read flashdata variables the same way as regular session data
However, if you want to be sure that you’re reading “flashdata” (and not any other kind), you can also use the flashdata() method:
Or to get an array with all flashdata, simply omit the key parameter:
If you find that you need to preserve a flashdata variable through an additional request, you can do so using the keep_flashdata() method.
Tempdata is session data with a specific expiration time. To mark an existing item as tempdata, simply pass its key and expiry time (in seconds!) to the
$_SESSION['item'] = 'value'; $this->session->mark_as_temp('item', 300); // erased after 300 seconds
$this->session->set_tempdata('item', 'value', 300);
Read tempdata variables the same way as regular session data
Destroying a Session
To clear the current session both of these will work in exactly the same way
You can still use the native php session functions with the CI session library and for simplicity, I think this is best practice. You then only need to learn the extra CI session methods (ie. flashdata, tempdata). The added bonus to the CI's session library is that you don't have to add
session_start() to every file that uses sessions.