dzięki za radę, ale zrobiłem to już troszkę inaczej:
<?php
class session{
//db data
//pobieranie IP
public static function getIP
(){ if ($_SERVER['HTTP_X_FORWARDED_FOR']) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
public function __construct($ns="",$useDB=false,$host="",$user="",$pass="",$db="",$type="mysql"){
self::$namespace = $ns;
if(!self::$sessionId){
if($useDB){
$host?self::$host=$host:self::Exception("DB Host has not been set");
$user?self::$user=$user:self::Exception("DB User has not been set");
$pass?self::$pass=$pass:self::Exception("DB Pass has not been set");
$db?self::$db=$db:self::Exception("DB Database name has not been set");
session_set_save_handler(array(&$this,"_open"),array(&$this,"_close"),array(&$this,"_read"),array(&$this,"_write"),array(&$this,"_destroy"),array(&$this,"_gc"))or
self::Exception("There was an error with session_set_save_nandler on line 28"); }
}
else self::Exception("Session has been set already");
}//end on
private static function Exception
($nfo){ require_once(dirname(__FILE__)."/Session/Exception.class.php"); throw new Session_Exception($nfo);
}
public function sessionId(){
return self::$sessionId;
}
public function set($sPath,$value){
for($i=0;$i<$lvl;$i++){
$path.="['".$sPath[$i]."']";
}
$todo = "$_SESSION['".self::$namespace."']".$path."='".$value."';";
}
public function get($sPath){
$path = $_SESSION[self::$namespace];
for($i=0;$i<count($sPath);$i++){
$path=$path[$sPath[$i]];
}
return $path;
}
/*-------------------------------------*
| -- session handlers -- |
*-------------------------------------*/
public function _open(){
$query = "CREATE TABLE `session` (
`id` VARCHAR( 32 ) NOT NULL ,
`data` LONGTEXT NOT NULL ,
`ip` VARCHAR( 15 ) NOT NULL ,
`set` DATETIME NOT NULL ,
`updated` DATETIME NOT NULL ,
`at` TEXT NOT NULL
) ENGINE = MYISAM ;";
}// if
return '';
}//end _open
public function _close(){
}//end _close
public function _read($id){
$query = "SELECT data FROM session WHERE id = '$id'";
return $record['data'];
}
}
return '';
}//end _read
public function _write($id, $data){
$query = mysql_query("SELECT id FROM session WHERE id = '$id'"); $query = "UPDATE `session` SET
`data` = '".$data."',
`ip` = '".self::getIP()."',
`updated` = NOW( ) ,
`at` = '".$_SERVER['REQUEST_URI']."' WHERE id='".$id."'";
}else{
$query="INSERT INTO `session` VALUES (
'".$id."', '".$data."', '".self::getIP()."', NOW( ) , NOW( ) , '".$_SERVER['REQUEST_URI']."');";
}
}//end _write
public function _destroy($id){
$query = "DELETE FROM session WHERE id='".$id."'";
}//end _destroy
public function _gc($max){
$old = date("Y-m-d H:i:s") - $max;
$sql = "DELETE
FROM session
WHERE update < '$old'";
}//end _gc
}
$sid = new session("namespace",true,"host","user","pass","database");
//ustawianie
$sid->set("sas/asa/asa","as445434regdgdf gdfg dfg dfgdf gd");
//pobieranie
echo $sid->get("sas/asa/asa");
?>
będę wdzięczny jak ktoś mi poda propozycję w jaki sposób mogę się pozbyć eval i wtedy to będzie super