Ho creato una classe per le sessioni, in modo da gestirmele da solo, ma non sembra funzionare del tutto, perchè a video mi stampa quello che dico, il file di sessione lo crea, però non da il nome come dovrebbe. Vi posto il codice (preso un po' da freephp)
session_class.php
Codice PHP:
<?php
class session {
var $file_name;
var $sess_dir;
var $sess_id;
var $sess_file;
var $sess_time;
function session($session_dir, $session_time=0) {
$this->sess_id = (isset($_COOKIE['session_id'])) ? (md5(microtime() . $_SERVER['REMOTE_ADDR'])) : ($_COOKIE['session_id']);
$this->file_name = $this->sess_id . ".session";
$this->sess_dir = $session_dir;
$this->sess_time = ($session_time > 0) ? (time() + $session_time) : 0;
$this->sess_file = $this->sess_dir . "/" . $this->file_name;
}
function start() {
if(!isset($_COOKIE['session_id'])) {
setcookie("session_id", $this->sess_id, $this->sess_time);
}
}
function register($var, $value) {
$SESS = array();
if(file_exists($this->sess_file)) {
$SESS = unserialize(implode("", file($this->sess_file)));
}
$SESS[$var] = $value;
$fp = fopen($this->sess_file, "wb");
fwrite($fp, serialize($SESS));
fclose($fp);
}
function read() {
return unserialize(implode("", file($this->sess_file)));
}
function is_set($var) {
$SESS = unserialize(implode("", file($this->sess_file)));
$result = FALSE;
if(isset($SESS[$var])) { $result = TRUE; }
return $result;
}
function un_set() {
$fp = @fopen($this->sess_file, "w");
@fwrite($fp, "");
fclose($fp);
}
function destroy() {
@unlink($this->sess_file);
}
}
?>
file.php
Codice PHP:
<?php
require("session_class.php");
$session = new session(".");
$session->start();
$session->register("user", "caio");
$session->register("pwd", md5("caio"));
$_SESS = $session->read();
echo $_SESS['user'] . "
" . $_SESS['pwd'];
?>
mi stampa a video
caio
c97e2b57a6c44cb28aa98211dad2811f
e nella sorgente
caio
c97e2b57a6c44cb28aa98211dad2811f
come gli dico, però il file creato lo chiama .session, non un codice md5.session!!!
[edit]: non mi crea neanche il cookie!!