Newsgroup: it.comp.www.php
Titolo: session id passato via url

a cosa serve realmente passare il session id via url ?
io agisco cosi'
es :
pagina1.php
session_start("nomesessione");
session_register("variabili")
poi apro un form mi prendo le variabili
e metto un collegamento a pagina2.php
il problema sta qui ,nel libro (in cui studio) c'e' scritto di fare il
collegamnento a pagina2
 faccendo una cosa del genere <a href="pagina2.php?<?=session_id()?>"
xchè questo ?
le variabili vengono passate anche faccendo il link normale a pagina2.php
senza mettere il session id nel link
quindi pagina2.php
risulta cosi'
session_start("nome_sessione");
e poi uso le var passate da pagina1

a cosa serve realmente passare il session id via url ?
Se non hai abilitato i cookies, allora, non passando il sid attraverso
l'url, non ti funzionerebbe piu' nulla.
In realta', se hai compilato php con l'opzione --enable-trans-sid,
allora e' php stesso ad appendere il sid negli url (qualora tu avessi
i cookies disattivati), quindi non dovresti preoccupartene.
L'unico caso in cui non il sid non viene appeso automaticamente e in
una istruzione del tipo
header("Location: pagina.php");
e quindi, in questo caso, sei costretto a passarlo il sid.
Personalmente, anche se utilizzo server con l'opzione
--enable-trans-sid attivata in fase di compilazione, potrebbe
benissimo succedere, un giorno, di dover mettere i miei programmi php
in server che non hanno questa opzione attiva. In questo caso, se il
visitatore non ha i cookies attivi, non funzionerebbe piu' nulla.
Quindi, faccio lo sforzo di specificarlo sempre il sid.
hola
Buttha
-- 
No more antispam

 Quindi, faccio lo sforzo di specificarlo sempre il sid.
grazie mille x avermi chiarito le idee

alor,
ho provato a utilizzare il $SID costante , ma non mi rende nulla .. (bho)
allora ho fatto cosi':
$sid = session_name() . "=" .session_id();
e  uso   miofile.php?<?=$sid?>, per fare i collegamenti
volevo chiedere .. passando il sid nell' url č necessario comunque
far aprire la sessione (session_start())  nella pagina in cui "arrivo"  o
arrivandogli il sid
dall' url la apre automaticamente ?
tnx

 dall' url la apre automaticamente ?
No.. session_start() ci va a meno che già la apri in modo implicito.

 No.. session_start() ci va a meno che già la apri in modo implicito.
ah capito , il mio ie purtroppo acceta i cookies anche se disabilito tutto
(UFF) :)
curiosità
se io passo come variabile nell' url
link?<?=$SID?>
oppure faccio
//$sid=session_id();
link?<?=$sid?>
è la stessa cosa o $sid la devo registrare nella sessione ?
cavolo ste sessioni sono cosi' facili , funzionano ma bo, sinceramente non
ho capito bene questo
tnx cmq x la risposta

 No more antispam
C'è un altro utilizzo importante del SID passato attravero l'URL.
Immaginiamo di voler fare un sistema ad alta disponibilità di servizio con
bilancimento del carico basato su Linux.
Lo schema è questo:
                             _/\__/\_
                            |        |
                           / Internet \
                           \_  _  _  _/
                             \/ \/ \/
                                 |
                                 |
                       Virtual Server IP/FQDN
             |------------------------------------------|
             |eth0                                      |eth0
       ------|-----                              -------|-----
       | Primary  |                              |   Backup  |
       |  Node    |                              |    Node   |    LVS
       |          |                              |           |  routers
       ------|-----                              -------|-----
             |eth1                                      |eth1
             |-------|------------|-----------------|---|
                     |            |                 |
                     |            |                 |
                     |            |                 |
                |----|----|  |----|----|       |----|----|
                | Web/FTP |  | Web/FTP |       | Web/FTP |        real
                |  Node#1 |  |  Node#2 |  ...  |  Node#n |       servers
                |_________|  |_________|       |_________|
Per approfondimenti rimando al sito 
http://ha.redhat.com
In sintesi, gli utenti non accedono direttamente ai server reali, che
contengono i servizi e che sono configurate in maniera identica. Gli utenti
accederanno al nodo primario o qualle di backup del sistema.
A seconda del carico di lavoro l'utente si troverà sul nodo 1, 2 oppure 'n',
ma non saprà nulla di tutto ciò.
Il meccanismo di virtual server è in grado di gestire la persistenza, cioè è
in grado di ricordare su quale macchina l'utente si è collegato e lo
riporterà sempre su quella. Se così non fosse, sarebbe molto difficile
utilizzare le sessioni!
Se la macchina 'n' che sta usando l'utente dovesse andare in avaria, questi
navigherebbe sempre, perchè il sistema lo dirotterebbe su un'altra macchina.
Però tutti i dati di sessione andrebbero comunque perduti. Per esempio, se
l'utente aveva caricato dei prodotti in un carrello basato su variabili di
sessione, lo ritroverà vuoto.
Ma c'è una soluzione anche a questo!
Infatti, è possibile che tutte le macchine nodo condividano, tramite
interfaccia SCSI oppure via NFS, uno spazio comune dove conservare i file
che identificano la sessione.
Grazie al SID, che viene riportato in continuazione nella URL, è sempre
possibile ripristinare la sessione anche in architetture così complesse.
Chi ha progettato il PHP ha pensato anche a questo, affinchè il nostro
linguaggio preferito sia all'altezza di ASP, JSP etc.
Spero di essermi spiegato bene! :-)
Bye.
Maurizio


Dello schema ho capito ben poco , vabbè , colpa della mia ignoranza, per il
resto tutto ok,
ho capito che  salvare il sid nell' url è sempre e cmq una cosa buona :))


Forse sarà deformazione professionale, ma credo che certi argomenti è meglio
conoscerli, anche se non approfonditamente.
Se non altro affinchè si dimostri che un linguaggio open source può
rivaleggiare con uno proprietario, se non addirittura superarlo.
Bye.
Maurizio

dall' url la apre automaticamente ?
Leggendo nella documentazione:
session_start() creates a session (or resumes the current one based on
the session id being passed via a GET variable or a cookie).
Quindi, senza session_start() la sessione non parte, quindi non
recuperi le variabili.
Comunque, puoi verificarlo facilmente:
disabilita i cookies e crea due pagine:
una che crea la sessione e registra una variabile, l'altra (senza
session_start al suo interno) che prova a restituirti il valore della
variabile registrata nella prima pagina.


Spero di essermi spiegato bene! :-)
Perfettamente.
