2010-01-08 3 views
7

J'ai un site dont nous exigeons que l'utilisateur ait activé JavaScript et les cookies avant de pouvoir se connecter au site. (La partie JS est terminée et fonctionne parfaitement.) Pour l'instant, nous avons créé un cookie et redirigé l'utilisateur vers une autre page (en PHP). Cela a fonctionné correctement, mais nous avons maintenant un groupe de personnes qui ont mis en signet la page que nous redirigeons, qui, bien sûr, n'a pas le cookie défini et ne leur permet donc pas de se connecter. Je cherche donc une autre solution pour vérifier le cookie et je pense utiliser le jQuery Cookie plugin. Je me demande si c'est compatible dans tous les navigateurs (quand JS est activé bien sûr)?L'utilisation du plugin jQuery Cookie est-elle une méthode de test valable pour voir si les cookies sont activés?

+2

Je ne l'ai pas testé dans tous les navigateurs, mais le point entier d'avoir des plugins jQuery et jQuery est compatible multi-navigateur. En outre, "tous les navigateurs" est un peu large; Je considérerais IE6 et Opera comme étant à la marge. –

+0

Malheureusement pour ce client, j'ai besoin d'IE6. Opera J'aimerais, mais je suppose que je peux vivre sans. –

Répondre

10

Thxs Shawn pour your answer, mais malheureusement, parce que les navigateurs n'envoient pas toujours le référent, il n'est pas assez fiable pour pouvoir l'utiliser à chaque fois. Parce que si ce n'est pas le cas, alors vous finissez en boucle.

L'autre solution que je pensais était de rediriger vers une page complètement séparée, qui vérifie en soi si les cookies sont activés (en se redirigeant vers lui-même). Si les cookies sont activés, ils redirigeraient vers la page d'origine. Si ce n'est pas le cas, cela redirigerait vers une page sur le problème. Je pense que cela devrait fonctionner, mais je ne suis pas sûr. En fin de compte, j'ai essayé le plugin jQuery Cooke dans IE 6, 7 et 8, Safari 4, Google Chrome 4, Firefox 3.5, Opera 10.2 et sur quelques configurations différentes et cela a fonctionné dans chacun d'entre eux. Voici le code que je utilise:

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

Ce n'est pas parfait, mais je pense qu'il va travailler dans 95% des cas. Sinon, il échouera et ne leur permettra tout simplement pas de faire quoi que ce soit.

+2

Oui je pense que cela fonctionnera pour tous les navigateurs, voici un autre exemple de code http://blog.nickburwell.com/2009/05/check-if-cookies-are-enabled-on-client.html –

1

Vous pouvez vérifier le référent de la page et si ce n'est pas votre page d'accueil, vous pouvez les rediriger là. Si le référent est votre page d'accueil et qu'aucun cookie n'est défini, vous savez que les cookies ne sont pas activés.

+0

J'ai essayé ceci, mais le référent n'est pas défini dans le tableau $ _SERVER. Des idées? J'ai essayé à la fois un 302 et 307. –

+0

Essayez @ $ HTTP_REFERER ou getenv ("HTTP_REFERER"). –

+1

J'ai effectivement trouvé cet en-tête ("Location: ..."); ne finit pas par définir le référent (au moins dans Safari), donc j'ai plutôt utilisé un qui fonctionnait parfaitement. –

1

J'aime cette fonction 1 liner:

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