CodeIgniter - Tempdata
Tempdata
In
some
situations,
where
you
want
to
remove
data
stored
in
session
after
some
specific time-period, this can be done using tempdata functionality in CodeIgniter.
Add
Tempdata
To add data as tempdata, we have to use mark_as_tempdata() function. This function takes two argument items or items to be stored as tempdata and the expiration time for those items are as shown below.
// 'item'
will
be
erased
after
300
seconds(5
minutes)
$this->session->mark_as_temp('item',300);
You
can
also
pass
an
array
to
store
multiple
data.
All
the
items
stored
below
will
be expired after 300 seconds.
$this->session->mark_as_temp(array('item','item2'),300);
You can also set different expiration time for each item as shown
below.
// 'item'
will
be
erased
after
300
seconds,
while
'item2'
// will
do
so
after
only
240
seconds
$this->session->mark_as_temp(array( 'item'=>300,
'item2'=>240
));
Retrieve Tempdata
We can
retrieve
the
tempdata
using
tempdata() function.
This
function
assures
that you
are
getting
only
tempdata
and
not
any
other
data.
Look
at
the
example
given
below to
see
how
to
retrieve
tempdata.
tempdata() function
will
take
one
argument
of
the item to be fetched.
$this->session->tempdata('item');
If you omit the argument, then you can retrieve all the existing tempdata.
Remove Tempdata
Tempdata
is
removed
automatically
after
its
expiration
time
but
if
you
want
to
remove tempdata
before
that,
then
you
can
do
as
shown
below
using
the
unset_tempdata() function, which takes one argument of the item to be removed.
$this->session->unset_tempdata('item');
Example
Create a class called Tempdata_controller.php and save it in application/controller/Tempdata_controller.php.
<?php
class Tempdata_controller
extends
CI_Controller
{
public function
index()
{
$this->load->library('session');
$this->load->view('tempdata_view');
}
public function
add()
{
$this->load->library('session');
$this->load->helper('url');
//tempdata
will
be
removed
after
5
seconds
$this->session->set_tempdata('item','item-value',5);
redirect('tempdata');
}
}
?>
Create a file called tempdata_view.php and save it in
application/views/tempdata_view.php
<!DOCTYPE
html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>CodeIgniter
Tempdata
Example</title>
</head>
<body>
Temp Data
Example
<h2><?php
echo
$this->session->tempdata('item');
?></h2>
<a href='tempdata/add'>Click
Here</a>
to
add
temp
data.
</body>
</html>
Make the
changes
in
the
routes.php file in
application/config/routes.php
and
add
the following line at the end of the file.
$route['tempdata']
=
"Tempdata_controller";
$route['tempdata/add']
=
"Tempdata_controller/add";
Execute
the
above
example
by
visiting
the
following
link.
Replace
the
yoursite.com
with the URL of your site.
http://yoursite.com/index.php/tempdata
After visiting the above URL, you will see a screen as shown below.
Click on “Click
Here”
link and you will see a screen as shown below.
Here,
in
this
screen
you
will
see
a
value
of
temp
data
variable.
Refresh
the
same
page after five seconds again as we have set the temp data for
five seconds and you will see a screen like above and temp data variable will be removed automatically after five seconds.
If
you
refresh
the
same
page
before
5
seconds,
then
the
temp
data
will
not
be removed, as the time period is not over.
Destroying a Session
In
PHP,
we
are
using
the
session_destroy() function
to
destroy
the
session
and
in CodeIgniter we can destroy the function as shown below.
$this->session->sess_destroy();
After
calling
this function, all
the
session
data including
the
flashdata and
tempdata
will be deleted permanently and cannot be retrieved back.
Comments
Post a Comment