Newsgroup: it.comp.www.php
Titolo: cookie che non funzionano on line

Ciao a tutti.
Credo di avere un problemino con i cookies. Il problema è che sul mio 
web server funziona in modo corretto, in quello dell'hoster no.Al 
momento non mi viene alcuna soluzione. In pratica ho un accesso dive 
setto il nome utente che viene inserito la prima volta che si accede. 
Dopo di che, agli accessi successivi, viene ovviamente letto il cookie e 
riconosciuto automaticamente. Il cookie serve per avere "la sicurezza" 
che un utente si sia già registrato come tale, essendo un sito dove gli 
utenti possono avere diversi account con lo stesso nome.
In pratica ad ogni utente può corrispondere più di un account. Il 
problema si verifica in quanto sembri non leggere i cookie. In realtà ho 
la prova che non sia così. Nello stesso sito ho messo anche un forum che 
non ho creato io, ma che si interfaccia con lo stesso DB del sito. Il 
forum pare funzionare regolarmente, registra gli utenti, e fa tutte le 
operazioni per cui è stato ideato. Per ciò che rguarda il mio sito no. 
Più che postare il codice, vorrei che qualcuno potesse dirmi in quali 
tipi di problematiche dovrei sbattere la testa. Anche perchè altrimenti 
dovrei postare pagine intere di codice. Spero tanto che mi sia spiegato 
bene. Ciao a tutti e grazie dell'attenzione e per l'eventuale aiuto.

C'è un bug con i cookies che forse può essere la causa del tuo
problema.
Se scrivi il cookie per esempio dopo aver verificato che il login è
gusto e poi rimandi l'utente ad una pagina di benvenuto usando
una sequenza tipo
$_SESSION['logged'] = true;
header("Location: benvenuto.php");
sotto IIS questo non funzionerà come ci si aspetta poiché i cookies
(o sessioni) non vengono salvati correttamente prima del redirect.
Allora puoi risolvere il problema e veder salvati i tuoi dati
con
$_SESSION['logged'] = true;
session_write_close();
header("Location: benvenuto.php");
http://it2.php.net/manual/it/function.session-write-close.php
Ciao Carlo
Merlink ha scritto:


Questa è davvero una cosa che non sapevo e che è utilissima da sapere. 
Naturalmente, da quello che ho capito leggendo anche dal manuale, quando 
nella pagina successiva inizio con session_start(); riprenderà a leggere 
normalmente le sessioni. In pratica dovrei fare una cosa del tipo:
session_start();
[...]codice che richiama le variabili session e cookies[...]
session_write_close();
Ho 3 libri di php ma questa cosa mi era davvero sfuggita! Devo imparare 
a leggere meglio il manuale! Grazie ancora...
Merlink
jitebi ha scritto:


 session_write_close();
questo pero' probabilmente non c'entra niente col tuo problema.
le sessioni e i cookie sono due cose indipendenti (al di la' del fatto
che le sessioni possono settare un cookie per propagarsi).
la prima cosa che mi viene in mente dalla descrizione del tuo problema
e' che l'host per il quale viene settato il cookie sia sbagliato.
quando setti un cookie devi impostare l'host di validita'. se ti
funziona in locale vuol dire che l'host e' settato su localhost (o
quello che e'), ovviamente quando sposterai il codice su
www.dominionline.it
 l'host dovra' cambiare di conseguenza.
pasta il codice che usi per settare i cookie e vediamo se il problema
e' effettivamente questo o qualcosa d'altro

 
Questo č quello delle visite, per contare gli accessi. Mi serve solo per 
aprire o meno una pagina in piů al primo accesso
<?php session_start()
setcookie('nVisite',$nVisite+1,time() + 31536000);
$nVisite=$_COOKIE['nVisite'];
Questo quello dell'utente
setcookie('nVisitor',$nNick,time() + 31536000);
$nVisitor=$_COOKIE['nVisite'];
[...]
?>

T_PAAMAYIM_NEKUDOTAYM ha scritto:

Questo è quello delle visite, per contare gli accessi. Mi serve solo per 
aprire o meno una pagina in più al primo accesso
<?php session_start()
setcookie('nVisite',$nVisite+1,time() + 31536000);
$nVisite=$_COOKIE['nVisite'];
Questo quello dell'utente
setcookie('nVisitor',$nNick,time() + 31536000);
$nVisitor=$_COOKIE['nVisitor'];
[...]
?>
Ciao grazie

 $nVisitor=$_COOKIE['nVisitor'];
due cose:
1. specifica anche il parametro del dominio in setcookie() (guarda sul
manuale)
2. i cookie sono accessibile dalla richiesta http successiva: per cui
cui $_COOKIE['nVisitor'] non e' valorizzato subito dopo il setcookie()
relativo