2012-04-26 21 views
5

estoy usando CodeIgniter 2.1 en uno de mis últimos sitios y cuando se accede a través de 3G, las cookies son cada corrupta ...Corrupción galleta en la Red Móvil

Al hacer un poco de depuración hasta el punto que la cookie se lee inicialmente I se puede ver que es obvio que trunca, aquí está un ejemplo:

a:14:{ 

Debe ser

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

Esto sólo ocurre cuando una cookie se lee en un dispositivo conectado a una red móvil , Sólo he podido probar tres hasta ahora y para mi sorpresa, se trabajó:

  • Asus portátil w/Vodafone Dongle (x)
  • Macbook Air w/Vodafone Dongle (x)
  • iPhone 3 en la red de Orange Reino Unido (x)
  • Samsung Galaxy SII en tres (trabajó)

supongo basa su red y la cabecera está siendo dañado alguna parte del camino. (¿Posiblemente un proxy?)

Esto me ha estado llegando toda la semana, así que cualquier información sería increíble.

Editar: Para tener en cuenta, el sitio tiene bastantes cookies pero no de gran tamaño. Tenemos Google Analytics, Sharethis, Uservoice y Facebook.

+0

¿Sabía que la solicitud fue servida por completo? ¿Se cargará el sitio web o se cancela? ¿Qué navegador se usó en estos sistemas? –

+0

Es difícil de decir, cambia de diferentes dispositivos/redes .. En la computadora portátil asus w/vodafone dongle, la página no se sirve pero no pude decirle el código de estado del encabezado ya que no tengo acceso a él atm, lo haré actualiza mi pregunta con un poco más de información ... ¡Gracias! – Eddie

+1

¿Ha intentado ponerse en contacto con los operadores de telefonía móvil para escuchar su opinión al respecto? –

Respuesta

4

Aunque no sé qué podría estar causando esto, tengo algunas ideas para usted que pueden ayudarlo a encontrar el problema que debería ayudarlo a evitarlo. Lo que haría primero es tratar de hacer que el error sea consistente, pruebe solo con un proveedor con el ejemplo anterior.

  • es la cookie siempre igual a a:14:{
  • se puede crear una página PHP de 2 líneas con sólo una cookie llamada la misma que la galleta, print_r la cookie en la línea 1 y fijar la cookie en la línea 2. Y luego cambie el valor de la cookie para ver qué tipo de cambio puede hacer cuando no haya otras variables en la página. (¿Puedes establecer la cookie en a:14:{}? a:1? a:14:xxx:{xxxx}? Estamos buscando un patrón que pueda ser consistente en cortar la cadena.
  • si la página de 2 líneas no tiene problemas para cortar el código y luego tomar una copia de la página en la que está teniendo el problema real, y comience a eliminar TODO en la página hasta que solo tenga dos líneas (la línea que establece la cookie y la línea que la imprime) El problema está en algún lugar de su código.
  • if la página de 2 líneas TIENE el problema, entonces tal vez realmente sean las redes móviles (en mi experiencia no he visto esto, sin embargo, podrían tener algún tipo de PROXY que esté limpiando las cookies). Empezaría a intentar enviar un código diferente a través de la cookie hasta que encuentre algo que no tenía un problema en el red de proveedores. (como uuencode o base64_encode los datos en la cookie).
  • Si resulta que los proveedores bloquean todo, quizás considere descargar un programa como el violín que le permite analizar en un nivel muy bajo los encabezados que se envían de ida y vuelta.

Espero que estos pasos de solución de problemas lo ayuden.

+0

Un paso en la dirección correcta IMO, +1. –

+0

Actualmente no tengo tiempo para hacer estas pruebas, pero todas parecen lógicas y estoy seguro de que encontraré el problema en el camino, gracias Michael. – Eddie

0

¿Tiene

$config['sess_match_ip']  = TRUE; 

si es así - esto no funcionará en los dispositivos de telefonía móvil, como la dirección de muchas empresas de telecomunicaciones ciclo de IP cada segundo en los teléfonos móviles (no - yo no sé por qué) - así que, por tanto, que mata la sesión de

alternativa - ¿Ha tratado de cambiar

$config['sess_encrypt_cookie'] = true; 

Cambiar esto también podría resolver su problema

+1

Aún así, no explicaría los datos seriados mutilados. –

+0

sí; si el usuario visita su sitio web con una cookie, que su sitio web considera mala (porque la IP ha cambiado), entonces el resultado podría ser eliminar la cookie, dejando el identificador a: 14. Como dije, porque solo parece ocurrir en teléfonos móviles, y los teléfonos celulares cíclican las direcciones IP, esto es algo que debe verificarse – Laurence

+0

No, 'a: 14: {' no es datos serializados válidos (intente llamar a 'unserialize()' en eso). –

0

intenta establecer algunas cookies de prueba sin la clase de sesión de ci y ver si eso también se daña. Si no, entonces es un error ci. Tuve un problema similar cuando Codeigniter no pudo serializar los datos escapados con '\'. Además, asegúrese de registrar el tamaño de la cookie después de guardarla. Tal vez excede 4096.

Cuestiones relacionadas