Newsgroup: it.comp.www.php
Titolo: cookie unico x + siti?

Salve ho alcuni sottodomini del tipo:
sottodominio.miosito.com
sottodominio2.miosito.com
download.miosito.com
vorrei fare in mod che se uno logga da 
login.miosito.com
poi lo stato di loggato si veda da tutti i siti.
come faccio?
cookie? sessione?
Grazie
--    _  _______
  /| // /__  __/ Kirys <Remove DELTHIS from the address to reply>
 / |/ \   / /    Kirys Tech 2000: 
http://www.kt2k.com
/__|\__\ /_/ 2000

premesso che i browser spediscono i cookie di un certo dominio solo al
dominio stesso,
non potrai mai controllare, da 
uno.dominio.it
 un cookie inviato da
due.dominio.it
Quello che però puoi fare è mettere in codivisione una immagine "loggato" o
"non loggato" tra i due domini usando un dominio di transito (zero)
Per esempio:
http://uno.dominio.it
http://due.dominio.it
metti in entrambi i siti una immagine tipo <img
src="
http://zero.dominio.it/loggato.php
">
premesso che esista anche il dominio 
zero.dominio.it
 e che in esso vi sia il
file loggato.php
Il file "loggato.php" verrà innanzi tutto chiamato dal tuo browser e
riceverà i cookies del dominio in questione (
zero.dominio.it
). Potrai così
controllare se è stato loggato o meno.
A questo punto, essendo una chiamata di tipi IMG, il browser del visitatore
si aspetterà un flusso di dati di tipo immagine.
Per fare ciò dovrai innanzi tutto inviare un header che dica "ecco i byte
dell'immagine" (ovvero:
header("Content-type: image/gif");
e poi mandargli davvero i byte dell'immagine:
ovviamente l'immagine dovrà essere selezionata a proprosito: loggato.gif se
il cookie era "vero", e "nonloggato.gif" se il cookie era falso (cookie
vero/falso intendo settato o non settato).
Per mandare i dati dell'immagine puoi usare una cosa simile:
if ($loggato=="true") {
    $fn=fopen("loggato.gif" , "r");  // apre il file con l'immagine
"loggato"
    } else {
    $fn=fopen("nonloggato.gif" , "r"); // apre il file con l'immagine "non
loggato"
    }
fpassthru($fn); // invia il contenuto dell'immagine al browser in questione
Se il cookie era stato settato con setcookie("loggato","true",etcetc);
questo potrebbe essere il listato completo del file loggato.php
header("Content-type: image/gif");
if ($loggato=="true") {
    $fn=fopen("loggato.gif" , "r");  // apre il file con l'immagine
"loggato"
    } else {
    $fn=fopen("nonloggato.gif" , "r"); // apre il file con l'immagine "non
loggato"
    }
fpassthru($fn); // invia il contenuto dell'immagine al browser in questione
Ciao e buon lavoro
J
(ps nessuno ti impedisce di usare 
uno.dominio.it
 come dominio di transito,lo
zero serviva solo per farti capire le differenze)
(pps: la tecnica di header image e del passthru è la stessa utilizzata dai
counter per poter inviare immagini dinamiche)
"Kirys" <uniK...@DELTHIShotmail.com> ha scritto nel messaggio
news:ossmvto1qtv7jhegu...@4ax.com...


Dimenticavo, ovviamente il cookie dovrà essere settato dal dominio
zero.dominio.it
 e non da 
uno.dominio.it
 o da 
due.dominio.it
 quindi il
responso della procedura di login deve essere inviato dal dominio zero.
Eh, nessuno ti impedisce di mettere la stessa action su zero ed utilizzarla
da uno e da due :-) e controllare se il referrer (provenienza del
visitatore) era da un sito o da un altro :-)
J
"
news.ctonline.it
" <dav@thecloud.o> ha scritto nel messaggio
news:9tg8lr$f8o$1...@serv1.iunet.it...



due.dominio.it
Come no? Mandi un cookie al subdomain "
dominio.it
".
Leonardo
-- 
And where the black and corkscrew towers climb
Lost and athirst the ragged pack abides,
Old as the aeons, trapped in tombs of time,
Sailing the tortuous temporal tides...

 ha scritto nel messaggio
news:ndsnvtcavd9bppo0s...@4ax.com...


 ha scritto nel messaggio
news:ndsnvtcavd9bppo0s...@4ax.com...


 ha scritto nel messaggio
news:ndsnvtcavd9bppo0s...@4ax.com...


 Grazie
lascia perdere i cookies...
sessione e via...
Alex

 sessione e via...
Ma se usa le variabili di sessione e l'utente ha i cookie abilitati credo
che il problema si ripresenti: il cookie viene inviato solo al dominio che
l'ha creato.
Sbaglio ?
Quella soluzione dell'immagine in condivsione è veramente barocca :-) ma in
effetti funziona.
:) Roberto


Effettivamente non ho mai provato ad utilizzare le sessioni su host diversi
ma penso che se si tratti di sottodomini forse la sessione va lo stesso...
Boh... no forse hai ragione, altrimenti da un altro host potrei leggere le
variabili di sessione di un altro sito...
naaa.. scusa forse mi sono sbagliato...
Alex

Se mi dai il comando setcookie che useresti ci credo.
setcookie ("TestCookie", $value,time()+3600, "/~rasmus/", ".
utoronto.ca
",
1); // [1]
Se questo cookie e' mandato da 
hillbilly.utoronto.ca
, puo' essere ricevuto
da 
www.bugzilla.utoronto.ca
 e anche da 
mailmangler.utoronto.ca
. Purche' tu
acceda a 
www.bugzilla.utoronto.ca/~rasmus
, in questo esempio.
Il trucco lo fa quel puntino prima di "utoronto" :-)
La versione piu' rospa e'
setcookie ("TestCookie", $value,time()+3600, "/", ".
dominio.it
");
che mandato da qualsiasi dominio di 
dominio.it
, e' ricevibile da qualsiasi
dominio di 
dominio.it
 (
uno.dominio.it
 e 
due.dominio.it
 nel nostro esempio)
ATTENZIONE: il dominio nella forma ".[tld]", NON e' ammesso da alcuni rari
browsers (Opera, Netscape, Lynx, Links, Arena, W3, Konqueror, KWeb), visto
che NON E' SICURO e apre la strada a possibili denial of service.
E' tuttavia un metodo supportato da moltissimi altri browsers (attualmente
soltanto Internet Explorer).
Leonardo
[1] i lettori accorti avranno riconosciuto il plagio spudorato da
    /manual/php4/function.setcookie.html
