2010-01-08 12 views
7

Tengo un sitio que requiere que el usuario habilite JavaScript y las cookies antes de que puedan iniciar sesión en el sitio. (La parte de JS está hecha y funciona perfectamente). Por el momento, hemos estado configurando una cookie y luego redirigimos al usuario a otra página (en PHP). Esto funcionó bien, pero ahora tenemos un grupo de personas que han marcado la página a la que estamos redireccionando, que por supuesto no tiene el conjunto de cookies y, por lo tanto, no les permite iniciar sesión.¿Está usando el plugin jQuery Cookie una forma válida de probar para ver si las cookies están habilitadas?

Así que estoy tratando de encontrar otra solución para buscar la cookie y estoy pensando en usar el jQuery Cookie plugin. Me pregunto si es compatible en todos los navegadores (cuando JS está habilitado por supuesto)?

+2

no he probado en todos los navegadores, pero todo el punto de tener jQuery y jQuery plugins es ser compatible entre navegadores. Además, "todos los navegadores" es un poco ancho; Considero que IE6 y Opera están al margen. –

+0

Desafortunadamente para este cliente necesito tener IE6. La ópera me gustaría, pero creo que puedo vivir sin ella. –

Respuesta

10

Thxs Shawn para your answer, pero desafortunadamente debido a que los navegadores no siempre envían la referencia, no es lo suficientemente confiable como para poder usarla siempre. Porque si no está configurado, entonces terminas en un bucle.

La otra solución que pensé fue redirigir a una página completamente separada, que en sí misma verifica si las cookies están habilitadas (redirigiéndose a sí mismo). Si las cookies están habilitadas, redireccionarían a la página original. Si no lo son, redirigiría a una página sobre el problema. Creo que debería funcionar, pero no estoy seguro.

Al final, probé el complemento jQuery Cooke en IE 6, 7 y 8, Safari 4, Google Chrome 4, Firefox 3.5, Opera 10.2 y en algunas configuraciones diferentes y funcionó en todos ellos. Aquí está el código que estoy usando:

$.cookie('test_cookie', 'cookie_value', { path: '/' }); 
if ($.cookie('test_cookie') == 'cookie_value') { 
    // cookie worked, set/enable appropriate things 
} 

No es perfecto, pero estoy pensando que va a funcionar en el 95% de los casos. De lo contrario, fallará y simplemente no les permitirá hacer nada.

+2

Sí, creo que funcionará para todos los navegadores, aquí hay otra muestra de código http://blog.nickburwell.com/2009/05/check-if-cookies-are-enabled-on-client.html –

1

Puede consultar la referencia de la página y si no es su página de inicio, puede redirigir allí. Si el referente es su página de inicio y no hay ningún conjunto de cookies, sabrá que no tienen habilitadas las cookies.

+0

He intentado esto, pero el referente no está configurado en la matriz $ _SERVER. ¿Algunas ideas? He intentado tanto con un 302 como con un 307. –

+0

Pruebe @ $ HTTP_REFERER o getenv ("HTTP_REFERER"). –

+1

De hecho, encontré ese encabezado ("Ubicación: ..."); no termina configurando la referencia (al menos en Safari), así que usé una que funcionó perfectamente. –

1

me gusta esta función 1 liner:

function cookiesEnabled() { 
    return $.cookie('check', 'valid', { expires: 1 }) && $.cookie('check') == 'valid'; 
} 
Cuestiones relacionadas