|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Messaggi: n/a
|
[PHP] IE8 e sessioni
Ciao a tutti,
purtroppo è difficile da spiegare ma io ci provo: l'altro giorno ho installato IE8 su uno dei PC che abbiamo in azienda per verificare come fosse il nuovo browser MS e mi sono accorto con raccapriccio che alcune funzionalità di siti da noi appena creati non andavano. Nello specifico trattasi di <SELECT> dinamiche generate in AJAX. Premetto subito che in realtà AJAX funziona correttamente ovvero il contenuto dinamico viene generato ed inglobato nella pagina principale senza problemi, il punto è che per le varie <SELECT> non vengono mantenuti le OPTION -> SELECTED. Essendo il codice che genera le <SELECT> in una pagina PHP a se utilizzo le sessioni per tenere traccia dei vari valori impostati e tutto funziona sempre bene con IE6/7, FF, Opera, Chrome ecc. Dove sembra essere l'inghippo di cui però non riesco a capacitarmi? Nell'header.php comune a tutte le pagine (ma NON presente nella pagina php delle select dinamiche) imposto un blocco di codice simile es: Codice:
if ($PAGINAID != 15) {
unset($_SESSION['news'])
}
Indi per cui pur NON essendoci alcun richiamo a tale blocco di codice nella pagina PHP che genera le select dinamiche, mi trovo in questa pagina con la sessione svuotata, cosa che si risolve se nell'header.php commento il blocco codice di cui sopra ma ... NON HA SENSO! Il fatto, lo ripeto, è che con TUTTI gli altri browser un problema simile NON mi capita! Secondo voi da cosa può dipendere? Thanks in advance! |
|
|
|
#2 |
|
Messaggi: n/a
|
Adesso credo di aver "risolto" ma ... o sono impazzito io (facile) o è impazzito IE8.
Nell'header.php se invece di scrivere: Codice PHP:
Codice PHP:
Perchè? l'IF viene valutato TRUE/FALSE a seconda del browser? Ovvio che NON ha senso, eppure da cosa capisco che effettivamente è così? Se provo ad aggiungere Codice PHP:
Come mai?
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
I due codici che hai mostrato sono diversi, immagina che $PAGINAID sia null, nel primo caso l'if è true, nel secondo false. Probabilmente dipende da come ottieni $PAGINAID, magari explorer 8 interpreta le variabili che passi via GET in modo errato (non hai usato urlencode()?).
PS: ho appena scaricato IE8, e l'option selezionata viene mantenuta in una select richiesta da ajax. |
|
|
|
|
|
#4 |
|
Messaggi: n/a
|
Ma i due codici diversi li ho messi proprio di esempio per vedere il caso dove funziona/non funziona.
Ok il concetto di $PAGINAID "NULL" che determina un diverso comportamento dell'IF (true/false), osservazione giusta, ma la domanda comunque è: perchè su tutti i browser va bene mentre IE8 no? Considera comunque che quel blocco di codice in teoria è totalmente estraneo alla pagina php che genera l'html delle select richiamate in AJAX. $PAGINAID inoltre non è una valore ottenuto da $_GET/$_POST/$_REQUEST ma un valore ottenuto da DB. Il JS che richiama le select è del tipo: Codice:
$("#elemento").load('_sottocategoria.php?var=' + 87, 'cache:false');
Se però provo a stampare a video con un print_r tutto ciò che c'è in sessione nella pagina sottocategoria.php MANCANO tutti quei valori necessari presenti invece nella pagina principale, pur essendo la stessa sessione. La cosa assurda è che quella variabile di test $_SESSION['ciao'] = 'ciao', mi compare nella pagina sottocategoria.php nel momento in cui provo a richiamare la select dinamica. Ma il blocco di codice in cui imposto $_SESSION['ciao'] = 'ciao' è nell'header.php e non in sottocategoria.php ... |
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:05.



















