Newsgroup: it.comp.www.php
Titolo: Cookies o sessioni?

Ciao! Avrei bisogno di un consiglio per una soluzione in PHP.
Molto sinteticamente, voglio fare uso di due script: uno per la
consultazione di documenti ed un altro per il login; i due script non sono
collegati, e vorrei farlo. In pratica vorrei che tutti gli utenti vedessero
la lista dei documenti, perň solo quelli che hanno effettuato il login
riuscissero a leggerne il contenuto. Quindi mi serve un "controllo" quando
viene clickato un documento per vederne il contenuto. E fin qui ci siamo.
Questo "controllo" dev'essere settato dallo script di login. In una
situazione del genere, dovrei utilizzare i cookies o le sessioni? Avevo
pensato ai cookies perchč, quando un utente effettua un login con successo,
lo script gli puň settare un cookie del quale viene poi verificata
l'esistenza durante l'apertura del documento. Forse č il metodo piů facile,
perň non credo che tutti abbiano i cookie attivi... e questo potrebbe
causare dei problemi. Oppure aprire una sessione quando viene effettuato un
login corretto? Mi date qualche dritta? :-)
Grazie!

 sessioni? 
Personalmente le sessioni.
In entrambi gli script avvi le sessioni con session_start ();
Se il login va a buon fine
$_SESSION["Logged"] = true;
else
$_SESSION["Logged"] = false;
Nel file per il download dei documenti
if ($_SESSION["Logged"]) then
{
  //download
}
else
{
	print ("You must log in!");
}
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/1
Inviare email con allegati? 
http://url.repository.biz/go/1Z
Cerchi un programmatore PHP/MySQL? 
http://url.repository.biz/go/1Y

 }
Perfetto grazie, sembra vada piů che bene!
Solo un chiarimento: le sessioni fanno riferimento solo al singolo computer
che apre l'URL, vero? Nel senso, se sono collegati contemporaneamente piů
utenti, crea da solo sessioni separate? O basta che se ne apra una... per
far sě che risulti attiva anche sugli altri? (chiaramente facendo
riferimento allo script di sopra).

 sugli altri? (chiaramente facendo riferimento allo script di sopra).
Non sembra tu abbia ben chiaro come funzioni il protocollo HTTP e le
sessioni in generale.
Se in uno script sul server inserisci session_start questo verra'
eseguito per ogni utente che richiede lo script.


> In entrambi gli script avvi le sessioni con session_start ();
Scusa, un piccolo dubbio su questa funzione. Secondo la documentazione
online:
"session_start () registrerà un handler interno di output per riscrivere
l'URL quando trans-sid è attivato."
non capisco il significato. Forse perché non so cos'é un trans-sid.
Mi sembra di intuire che questa funzione crei un id che registra su cookie
"volatile" nel pc client e qualcosa di corrispondente sul server. Quindi
tutte le variabili dove si trovano? Client o server?
Che intendono poi per "riscrivere l'URL"? Scusa se mi rivolgo a te con tutte
queste domande, ma ne approfitto perché sono convinto che puoi darmi una
mano a capire come é già successo in passato! :-) (non voglio passare per il
ruffiano di turno... :-) )
Grazie ciao
    Mark

 Che intendono poi per "riscrivere l'URL"? 
1^ Cosa sono le sessioni?
Le sessioni sono un metodo lato server per archiviare delle
informazioni relative ad ogni singolo utente.
2^ Perche' esistono?
Le sessioni esistono perche' il protocollo HTTP e' un cosidetto
protocollo stateless, cioe' non dispone di un metodo per mantenere una
"memoria" relativa allo stato della comunicazione tra client e server.
3^ Come funzionano?
Lato server viene generato un identificativo univoco e difficilmente
prevedibile che viene assegnato ad ogni utente che si collega al sito.
Per poter mantenere lo stato e' necessario che il server comunichi al
client questo identificativo e viceversa. Questo avviene principalmente
in due modi:
A. Via cookie
B. Via URL
4^ Come sono implementate le sessioni in php?
Il PHP mette a disposizione molte funzioni per la gestione delle
sessioni (
http://www.php.net/session
). Oltre all'utilizzo dei cookie
per il passaggio dell'ID il PHP mette a disposizione una funzionalita'
chiamata trans-sid o identificativo di sessione trasparente. Questa
funzionalita' con il quale effettua automaticamente la riscrittura
degli url senza che l'utente debba fare nulla. QWuesta riscrittura puo'
essere emulata manualmente in questo modo:
<A HREF="nextpage.php?<?php echo strip_tags (SID)?>">click here</A> 
Come da manuale e' necessario fare attenzione poiche' utenti non
esperti potrebbero creare problemi di sicurezza quando e' attivato il
trans-sid o quando viene fatta la riscrittura degli url manualemente ()
5^ I dati dove stanno?
I dati salvati nella sessione sono salvato lato server, tra client e
server viene passato solo il trans sid.
