ciao a tutti sono sempre io che vi stresso con le mie domande e le mie richieste d'aiuto, vi spiego, io dovrei inserire una classe per salvare le sessioni dentro il database vi mostro la classe :
Codice PHP:
class Session
{
private static $_sess_db;
public static function open() {
if (self::$_sess_db = mysql_connect('localhost','root','maurizio')) {
return mysql_select_db('supp', self::$_sess_db);
}
return false;
}
public static function close() {
return mysql_close(self::$_sess_db);
}
public static function read($id) {
$id = mysql_real_escape_string($id);
$sql = sprintf("SELECT `session_data` FROM `sessions` " .
"WHERE `session` = '$id'");
if ($result = mysql_query($sql, self::$_sess_db)) {
if (mysql_num_rows($result)) {
$record = mysql_fetch_assoc($result);
return $record['session_data'];
}
}
return '';
}
public static function write($id, $data) {
$sql = sprintf("REPLACE INTO `sessions` VALUES('$id','".$_SERVER['REMOTE_ADDR']."', '".time()."', '".$_SERVER['HTTP_USER_AGENT']."','$data')");
return mysql_query($sql, self::$_sess_db)or die(mysql_error());
}
public static function destroy($id) {
$sql = sprintf("DELETE FROM `sessions` WHERE `session` = '$id'" );
return mysql_query($sql, self::$_sess_db)or die(mysql_error());
}
/**
* Garbage Collector
* @param int life time (sec.)
* @return bool
* @see session.gc_divisor 100
* @see session.gc_maxlifetime 1440
* @see session.gc_probability 1
* @usage execution rate 1/100
* (session.gc_probability/session.gc_divisor)
*/
public static function gc($max) {
$sql = sprintf("DELETE FROM `sessions` WHERE `lastactivity` < '".time()."'" . - $max);
return mysql_query($sql, self::$_sess_db)or die(mysql_error());
}
}
ini_set('session.gc_probability', 50);
ini_set('session.save_handler', 'user');
session_set_save_handler(array('Session', 'open'),
array('Session', 'close'),
array('Session', 'read'),
array('Session', 'write'),
array('Session', 'destroy'),
array('Session', 'gc')
);
if (session_id() == "") session_start();
//session_regenerate_id(false); //also works fine
if (isset($_SESSION['counter'])) {
$_SESSION['counter']++;
} else {
$_SESSION['counter'] = 1;
}
echo '
SessionID: '. session_id() .'
Counter: '. $_SESSION['counter'];
adesso siccome che uso una cnnessione al database con una classe, che per connettermi inserisco
Codice PHP:
$dbcore = new DB; $dbcore->connect();
io stò provando a sostituire la funzione della classe sarebbe a dire la funzione open
Codice PHP:
public static function open() {
if ($dbcore->connect()) {
return return true;
}
return false;
}
pero mi da un errore
codice:
Fatal error: Call to a member function connect() on a non-object in C:\Programmi\Apache Software Foundation\Apache2.2\htdocs\supp\includes\session.php on line 8