![]()
Ho creato un set per le sessioni utilizzando il Mysql...
Il set è questo :
function s_open() {
# echo "- Apertura sessione
";
}
function s_close() {
return TRUE;
}
function s_read($ses_id) {
$data = "";
$Rec = SelSql($ExeSes, "Sessioni", "sess_data", "Where session_id= '$ses_id'");
$data = session_decode($Rec["sess_data"]);
return $data;
}
function s_write($ses_id, $data) {
$data
";
$ip = getenv("REMOTE_ADDR");
ECHO $data."
";
$data = session_encode();
ECHO $data."
";
$query = "Replace into Sessioni (session_id, sess_data, sess_ip)
values ('$ses_id', '$data', '$ip')";
mysql_query($query)
or die ("Ko_s".mysql_error());
return TRUE;
}
function s_destroy($ses_id) {
# echo "- Distruzione dei dati di sessione
";
Cancella ("Sessioni", "Where session_id = '$ses_id'");
return TRUE;
}
function s_gc($life) {
# echo "- Pulizia delle sessioni scadute (max:$life secondi)
";
Cancella ("Sessioni", "Where last_agg < ( subdate( now(), INTERVAL $life SECOND) )");
}
# dichiaro quali funzioni gestiranno gli eventi delle sessioni
session_set_save_handler ('s_open','s_close','s_read','s_write','s_destroy' ,'s_gc');
function VerSes($_SESSION)
{
if ($_SESSION)
{
$ArrSes["User"] = $_SESSION["User"];
$ArrSes["Passw"] = $_SESSION["Passw"];
}
return $ArrSes;
}
function StartPage ($ArrSes)
{
// per non avere problemi con i cookies che invierà la sessione
// evito di mostrare immediatamente l'output dello script
ob_start();
// avvio la sessione
session_start();
if (is_array($ArrSes))
{
echo "Inizializzo Variabili sessione:
";
while (list($chiave, $valore) = each($ArrSes))
{
$_SESSION[$chiave] = $valore;
}
}
}
function EndPage ()
{
// adesso posso mostrare l'output dello script
ob_end_flush();
}
function Visual($Msg)
{
global $N_Col_Body, $N_color, $N_vlink, $N_alink, $N_link, $OnLoad, $Other, $Title;
Head($Title);
Body($N_Col_Body, $N_color, $N_vlink, $N_alink, $N_link, $OnLoad, $Other);
echo $Msg;
}
------------------------------------------
Ho una sola pagina che gira ed il codice è il seguente :
require ("config/connect.inc.php");
require ("funzioni/centrali.php");
require ("fun_carrello.php");
switch ($Cmd)
{
case "Accedi" :
$Msg .= LogIn($_POST, &$ArrSes, &$OnLoad);
break;
case "LogOut" :
$Msg .= LogOut($_SESSION, &$ArrSes, &$OnLoad);
break;
case "Aggiungi" :
AddArt($_POST, $_SESSION, &$ArrSes);
break;
case "Elimina" :
DelArt($_POST, $_SESSION, &$ArrSes);
break;
default :
$ArrSes = VerSes($_SESSION);
break;
}
StartPage($ArrSes);
if ($Cmd == "LogOut"){
session_destroy();
}
if (!isset($_SESSION["User"]))
{
$Msg .= FormLogIn();
}
else
{
# start_carrello.php, ricordarsi possibilità di logut -> login.php?logout=1
# -------------------------------------------------------------------------
$CodCli = $_SESSION["User"];
if(!$Scelta){ $Scelta = 0; }
switch ($Scelta)
{
case 0:
$Msg .= MostraHome();
break;
case 1:
$Msg .= MostraCarrello($_SESSION);
break;
}
}
Visual($Msg);
EndPage();
---------------------------------------------------------
Quando vado in scelta 1 perde i valori di $_SESSION, perchè ?