PDA

View Full Version : [PHP] fare un LOG OUT da una sessione


race2
14-04-2003, 11:30
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.

recoil
14-04-2003, 12:19
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 :)

cionci
14-04-2003, 14:10
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

race2
14-04-2003, 14:24
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 .......

cionci
14-04-2003, 14:32
Devi sempre usare session_start...

recoil
14-04-2003, 18:07
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.

cionci
14-04-2003, 18:42
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...

cionci
14-04-2003, 18:55
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...

recoil
14-04-2003, 19:22
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???"

cionci
14-04-2003, 19:25
Chiaro, ma finchè non c'erano le variabili di sessione non si avevano questi problemi... Si ricorreva pesantemente ai cookie e via...

misterx
14-04-2003, 19:39
cionci, un interprete php freeware, esiste?

ne avevo trovato uno ma non ha mai funzionato; questo per l'esattezza

PHP-4.0.2-WIN32

cionci
15-04-2003, 09:45
Di PHP ce ne dovrebbe essere solo uno ed è free...

www.php.net

misterx
15-04-2003, 19:20
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

cionci
15-04-2003, 19:33
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)...

race2
16-04-2003, 08:40
EasyPHP 1.6 IL MEGLIO!!!!!!!!!!!!!!!!!!!!!!

PHP
MySQL
Apache
PhpMyAdmin

autoinstallante e sibito pronto sensa nessun settaggio........

cionci
16-04-2003, 13:35
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 ;)

misterx
16-04-2003, 20:09
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ù ;)

cionci
17-04-2003, 06:47
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...

recoil
17-04-2003, 13:10
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.