Rechercher : dans
Par :

Cookie PHP - Sont t'il activer...

Dernière réponse le 10 sep 2008 à 15:56:20 Anamos67, le 6 jui 2006 à 19:36:35 
 Signaler ce message aux modérateurs

Bonsoir,

Depuis quelque temps je recherche un script capable d'afficher, lorsque le navigateur du client n'accepte pas les cookie, un message; tel que: "Votre navigateur doit accepter les cookies pour afficher correctement cette page"
Comme par exemple la balise <noscript></noscript> qui va s'afficher si le navigateur du client n'accepte pas le javascript :)

J'ai deja essayer en php, mais malheuresement sans sucées
Voici le code en question:

if ( !isset ( $_COOKIE['cookie_test'] )  )
{
  setcookie ( "cookie_test" , 1 , time () + $time['config']['test'] , "/" );
  header ( "HTTP/1.1 301 Moved Permanently" );
  header ( "Location: index.php" );
  exit;
}
et un peu plus loin
if ( !isset ( $_COOKIE['cookie_test'] )  )
{
  echo "Votre navigateur doit accepter les cookies pour afficher correctement cette page";
}
Le probléme est que, si les cookies sont activer, pas de souci par contre si il ne le sont pas, la page se reactualise elle retomber sur le premier script et refait la reaculisation, indefiniment...

Voila merci pour votre aide

Meilleures réponses pour « Cookie PHP Sont t'il activer... » dans :
PHP - Les cookies et les en-têtes HTTP VoirLes en-têtes HTTP Lors de chaque échange par le protocole HTTP entre votre navigateur et le serveur, des données dîtes d'en-têtes contenant des informations sur les données à envoyer (dans le cas d'une requête) ou envoyées (dans le cas d'une...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
Administration de MySQL VoirLa base de données mysql Les Système de Gestion de Bases de Données tels que MySQL permettent de manipuler facilement et avec beaucoup de souplesse un très important volume de données. Toutefois, aussi robuste soit MySQL, il peut être intéressant...

1

maxime_B, le 7 jui 2006 à 14:55:06

Salut

ce serait pas plus simple de "jouer" avec les variables avec la fonction si, sinon au lieu de mettre 2 fois if??

je veux dire comme ça:

<?php

if ( !isset ( $_COOKIE['cookie_test'] )  )
{
//utilise le cookie
}

else
{
echo 'Votre navigateur doit accepter les cookies pour fonctionner correctement';
}

?>


enfin, c'est juste une proposition.......
mieux vaut la fermer et passer pour un con, plutôt que de l'ouvrir pour dire des conneries...

Répondre à maxime_B

2

ekra, le 7 jui 2006 à 14:58:25

Bonjour,

(pour Maxime_B)
Je pense que ça ne convient pas. Dans un premier temps, si le cookie n'existe pas, c'est qu'il n'est pas créé ou que le navigateur ne les acceptent pas. On en deduit pas tout de suite qu'il ne les accepte pas. Vive Linux, les vacances et les gauffres !

Répondre à ekra

3

Anamos67, le 7 jui 2006 à 17:09:53
  • +2

Exactement, c'est bien sa le probléme... Je ne suis d'ailleur méme pas sur que se soit possible...

C'est vraiment embetant les cookies, a toujours devoir reactualiser la page!

Répondre à Anamos67

4

Anamos67, le 8 jui 2006 à 14:45:27

Personne n'a d'idée?

Répondre à Anamos67

5

fanfantasy7, le 20 fév 2008 à 23:43:20

Un petit Up
je serai intéressé par la solution

Répondre à fanfantasy7

6

ten62, le 4 aoû 2008 à 00:51:00
  • +1

Moi aussi, quelqu'un a il un idée ?

Répondre à ten62

7

foisse, le 8 sep 2008 à 17:04:29
  • +2

Pour savoir si le client accepte les cookies il suffit de vérifier la constante SID après avoir démarré la session.
Si SID est vide le client accèpte les cookies;
le code:
session_start();
if (SID=='') $cookie=true; //le client accepte les cookies
else $cookie=false;

sinon plus simple mais moins explicite:
session_start();
$cookie=SID=='';

Répondre à foisse

8

fanfantasy7, le 10 sep 2008 à 09:02:17

Merci beaucoup pour ton code
il marche bien chez moi
mais j'ai quand une question de compréhension

si le client accepte les cookies et qu'on ouvre une session
pourquoi le SID est vide ?
n'est-t-il pas sensé contenir l'ID de la session ?

Répondre à fanfantasy7

9

 foisse, le 10 sep 2008 à 15:56:20
  • +1

Salut, c'est la définition du SID que tu trouveras dans le manuel PHP sur la page des sessions dans Constantes pré-définie:

SID (chaîne de caractères)
Constante contenant le nom de la session et l'identifiant en cours, sous la forme "name=ID" ou une chaîne vide si l'identifiant de session a été défini dans un cookie de session.

Après pour te répondre plus en profondeur je peux faire que des suppositions.
J'imagine que c'est pour des raisons de sécurité que SID='' pour les sessions par cookie.
Les constantes sont globales et l'id de session est bien utile pour pirater le compte de quelqu'un donc quand on peut se passer d'utiliser le SID c'est plus sur.
En plus en lisant les pages du manuel, c'est la méthode conseillée pour vérifier si le client accèpte ou pas les cookies donc ça a du être pensé à cet effet.

Sinon c'est un coup de chance :)

Répondre à foisse
Collection CommentÇaMarche.net