Newsgroup: it.comp.www.php
Titolo: Ancora qualche Dubbio sulle sessioni

Salve Ragazzi,
mi sto avvicinando solo adesso al problema delle sessioni e volevo un 
piccolo chiarimento.
Ho visto che l'utilizzo delle sessioni prevede un Set di un percorso sul 
php.ini e la relativa procedura per iniziare una sessione:
"session_start(). Questa funzione non prevede parametri."
volevo però porre una domanda.
Ho visto su un sito che appena io visualizzavo l'index, lui avvia una 
sessione, e questa mi sembra identificata da una lunga stringa.
ora, non voglio fare pubblicità ma notate i link che vi sono nell' index 
  di " 
http://www.supremestylez.de/main.php?action=start&sl=it
 ".
Noterete che ogni link tiporta in basso sul browser ad ex. :
http://www.supremestylez.de/main.php?action=listitems&lid=46&PHPSESSID=463d40a0abcc6de8683a8c8cc6273767
Mi è in particolare saltato subito all' occhio ..
" PHPSESSID=463d40a0abcc6de8683a8c8cc6273767 ".
Questo sembra essere una sorta di stringa univoca per l'utilizzo delle 
sessioni.
Volevo sapere se è corretto l'utilizzo di questa stringa e in che modo 
posso assegnare eventualmente una tale stringa all' utente che richiede 
la mia index.
Dimenticavo, la sessione che vorrei creare io non prevedere iscrizioni 
ne registrazioni con user e psw, se la cosa può aiutarvi ad aiutarmi :)
Vi ringrazio anticipatamente
Saluti
Andrea

 la mia index.
http://it2.php.net/manual/it/ref.session.php
Li troverai tutte le risposte. Aggiungo solamente che nell'esempio da te 
citato la session id invece di essere tramandata nei cookie usava 
variabile get. Questione di gusti piu che altro

Alekc ha scritto:

Ho ancora vari problemi,
il maggiore dei quali è il setting corretto del PHP.INI
Ho infatti provato ad aprire una sessione in questo modo:
<?php
session_start();
$session = SID;
echo "$session";
?>
e ricevo un bel po di errori, tutti connessi alla funzone session.start 
del tipo:
Warning: session_start() [function.session-start]: 
open(/tmp\sess_8168f92408eb41ff1a15bb1ab91b7eef, O_RDWR) failed: No such 
file or directory (2) in C:\Programmi\etc.etc.php
Warning: session_start() [function.session-start]: Cannot send session 
cookie - headers already sent by (output started at C:\Programmi\etc.etc.
Warning: session_start() [function.session-start]: Cannot send session 
cache limiter - headers already sent (output started at 
C:\Programmi\etc.etc.
PHPSESSID=8168f92408eb41ff1a15bb1ab91b7eef
Warning: Unknown: open(/tmp\sess_8168f92408eb41ff1a15bb1ab91b7eef, 
O_RDWR) failed: No such file or directory (2) in Unknown on line 0
Warning: Unknown: Failed to write session data (files). Please verify 
that the current setting of session.save_path is correct (/tmp) in 
Unknown on line 0
---------------------------------------------------------------------
Ora mi chiedo, precisando che attualmente sto provando questo script sul 
mio pc con PHP / APACHE / MYSQL installati, è per il fatto che non ho 
settato la directory di archiviazione delle sessioni?
Ma le sessioni non vengono immagazzinate in un coockie sul pc client ( e 
quindi dovrebbe salvarmele normalmente dove vengono salvati gli altri 
coockie sul mio Pc??
Cè la possibilità di forzare il php a non inviare il cocckie con la 
sessione, dato che ho visto "[Session]
; Handler used to store/retrieve data.
session.save_handler = files" sul mio php.ini??
Qualcuno può gentilmente indicarmi la via per settare al meglio sto 
Php.ini e poter iniziare a far funzionare le sessioni?
Scusate, ma anche il piccolo manuale che possiedo non fornisce una 
spiegazione esauriente sulla configurazione.
Vi ringrazio Infinitamente
T.

 spiegazione esauriente sulla configurazione.
http://www.php.net/session
-- 
I am what I am, I do what I can
Do. Or do not. There is not try.


Ok Setec,
mi sono spippolato un po il manuale e il php.ini ed alla fine sembra 
funzionare tutto correttamente, volevo però chidervi almeno un'ultima cosa.
E' quindi corretto che nella folder che ho indicato nel php.ini
mi trovi dei file come questo:
sess_e4c93be98c5a1c6ffb6e79e300ebdd6a senza alcun tipo di estensione?
E' inoltre normale che se io eseguo questo piccolo script:
<?php
session_start();
?>
<?Php
$session = SID;
echo "<a href=\"
www.miosito.it
$session\">MIOSITO</a>";
?>
La prima volta mi da correttamente il link:
"www.southbay.itPHPSESSID=3dc360138871a97d6bb99659773af0b3"
e quando però torno indietro e provo a riposarci il mouse magicamente è 
scomparso PHPSESSID=3dc360138871a97d6bb99659773af0b3 lasciandomi solo
il collegamento "
www.miosito.it
" ???
Vi ringrazio ancora per il supporto.
Buon Lavoro a tutti
T.

 "www.southbay.itPHPSESSID=3dc360138871a97d6bb99659773af0b3"
ovviamente volevo dire 
www.miosito.itPHPSESSID=3dc360138871a97d6bb99659773af0b3
:P

 solo il collegamento "
www.miosito.it
" ???
IMHO significa che PHP ha riscontrato che il tuo browser supporta i
cookie ed ha "deciso" di utilizzare quelli al posto del passaggio
tramite url.
-- 
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


 
Che dire Setec,
Ancora una volta Grazie :D

 variabile get. Questione di gusti piu che altro
Gusti fino ad un certo punto, visto che nel caso delle sessioni è da 
considerare con particolare attenzione il problema "sicurezza".
Inserire l'id della sessione nell'indirizzo fa sì che l'id possa essere 
inviato al sito visitato successivamente (come pagina referer), tanto 
per cominciare. :-)
-- 
Ciao,
	Fabrizio
===  
http://www.negusweb.it
  ===

 ===  
http://www.negusweb.it
  ===
Warning: session_start() [function.session-start]: Cannot send session
cookie - headers already sent by (output started at C:\Programmi\etc.etc.
attenzione a non inviare nessun output al browser prima di session_start();
fosse pure uno spazio bianco all' inizio dello script

 
Mi spiegate però come mai sti files rimangono perennemente nella catrtella?
Non dovrebberò poi cancellarsi? se si quando e come faccioa farglielo fare?
o devo farlo ogni volta manualmente per non avere km di questi files?
Sto dicendo cacate?
Grazie
T.

 avere km di questi files?  Sto dicendo cacate?
Leggi il manuale:
http://www.php.net/session#ini.session.gc-probability
http://www.php.net/session#ini.session.gc-divisor
http://www.php.net/session#ini.session.gc-maxlifetime


 > avere km di questi files?  Sto dicendo cacate?
c'e' un timeout oltre il quale i files vengono cancellati
tale timeout dipende dall'inattività del client
come e dove impostare tale valore.....leggilo sul manuale
session_destroy(); dovrebbe ottenere lo stesso....
quindi un link LOGOUT potrebbe puntare ad una pagina dove uno scritp esegue
appunto session_destroy();
a questo punto dovresti essere uno specialista delle sessioni

 appunto session_destroy();
Sbagliato.
Forse e' il caso che anche tu vada a leggerti il manuale.
-- 
I am what I am, I do what I can


"Setec Astronomy" <setec@_NO_NOSPAM_freemail.it> ha scritto nel messaggio
news:FQvye.411$QV1....@twister2.libero.it...

cosa c'e' di sbagliato?
nell' usare session_destroy(); per fare logout?
e' su tutti i manuali come esempio....

 
Personalmente, mi sono andato a leggere i link di Setec è ho trovato:
session.gc_maxlifetime = specifica il numero di secondi dopo i quali i 
dati saranno considerati 'spazzatura' e cancellati.
Nel mio php.ini era impostato il valore in secondi 1440.
Ho provato ad impostarlo a 60 ( secondi ) , riavviare apache e provare
ad aprire una pagina iniziando una sessione.
Ho chiuso il browser, atteso , ma dopo una 20ina di minuti i file sono 
ancora presenti.
sempre grazie a Setec ho trovato:
session.save_path = definisce l'argomento che è passato all'handler di 
sessione. Se scegliete handler files di default , questo è il percorso 
dove i files vengono creati. Di default è /tmp. Se la profondità del 
percorso session.save_path è più di 2, l'accumulo (gc) non sarà effettuato.
Cosa significa?
Nel mio caso il percorso di tale cartella è:
C:\Programmi\cartella\tmp
è possibile che sia perquesto??
ho sbagliato qualcosa?
perchè i miei file di sessione non si cancellano nonostante abbia 
impostato il max filetime a 60 secondi??
Grazie ancora
T.

 nell' usare session_destroy(); per fare logout?
session_destroy(); NON cancella i file di sessione.


 Cosa significa?
Prima di tutto ti consiglio di leggere il manuale in lingua originale
poiche' la traduzione in italiano puo' essere fuorviante. Nel tuo caso
quella parte di documentazione non ti riguarda in quanto non utilizzi
l'argomento opzionale N.


 ancora presenti.
hai provato a riaprire il browser e verificare che dopo di quello siano 
ancora presenti? Se php non è in esecuzione come fa a cancellarti i 
temporanei? Puoi fare una semplice prova: apri una pagina che crea le 
sessioni con ie e ff(o opera o un altro browser). Verifica che i due 
sessid sono diversi, e riapri la pagina dopo un minuto solo con uno dei 
browser. A questo punto dovresti avere non piu 2 session temp ma solo una.

Setec Astronomy ha scritto:

Devo veramente ringraziarti Setec, ora sembra funzionare, correggimi se 
sbaglio però:
il php.ini riferisce:
; Define the probability that the 'garbage collection' process is started
; on every session initialization.
; The probability is calculated by using gc_probability/gc_divisor,
; e.g. 1/100 means there is a 1% chance that the GC process starts
; on each request.
Ciò significa che avendo di default session.gc_probability = 1
avevo l' 1% di probabilità che il " cestino " fosse processato all' 
avvio di uno script.
Quindi l'ho settato a 100 dandomi così il 100% di probabilità che questo 
venisse processato.
ho aperto prima IE e poi FF e logicamente sono stati creati due file di 
sessione.
Ho atteso circa un paio di minuti (il session.gc_maxlifetime = 60) e ho 
provato a riaprie il browser e rivedere la pagina che avevo creato.
Magicamente nella mia cartella sono scomparsi i precedenti due file di 
sessione e ne è logicamente comparso uno nuovo.
Setec, a questo punto posso considerare risolto il problema??
in ogni caso, mi sei stato di grande aiuto.
Credo di aver raggiunto con l'argomento Sessioni i limiti del modesto 
manuale che avevo, il quale delle sessioni dice poco o nulla.
Meno male che cè sempre una persona cordiale come te.
Saluti e ancora grazie.
T.

 Setec, a questo punto posso considerare risolto il problema??
Dipende, lo consideravi un problema?
L'impostazione di default all'1% e' fatta apposta per evitare di
sovraccaricare il server inutilmente con continue esecuzioni del
garbage collector e IMHO e' l'impostazione ideale.
-- 
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
