View Full Version : [PHP] fare un LOG OUT da una sessione
Come posso fare per uscire da una sessione ???
ho una sessione aperda e ho registrato 2 variabili,
<? session_start(); ?>
<?
session_register("Username");
session_register("Password");
?>
vorrei fare un LOG-OUT e riaprire immediatamente un altra sessione per potere accedere sotto altro nome.
session_unregister fa il contrario di session_register per una variabile singola, poi c'è la funzione session_unset che fa l'unset di tutte le variabili di sessione.
infine session_destroy, il significato direi che si capisce dal nome :)
Scusa, ma session_register, session_unregister e session_unset sono utilizzabili solo se le variaibili di sessione vengono dichiarate auto-globali...dalla 4.2.0 questa cosa non avviene più con la configurazione di default di php.ini (bisogna riattivare un'opzione) per motivi di sicurezza...
Quindi da PHP 4.2.0 in poi conviene usare il vettore globale associativo $_SESSION...
Per esempio:
$_SESSION['username'] = 'pippo'; //dichiara la variabile di sessione username
unset($_SESSION['username']); //distrugge la variabile username
unset($_SESSION); //elimina tutte le varibili di sessione
ecco perche' non mi si sovrascrivono le variabili di sessione che uso io, ma quelle che mi hai detto tu non si mantengono persistenti per tutto il sito, se non passo il SID non restano aperte, mentre con quelle che uso io non serve il SID .......
Devi sempre usare session_start...
vedi, la cosa che non mi piace di php è che cambiano idea continuamente.
pensa anche a come vengono gestite le variabili passate tramite POST: prima erano variabili globali poi hanno messo HTTP_POST_VARS poi è arrivato $_POST
e che palle!
va bene che modificando il file di configurazione si riesce ad avere compatibilità con il passato ma è seccante avere uno script che va su uno spazio web e non va su un altro perché hanno due versioni di php differenti.
Come è successo per le variabili passate con i metodi POST e GET che non vengono più definite globali...così è successo anche per quelle definite nella sessione... Purtroppo è un pedaggio che si paga per risolvere certi problemi...
Comunque $HTTP_POST_VARS & company sono tutt'ora definite...senza abilitare alcuna opzione di configurazione...
Pensa che prima provando ad indovinare una variabile di sessione tramite i parametri passati con POST o GET si poteva saltare persino un'autentificazione... Purtroppo quello della compatibilità è un problema che si deve scontare per garantire la sicurezza...
Comunque con qualche piccolo accorgimento si riesce ad avere la compatibilità...
Ad esempio per avere le variabili di sessione definite globalmente basta fare una cosa del genere:
foreach ($_SESSION as $key => $value) {
$GLOBALS[$key] = &$_SESSION[$key];
}
Poi basta fare qualche sostiture session_register con un'altra parola e sviluppare una funzione con quel nome che semplicemente alloca in $_SESSION ed un alias in $GLOBALS e se a posto...
Ovviamente la stessa cosa per session_unregister...
Originally posted by "cionci"
Comunque $HTTP_POST_VARS & company sono tutt'ora definite...senza abilitare alcuna opzione di configurazione...
si lo so, però se non sbagli quegli array sono arrivati con il php 4 mentre prima di andava di variabili globali e ho notato che alcuni spazi (non molti) sono ancora a php 3!!
poi sono d'accordo sulla sicurezza ma mi viene da dire: "non potevano pensarci prima???"
Chiaro, ma finchè non c'erano le variabili di sessione non si avevano questi problemi... Si ricorreva pesantemente ai cookie e via...
cionci, un interprete php freeware, esiste?
ne avevo trovato uno ma non ha mai funzionato; questo per l'esattezza
PHP-4.0.2-WIN32
Di PHP ce ne dovrebbe essere solo uno ed è free...
www.php.net
allora è quello che ho scaricato io
quando è in azione, mi spieghi cosa vedi di diverso nel tuo PC?
io vedo una finestra DOS sempre aperta e che attende
e non so come avvenga l'intercettazione da parte del programma (server?) di una pagina contenete uno script PHP
però, il file che ho scaricato io, zippato, è di soli 900 K
Devi scaricare questo: http://www.php.net/~jani/RC/php-4.3.2RC1-Win32.zip
PHP può funzionare come CGI (in quel caso il server web lancia l'eseguibile)...o come SAPI...una DLL che si interfaccia con il server web (molto più veloce della versione CGI)...
EasyPHP 1.6 IL MEGLIO!!!!!!!!!!!!!!!!!!!!!!
PHP
MySQL
Apache
PhpMyAdmin
autoinstallante e sibito pronto sensa nessun settaggio........
Bleah...EasyPHP che spiega, via...
Siamo programmatori, perchè non dovremmo mettere mano ai file di configurazione...
Poi se si fa fare tutto ad EasyPHP dopo non si impara niente...
Inoltre ogni volta che c'è da aggiornare uno dei programmi con EasyPHP si incasina tutto ;)
Originally posted by "cionci"
Poi se si fa fare tutto ad EasyPHP dopo non si impara niente...
beh, al giorno d'oggi non è che ci si può permettere il lusso di imparare proprio tutto
oramai questo settore è divenuto alquanto complesso, molte cose quindi, si devono dare per scontate :(
pensa solo se per scrivere un programma di paint, ti dovresti studiare tutti i formati grafici (TIFF, JPEG etc...) algoritmi di compressione compresi: non finiresti più ;)
Lo so, ma se ti trovi un giorno ad installare il solo Apache su una piattaforma per cui EasyPHP non esiste che fai ?!?!!?
Oppure semplicemente se ti trovi ad installare il PHP su un server Apache preesistemente che fai ? Installi EasyPHP e perdi tutta la configurazione di Apache ?
Poi EasyPHP può andar bene per una macchina di debug...non certamente su un server di produzione...
dai ragazzi mettere su apache su una macchina windows è semplicissimo!
idem aggiungere php...
se proprio c'è da documentarsi è per modificare le opzioni di php o quelle di apache, ma non per mettere su un server web con supporto php perché ci vogliono davvero 5 minuti di orologio.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.