| 
<?php
// cookieClass
 // Copyright (C) 2005 JRSofty Programming.
 // http://jrsofty1.stinkbugonline.com
 // Licensed under GNU/GPL
 
 class cookieClass{
 
 var $cName = '';
 var $cTime = '';
 var $cSerialize = false;
 var $cPath = '';
 
 function cookieClass($cookieName, $cookieTimeout, $cookieSerialize = false, $cookiePath = "/"){
 $this->cName = $cookieName;
 $this->cTime = $cookieTimeout;
 $this->cSerialize = $cookieSerialize;
 $this->cPath = $cookiePath;
 // This should fix the issue if you have cookies set and THEN turn on the serialization.
 $iname = $this->cName . "_S";
 if($this->cSerialize && !isset($_COOKIE[$iname])){
 $cookArr = array();
 foreach($_COOKIE as $name=>$val){
 if(strpos($name,$this->cName) !== false ){ // make sure it is a cookie set by this application
 $subname = substr($name,strlen($this->cName) + 1);
 $cookArr[$subname] = $val;
 $this->KillCookie($name);
 }
 }
 $this->WriteCookie($cookArr);
 }
 // This is the opposite from above. changes a serialized cookie to multiple cookies without loss of data
 if(!$this->cSerialize && isset($_COOKIE[$iname])){
 $cookArr = unserialize($_COOKIE[$iname]);
 $this->KillCookie($iname);
 $this->WriteCookie($cookArr);
 }
 
 
 }
 
 function DestroyAllCookies(){
 foreach($_COOKIE as $name=>$val){
 if(strpos($name,$this->cName) !== false){
 $_COOKIE[$name] = NULL;
 $this->KillCookie($name);
 }
 }
 }
 
 function ReadCookie($item){
 if($this->cSerialize){
 $name = $this->cName . "_S";
 if(isset($_COOKIE[$name])){
 // handle the cookie as a serialzied variable
 $sCookie = unserialize($_COOKIE[$name]);
 if(isset($sCookie[$item])){
 return $sCookie[$item];
 }else{
 return NULL;
 }
 }else{
 return NULL;
 }
 }else{
 $name = $this->cName . "_" . $item;
 if(isset($_COOKIE[$name])){
 // handle the item as separate cookies
 return $_COOKIE[$name];
 }else{
 return NULL;
 }
 }
 }
 
 function KillCookie($cName){
 $tStamp = time() - 432000;
 setcookie($cName,"",$tStamp,$this->cPath);
 }
 
 function WriteCookie($itemArr){
 if($this->cSerialize){
 $sItems = serialize($itemArr);
 $name = $this->cName . "_S";
 $_COOKIE[$name] = $sItems;
 $tStamp = time() + $this->cTime;
 setcookie($name,$sItems,$tStamp,$this->cPath);
 }else{
 $tStamp = time() + $this->cTime;
 foreach($itemArr as $nam=>$val){
 $name = $this->cName . "_" . $nam;
 $_COOKIE[$name] = $val;
 setcookie($name,$val,$tStamp,$this->cPath);
 }e
 }
 }
 
 
 }
 |