Le navigateur du client accepte t'il les cookies

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 632 fois - Téléchargée 29 fois

Contenu du snippet

Voici un petit bou de code qui permet de savoir si l'exploreur du client accepte bien les cookies, pour pouvoir le mettre ne garde avant de rentrer dans votre site.

Le code est trés simple :

1 - on ecrit
2 - on lit

Si le cookies na pas été ecrit (on lit "") l'exploreur du user n accepte pas les cookies ;-)

Source / Exemple :


<?
		// teste si accepte cookies
				
	// crée cookies 
setcookie("Test","Accepte?",2,"/");
			
		// lecture du cookies pour verifier si ecriture 
		// c'est bien effectué ...
$tampon = $HTTP_COOKIE_VARS["Test"];

if( $tampon != "")		
	echo "Cookies Acceptés value: $tampon ";
else
	echo "Cookies Non Acceptés";
	
exit();
?>

Conclusion :


Voila ce code est tt bete, mais j pense que c est pas mal de prevenir le user avant de rentrer dans le site, et puis comme personne ne la poster ... ;-)

A voir également

Ajouter un commentaire Commentaires
Messages postés
37
Date d'inscription
lundi 14 avril 2003
Statut
Membre
Dernière intervention
2 août 2004

Bah, personnellement, je n'utilise pas les sessions php, mais j'utilise quelquechose que je connaît sûr et inviolable à mon sens.

En fait, je pense que les sessions PHP se comportent un peu comme mon script. A la différence que ces sessions ne sont valable que pour mes membres et pas pour les visiteurs. Elle permet de garder la connexion.

Ce que je fait quand un membre ce connecte, c'est que je lui donne un Id de 20 caractères pris au hasard parmi tous les caractères ansii. Ce qui réduit fortement la possibilité d'avoir deux fois le même Id et de pirater une sessions en rechergeant la page avec toutes les combinaisons possibles... Ensuite, je stocke cet Id dans la base de donnée.

Ensuite, reste la question de savoir comment conserver l'Id car pour reste connecté, le membre doit envoyer cet Id à chaque chargement de page. Alors, j'ai opté pour les cookies de sessions qui se détruisent dès que le naviguateur est fermé, mais j'ai autorisé les cookies persistants pour qu'ils puissent être automatiquement reconnus à leur prochaine visite. Dans le cas où le membre n'accepte pas les cookies, alors, cet Id est transmis via CGI ce qui est pas très sûr vu que cet Id est visible dans l'Url et il suffit que ce dernier donne un lien pour mettre les autres au courant de son Id.

M'enfin, depuis trois ans que j'utilise ce système, j'ai pas eu de problème. Et la différence fondamentale avec les phpsessid, c'est que l'Id est plus long, donc, plus dur à trouver, mais aussi que cet Id n'est pas le fruit du hasard et est généré par rapport à des facteurs qui me sont inconnus (timestamp peut-être... pour fixer un delai d'expiration). Alors, je crois qu'on peut se fier à php pour ça... Par contre, je ne sais pas où ils stockent ces données (les Id) ,mais si c'est en mémoire vive, cela doit ralentir d'autant plus le serveur. Et au moins, avec mon script, je sais ce qu'il se passe et je dors sur mes deux oreilles, d'autant plus que ce dernier est très peu long.

M'enfin, si tu veux étudier le problème de fond en comble, j'ai mis la source de mon site on-line...
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

de toute façon, moi les cookies... je les fuis, c'est pas du tout "reliable", pas du tout sur.

ah question, les sessions en php utilisent un cookie? les infos sont toutes sauvées côté serveur ça c'est du sur, mais pr repérer chaque "client", c'est seulement sur base de l'IP ou c'est appuyé par un cookie ? auquel cas, faudrait se méfier des session aussi...
Messages postés
37
Date d'inscription
lundi 14 avril 2003
Statut
Membre
Dernière intervention
2 août 2004

Effectivement, bien vu. A supposer que comme je le disais dans le commentaire, on n'utilise pas se cookie pour autre chose, encore que tout contenu d'une variable retourne true...

M'enfin, je propose que ce code source soit corrigé... Sinon, pour info et pour éviter que l'on se méprenne, la fonction setcookie() retourne false en cas d'erreur, mais uniquement côté serveur...
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

tu peus aussi écrire ça en plus court:

$CookieAccepte = isset($_COOKIE["CookieAccepte"]);

et donc il n'est pas possible de savoir en un chargement de page, ce qui justifie mon étonnement. je trouvais ça bizarre... et je comprends pas que tu aies eu des bons résultats avec cette manière de faire.
Messages postés
37
Date d'inscription
lundi 14 avril 2003
Statut
Membre
Dernière intervention
2 août 2004

Pour répondre à la question des cookies, le problème justement avec les cookies, c'est qu'on ne peut pas savoir si le naviguateur accepte les cookies ou pas, en tout cas, pas en un seul chargement de page.

En effet, si vous placez un cookie, celui-ci ne sera disponible qu'au prochain chargement de page et ce code est donc par conséquent inutile.

Le seul et unique moyen de faire une telle vérification reste de faire comme je l'ai fait sur mon site. Dès que le visiteur arrive, on place un cookie (ex: setcookie("CookieAccepte","true");) et à chaque fois qu'on recharge une page, on met ce petit bout de code:
if(isset($_COOKIE["CookieAccepte"])){ CookieAccepte=true; } else { $CookieAccepte=false; }

Et donc, dans tous le reste du script, la variable $CookieAccepte nous renseigne sur le fait que le client accepte les cookies.

Bon, après, on peut placer ce cookie de vérification avec une valeur dont on a besoin pour rendre ce cookie de vérification utile à plusieurs choses et faire d'une pierre deux coups.

J'espère que j'en ai aidé certains, sinon, ben j'ai perdu mon temps :-D
Afficher les 26 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.