Newsgroup: it.comp.www.php
Titolo: Domanda un po' teorica sui cookie

ciao a tutti,
mi sono accorto di avere delle lacune sul funzionamento base dei cookie 
e su come vengono realmente settati.
Prendiamo come primo esempio il seguente codice:
--- pag1.php ---
session_name("imparare_i_cookie");
session_start();
Dopo averla richiamata, mi viene scritto nella dir C:\tmp un cookie (ok, 
vuoto) che rimane sempre lo stesso ad ogni refresh della pagina.
Complichiamo le cose... Ho uno script (invia_variabili.php) che apre un 
socket, simula un form e mi spedisce via POST dei valori alla pagina 
precedente, il cui codice diventerà quindi:
--- pag1.php ---
session_name("imparare_i_cookie");
session_start();
echo $_POST['variabile1']." ".$_POST['variabile2']." 
".$_POST['variabile3'];
Se visualizzo tramite browser invia_variabili.php, ottengo una stampa a 
video delle mie variabili ma noto che, ad ogni refresh, viene generato 
in C:\tmp un nuovo cookie.
Domanda: non capisco perchè in questo caso all'aggiornamento della 
pagina deve corrispondere la creazione di un nuovo 'biscottino'. Mi 
sapreste chiarire come funziona il sistema?
Grazie a tutti per gli eventuali interventi. :-)

 generato in C:\tmp un nuovo cookie. 
Questi non sono cookie, sono file di sessione. 
Questo avviene perche' ad ongi richiesta viene avviata una nuova
sessione.
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

 
Per 'ogni richiesta' non si intende anche un refresh? E' diverso spedire 
via get/post e fare un refresh?
grazie

jason vorhees wrote:

ad ogni sessione viene assegnato un id univoco che avra' una validita' pari
a quella impostata sul sistema..
session_start quando viene chiamato cerca un id di sessione in request, GET,
POST o tra i cookie, se lo trova ripristina la sessione corrispondente
altrimenti ne genera uno..
i cookie sono informazioni che rimangono sul client e come ti e' stato detto
non sono sessioni e si gestiscono con le funzioni relative ad i cookie..
se vuoi che una sessione sia passata tramite cookie devi abilitare l'opzione
corrispondente (ed il session start deve essere chiamato inderogabilmente
prima di qualsiasi output) altrimenti se vuoi che sia passata tramite GET
aggiungi all'indirizzo interessato..
$session = session_name() . '=' . session_id();
echo "<a href='page.php?$session'>link</a>";
tramite POST puoi aggiungere $session alla action oppure creare un input
hidden (puoi anche fare in modo che l'id di sessione sia aggiunto in
automatico)..
la documentazione sul manuale e' ampia comunque..
http://php.net/session
http://php.net/cookie
-- 
www.iuz-lab.info

jason vorhees wrote:

ad ogni sessione viene assegnato un id univoco che avra' una validita' pari
a quella impostata sul sistema..
session_start quando viene chiamato cerca un id di sessione in request, GET,
POST o tra i cookie, se lo trova ripristina la sessione corrispondente
altrimenti ne genera uno..
i cookie sono informazioni che rimangono sul client e come ti e' stato detto
non sono sessioni e si gestiscono con le funzioni relative ad i cookie..
se vuoi che una sessione sia passata tramite cookie devi abilitare l'opzione
corrispondente (ed il session start deve essere chiamato inderogabilmente
prima di qualsiasi output) altrimenti se vuoi che sia passata tramite GET
aggiungi all'indirizzo interessato..
$session = session_name() . '=' . session_id();
echo "<a href='page.php?$session'>link</a>";
tramite POST puoi aggiungere $session alla action oppure creare un input
hidden (puoi anche fare in modo che l'id di sessione sia aggiunto in
automatico)..
la documentazione sul manuale e' ampia..
http://php.net/session
http://php.net/setcookie
comunque in questo articolo ho descritto alcune tecniche principali, le
varianti sono molte..
-- 
www.iuz-lab.info