I have updated the flash library to work with sessions or cookies, and also works with PHP4 or PHP5. Just drop these files in their place. Use the constant FLASH_CONTAINER to set the container. default is session.
usage
// set the container to session or cookie, must happen before class is (auto)loaded
define('FLASH_CONTAINER','cookie');
// load library (or use autoload)
$this->load->library('flash');
// set a flash message
$this->flash->set('msg','profile updated');
// make current messages persist one more request
$this->flash->keep();
// get flash var
$this->flash->get('msg');
// display a flash var in a view file
<?=flash('msg')?>
applications/init/init_flash.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
* init_flash
*
* This initializes the flash library
*
* @package flash
* @author Monte Ohrt
*/
if ( ! class_exists('Flash'))
{
require_once(APPPATH.'libraries/flash'.EXT);
}
$obj =& get_instance();
$obj->flash = new Flash();
$obj->ci_is_loaded[] = 'flash';
?>
application/libraries/flash.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
* Flash
*
* The Flash library
*
* @package flash
* @author Monte Ohrt
*/
class Flash {
var $keep = false;
var $last_data = array(); // data from last request
var $new_data = array(); // new data this request
var $container = 'session'; // session or cookie. set with FLASH_CONTAINER constant
/**
* Flash
*
* class constructor
*
* @access public
*/
function Flash()
{
if(defined('FLASH_CONTAINER'))
$this->set_container(FLASH_CONTAINER);
// load last request, then remove from session/cookie
if($this->container == 'session')
{
$this->last_data = isset($_SESSION['flash']) ? $_SESSION['flash'] : array();
unset($_SESSION['flash']);
}
else
{
$this->last_data = isset($_COOKIE['flash']) ? unserialize($_COOKIE['flash']) : array();
setcookie('flash',null,time()-3600,'/');
}
}
/**
* set
*
* set a flash var
*
* @access public
* @param string $var varname
* @param mixed $val value
* @return boolean
*/
function set($var,$val)
{
$this->new_data['flash'][$var] = $val;
if($this->container == 'session')
{
if($this->keep)
$_SESSION['flash'] = array_merge($this->last_data,$this->new_data);
else
$_SESSION['flash'] = $this->new_data;
}
else
{
if($this->keep)
setcookie('flash',serialize(array_merge($this->last_data,$this->new_data)),null,'/');
else
setcookie('flash',serialize($this->new_data),null,'/');
}
}
/**
* get
*
* get a flash var from last request
*
* @access public
* @param string $var varname
* @return boolean
*/
function get($var=null)
{
return isset($this->last_data['flash'][$var]) ? $this->last_data['flash'][$var] : null;
}
/**
* keep
*
* keep flash vars one more request
*
* @access public
* @return boolean
*/
function keep()
{
$this->keep = true;
if($this->container == 'session')
$_SESSION['flash'] = array_merge($this->last_data, $this->new_data);
else
setcookie('flash',serialize(array_merge($this->last_data, $this->new_data)),null,'/');
}
}
?>
flash helper
/**
* flash
*
* show a flash variable
*
* @access public
* @param string $var the flash varname
* @return mixed the flash var value, or null if none available
*/
function flash($var)
{
$obj =& get_instance();
return $obj->flash->get($var);
}