2012-04-26 15 views
5

Sto usando Codeigniter 2.1 su uno dei miei ultimi siti e quando vi si accede su reti 3G, i cookie sono sempre corrotti ...Cookie corruzione sulla rete mobile

Quando si esegue un debug al punto in cui il cookie viene inizialmente letta I può vedere che è ovviamente troncato, ecco un esempio:

a:14:{ 

Dovrebbe essere

a:14:{s:10:"session_id";s:32:"ef171f95db26ad51986....... 

Ciò avviene solo quando un cookie viene letta su un dispositivo collegato a una rete mobile , Sono stato solo in grado di testare tre finora e con mia grande sorpresa, uno funzionasse:

  • Asus Laptop w/Vodafone Dongle (x)
  • Macbook Air w/Vodafone Dongle (x)
  • iPhone 3 sulla rete di Orange UK (x)
  • Samsung Galaxy SII su Three (lavorato)

sto cercando di indovinare la sua rete basata e l'intestazione si corrompe da qualche parte lungo la strada. (Forse un proxy?)

Questo è stato da me per tutta la settimana quindi qualsiasi informazione sarebbe eccezionale.

Modifica: per notare, il sito ha alcuni cookie ma non di grandi dimensioni. Abbiamo Google Analytics, Sharethis, Uservoice e Facebook.

+0

Sai che la richiesta è stata notificata completamente? Il sito web verrà caricato o è stato appena cancellato? Quale browser è stato utilizzato su questi sistemi? –

+0

È difficile da dire, cambia da dispositivi/reti differenti. Sul portatile asus w/vodafone dongle, la pagina non viene pubblicata ma non è in grado di dirti il ​​codice di stato dell'intestazione perché non ho accesso ad esso aggiorna la mia domanda con qualche informazione in più .. Grazie! – Eddie

+1

Hai provato a contattare gli operatori di telefonia mobile per ascoltare la loro opinione al riguardo? –

risposta

4

Anche se non so cosa potrebbe causare questo, ho alcune idee per te che potrebbero aiutarti a trovare il problema che dovrebbe aiutarti a risolvere il problema. Quello che vorrei fare prima è cercare di rendere coerente l'errore, provare solo l'unico provider con l'esempio sopra.

  • è il cookie sempre uguale a a:14:{
  • è possibile creare una pagina PHP 2 linea con solo un cookie di nome uguale a quello dei cookie, il cookie print_r sulla linea 1 e impostare il cookie sulla linea 2. E quindi modifica il valore del cookie per vedere quale tipo di modifica puoi apportare quando non ci sono altre variabili nella pagina. (puoi impostare il cookie su a:14:{}? a:1? a:14:xxx:{xxxx}? Stiamo cercando un modello che potrebbe consistentemente tagliare la stringa.
  • se la pagina a 2 righe non presenta un problema di taglio del codice, quindi prendi una copia di la pagina su cui si sta verificando il problema reale e inizia a cancellare TUTTO sulla pagina finché non si hanno solo due righe (la linea che imposta il cookie e la linea che la stampa) Il problema è da qualche parte nel codice
  • se la pagina di 2 righe ha il problema allora forse sono davvero le reti mobili (nella mia esperienza non ho visto questo, tuttavia potrebbero avere una sorta di PROXY che sta pulendo i cookie). Vorrei iniziare a provare a inviare codice diverso attraverso il cookie fino a trovare qualcosa che non ha avuto problemi sul rete di fornitori. (come uuencode o base64_encode i dati nel cookie).
  • Se risulta che i provider bloccano tutto, forse prendere in considerazione il download di un programma come il violinista che consente di analizzare a un livello molto basso le intestazioni inviate avanti e indietro.

Spero che questi passaggi di risoluzione dei problemi siano utili.

+0

Un passo nella giusta direzione IMO, +1. –

+0

Attualmente non ho il tempo di fare questi test ma sembrano tutti logici e sono sicuro che troverò il problema in arrivo, grazie Michael. – Eddie

0

Avete

$config['sess_match_ip']  = TRUE; 

se è così - questo non funzionerà su dispositivi di telefonia mobile, come indirizzo di molti operatori telefonici ciclo IP ogni secondo sui telefoni cellulari (no - io non so perché) - in modo da quindi uccide la sessione

alternativa - hai cercato di alternare

$config['sess_encrypt_cookie'] = true; 

la modifica di questo potrebbe anche risolvere il tuo problema

+1

Ancora, non spiegherebbe i dati serializzati storti. –

+0

sì, se l'utente visita il suo sito Web con un cookie, che il suo sito Web ritiene non valido (perché l'IP è cambiato), il risultato potrebbe essere la rimozione del cookie, lasciando l'identificatore a: 14. Come ho detto - perché sembra che succeda solo sui telefoni cellulari, ei telefoni cellulari eseguono il ciclo degli indirizzi IP, questo è qualcosa da controllare assolutamente – Laurence

+0

No, 'a: 14: {' non è un dato serializzato valido (prova a chiamare 'unserialize()' su di essa). –

0

prova a impostare alcuni cookie di test senza la sessione session di ci e vedere se anche questo va danneggiato. Altrimenti, è un errore ci. Ho avuto un problema simile in cui Codeigniter non era in grado di serializzare i dati con "\". Assicurati anche di registrare la dimensione del cookie dopo che è stato salvato. Forse supera 4096.

Problemi correlati