2010-04-28 4 views

risposta

4

Funziona con altri browser? Funziona in Safari senza AJAX? Questo script viene caricato dallo stesso dominio su cui si trova la pagina originale?

Safari apparentemente ha un altro conservative cookie policy than other browsers. Se tutto sul lato PHP funziona e altri browser funzionano, penso che Safari non stia inviando il cookie di sessione al server.

+0

Questo è generalmente il caso di Safari. Ha una politica sui cookie di terze parti estremamente restrittiva che spesso si interfaccia con le sessioni se si utilizzano iframe. Sono disposto a scommettere che la chiamata Ajax che l'OP sta facendo potrebbe andare in un sottodominio o in un dominio diverso, o se ha qualche tipo di iframe coinvolto. – zombat

+0

Ho sentito che Safari 4 è migliore, ma non l'ho provato. – zombat

0

è vero null o è ""?

quando si if(isset($_SESSION['test'])) restituisce vero?

è questo solo safari? se è così, le impostazioni del tuo browser.

Il cookie di sessione viene salvato con successo e puoi leggere $ _session ['test'] nel resto della pagina header.php?

si chiama session_start() proprio all'inizio della pagina?

ottieni qualche errore? se no - hai fatto sì che si accendessero?

1

Aggiungere questa riga dopo lo session_start() in entrambi i file e dirmi se l'id di sessione è lo stesso (ciò significa che ci si trova nella stessa sessione).

echo session_id(); 
3

Ho affrontato lo stesso problema, session_id() continuava a cambiare ogni aggiornamento, quindi Safari non memorizzava l'ID di sessione nel cookie. Aggiungendo manualmente:

setcookie('PHPSESSID', session_id(), 0, '/');

ho capito di lavoro.

+0

In realtà esiste una funzione più accurata, che può impostare i parametri del cookie di sessione - [session_set_cookie_params] (http://php.net/manual/en/function.session-set-cookie-params.php) – SteveB

Problemi correlati