Jump to content

spiderdevil

New Members
  • Posts

    1
  • Joined

  • Last visited

    Never

Profile Information

  • Gender
    Not Telling

spiderdevil's Achievements

Newbie

Newbie (1/5)

0

Reputation

  1. Hi, I am an average programmer, i am having problems with a script which i took from [url=http://www.zend.com/zend/spotlight/code-gallery-wade8.php?article=code-gallery-wade8&kind=sl&id=2787&open=1&anc=0&view=1]Custom Session Handling[/url] I made some modification for my needs, but i am facing some problems, The script is executing twice and after 6 seconds its not removing the old sessions (which it should). What is wrong ? i am not getting, I am stuck and frustrated. any help would be greatly appreciated.Thanks in advance. DS [code] filname=testsession.php <?php /* Create new object of class */ ini_set("session.use_only_cookies",false); require_once("session_api.php"); $ses_class = new session(0.1); if (!isset ($_SESSION['counter'])) {     $_SESSION['counter'] = 0; } $_SESSION['counter'] = $_SESSION['counter']+1; echo $_SESSION['counter']; echo "<br>"; echo $ses_class->ses_maxTime; echo "<br>"; echo ini_get ("session.gc_maxlifetime"); echo "<br>"; echo ini_get("session.use_only_cookies"); //*********TESTING********     $fwhandle = @fopen("test.txt","a"); if($fwhandle) { if (fwrite($fwhandle, "script called\n") === FALSE) echo "Cannot write to file"; fclose($fwhandle); } else echo "Cannot open to write file";     //*********CLOSE TESTING******** ?> filename=session_api.php <?php //http://www.zend.com/zend/spotlight/code-gallery-wade8.php?article=code-gallery-wade8&kind=sl&id=2787&open=1&anc=0&view=1 //http://us2.php.net/manual/en/function.session-set-save-handler.php#60316 //session_set_save_handler( // array("Session", "_open"), // array("Session", "_close"), // array("Session", "_read"), // array("Session", "_write"), // array("Session", "_destroy"), // array("Session", "_gc") // ) or die("Failed to register session handler"); // //session_start(); class Session {     var $db_host = "www.somehost.com";     var $db_user = "username";     var $db_pass = "password";     var $db_dbase = "mysessions";     /* MySQL Table name for session */     var $ses_table = "sessions"; var $isdb_con = true;     var $app_name = "dummy_name";     var $ses_maxTime=6;     var $ses_onlyCookie; /* Class Constructor with max Time out of session in minutes */ function Session($minutes=0) { $in_secs = $minutes * 60; if($in_secs<=0) $this->ses_maxTime = ini_get("session.gc_maxlifetime"); else { ini_set("session.gc_maxlifetime",$in_secs); $this->ses_maxTime = $minutes * 60; } $this->ses_onlyCookie = ini_get("session.use_only_cookies"); //register_shutdown_function('session_write_close'); ini_set("session.gc_probability", 100); session_set_save_handler(array(&$this, '_open'),                             array(&$this, '_close'),                             array(&$this, '_read'),                             array(&$this, '_write'),                             array(&$this, '_destroy'),                             array(&$this, '_gc')); //Start the session   session_start(); }     /* Create a connection to a database */     function db_connect()     {         $mysql_connect = @mysql_pconnect ($this->db_host, $this->db_user, $this->db_pass);         $mysql_db = @mysql_select_db ($this->db_dbase);         if (!$mysql_connect || !$mysql_db)         {             return FALSE;         }         else         {             return TRUE;         }     }     /* Open session, if you have your own db connection       code, put it in here! */     function _open($path, $name)     {     //*********TESTING********     $fwhandle = @fopen("test.txt","a"); if($fwhandle) { if (fwrite($fwhandle, "_open method called\n") === FALSE) echo "Cannot write to file"; fclose($fwhandle); } else echo "Cannot open to write file";     //*********CLOSE TESTING********         if ($this->isdb_con == "Y")         {             $this->db_connect();         }         return TRUE;     }     /* Close session */     function _close()     {     //*********TESTING********     $fwhandle1 = @fopen("test.txt","a"); if($fwhandle1) { if (fwrite($fwhandle1, "_close method called\n") === FALSE) echo "Cannot write to file"; fclose($fwhandle1); } else echo "Cannot open to write file";     //*********CLOSE TESTING********         /* This is used for a manual call of the           session gc function */         $this->_gc(0);         return TRUE;     }     /* Read session data from database */     function _read($ses_id)     {     //*********TESTING********     $fwhandle2 = @fopen("test.txt","a"); if($fwhandle2) { if (fwrite($fwhandle2, "_read method called\n") === FALSE) echo "Cannot write to file"; fclose($fwhandle2); } else echo "Cannot open to write file";     //*********CLOSE TESTING********         $session_sql = "SELECT * FROM " . $this->ses_table                     . " WHERE ses_id = '$ses_id'"; // echo "<br/>$session_sql<br/>";         $session_res = @mysql_query($session_sql);         if (!$session_res)         {             return '';         }         $session_num = @mysql_num_rows ($session_res);         if ($session_num > 0)         {             $session_row = mysql_fetch_assoc ($session_res);             if(isset($_SERVER['REMOTE_ADDR'])) $ipnum = "$_SERVER[REMOTE_ADDR]"; else $ipnum = ""; if($session_row["ip_number"] !=$ipnum) { //don't show anything return ''; }             $ses_data = $session_row["ses_value"];             return $ses_data;         }         else         {             return '';         }     }     /* Write new data to database */     function _write($ses_id, $data)     {     //*********TESTING********     $fwhandle3 = @fopen("test.txt","a"); if($fwhandle3) { if (fwrite($fwhandle3, "_write method called\n") === FALSE) echo "Cannot write to file"; fclose($fwhandle3); } else echo "Cannot open to write file";     //*********CLOSE TESTING********         $session_sql = "UPDATE " . $this->ses_table                     . " SET ses_time=" . time()                     . ", ses_value='$data' WHERE ses_id='$ses_id'"; echo "<br/>$session_sql<br/>";         $session_res = @mysql_query ($session_sql);         if (!$session_res)         {             return FALSE;         }         if (mysql_affected_rows ())         {             return TRUE;         } if(isset($_SERVER['REMOTE_ADDR'])) $ipnum = "'$_SERVER[REMOTE_ADDR]'"; else $ipnum = Null;         $session_sql = "INSERT INTO " . $this->ses_table                     . " (ses_id, ses_time, ses_start, ses_value,app_name,ip_number)"                     . " VALUES ('$ses_id', " . time()                     . ", " . time() . ", '$data','$this->app_name',$ipnum)"; // echo "<br/>$session_sql<br/>";         $session_res = @mysql_query ($session_sql);         if (!$session_res)         {             return FALSE;         }         else         {             return TRUE;         }     }     /* Destroy session record in database */     function _destroy($ses_id)     {     //*********TESTING********     $fwhandle4 = @fopen("test.txt","a"); if($fwhandle4) { if (fwrite($fwhandle4, "‘_destroy’ method called\n") === FALSE) echo "Cannot write to file"; fclose($fwhandle4); } else echo "Cannot open to write file";     //*********CLOSE TESTING********         $session_sql = "DELETE FROM " . $this->ses_table                     . " WHERE ses_id = '$ses_id'";         $session_res = @mysql_query ($session_sql);         if (!$session_res)         {             return FALSE;         }         else         {             return TRUE;         }     }     /* Garbage collection, deletes old sessions */     function _gc($life) //ignore $life     {     //*********TESTING********     $fwhandle5 = @fopen("test.txt","a"); if($fwhandle5) { if (fwrite($fwhandle5, "‘_gc’ method called\n") === FALSE) echo "Cannot write to file"; fclose($fwhandle5); } else echo "Cannot open to write file";     //*********CLOSE TESTING********     $strtim ="-". $this->ses_maxTime ." seconds";         $ses_life = strtotime($strtim);         $session_sql = "DELETE FROM " . $this->ses_table . " WHERE ses_time < $ses_life and app_name='$this->app_name'";         echo "<br/>$session_sql<br/>";         $session_res = @mysql_query ($session_sql);         if (!$session_res)             return FALSE; //also see all sessions for max of 24 hours (default) $strtim1 ="-". get_cfg_var("session.gc_maxlifetime") ." seconds"; $ses_life1 = strtotime($strtim1); $session_sql1 = "DELETE FROM " . $this->ses_table . " WHERE ses_time < $ses_life1";         $session_res1 = @mysql_query ($session_sql1);         if (!$session_res1)             return FALSE;         else             return TRUE;     } } ?> [/code]
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.