Revision: 61008
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at November 22, 2012 11:14 by halk
Initial Code
/**
* Session
* -Static Session Wrapper Class
* -Convienience Methods (do Error Checking),
* -Measures To Prevent Session Hijacking,
* -Handles Single Variables or Associative
* Arrays through autodetecting the type
* passed in.
* @package sandboxphp
* @author hskitts
* @copyright 2012
* @version $Id$
* @access public
*/
class Session{
/**
* Session::start()
* Start A Secure Session
* Helps Prevent Session Hijacking
* @return void
*/
public static function start(){
if (session_id() == false){
session_start();
session_regenerate_id();//vs session hijacking
}
}
/**
* Session::set()
* Sets Session Variables
* Handles Arrays and Single Variables by detecting $key type
* in the case of $key being an array:
* $value will be an array of key value
* pairs in the $key array
* @param mixed $key
* @param mixed $value if key is an array $value must be array
* @return void
*/
public static function set($key, $value) {
if (is_array($value)){ //if value is an array update and existing variable
$ARRAY = $_SESSION[$key]; //save the current session array
foreach($value as $k => $v){ //for each key=value pair in the value passed in
$ARRAY[$k] = $v; //push
}
$_SESSION[$key] = $ARRAY;
return;
}
$_SESSION[$key] = $value;
}
/**
* Session::get()
* Get The Value Of A Session Variable
* (Handles Arrays As well)
* @param mixed $key session variable to get
* @param bool $key2 only to access an array
* @return
*/
public static function get($key,$key2=false){
if(isset($_SESSION[$key])){
if($key2){
return $_SESSION[$key][$key2];
}else{
return $_SESSION[$key];
}
}else{
return false;
}
}
/**
* Session::del()
* Delete A Session Variable
* (This Does Not Destroy The
* Whole Session)
* @param mixed $key
* @return void
*/
public static function del($key,$key2=false){
if(isset($_SESSION[$key])){
if($key2){
unset($_SESSION[$key][$key2]);
}else{
unset($_SESSION[$key]);
}
}
}
/**
* Session::destroy()
* Destroy The Current Session With All Variables
* @return void
*/
public static function destroy(){
if (session_id() == true){
session_destroy();
}
}
/**
* Session::dump()
* Display The Current $_SESSION Array
* (for debugging purposes)
* @return void
*/
public static function dump(){
if (session_id() == true){
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
}
}
}
//EXAMPLES OF USE
Session::start(); //Start a Session
$session_array = array(
"username"=>"brucewayne",
"logged_in"=>"10/21/12",
"role"=>"Super-User Admin"
);
Session::set("user",$session_array);
Session::set("singleton","one");
Session::set("user",array("role"=>"head honcho","specialty"=>"vigilante crime fighting"));
$singleton = Session::get("singleton");
$username = Session::get("user","username");
Session::del("user","role");
Session::del("singleton");
Session::destroy();
Initial URL
Initial Description
This is a static session wrapper that handles single variables and arrays. It allows setting, resetting, and deleting session variables (without destroying the session). It regenerates the session id every time a session is started to prevent session hijacking. See Examples of use below the code or (https://gist.github.com/4128373)
Initial Title
Secure Static Session Class (Handles Arrays)
Initial Tags
class, php
Initial Language
PHP