Test acceptation cookies en PHP ?

Bonjour,
En PHP, quel serait le moyen le plus simple pour déterminer si l'internaute accepte les cookies, est-ce possible sans devoir en créer un et le relire ? Merci d'avance.

6 réponses

  1. Pourquoi pas la solution que tu proposes? autrement je ne crois pas que ce soit possible.
    1. OK, merci, je ne connaissais pas ce site, mais il faudrait aussi
      au préalable tester si le client accepte le javascript...., voir
      ce sujet du forum.
      1. Moi aussi je ne le connaissais pas ce site avant, j'ai juste fais une recherche sur google ;-)
        1. Pour savoir si le client accepte les cookies il suffit de vérifier la caonstante 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=='';
          1. Je ne suis pas d'accord avec ta solution car le SID est généré dans tous les cas. Il sera différant à chaque appel de page.
        2. Voici un script PHP testé et approuvé !

          * Il détecte si une session est en cours.
          * Il protège l'URL du navigateur.
          * Le script tient sur une seule page.
          * Il invite l'internaute à essayer de nouveau.
          * Pas de redirection vers d'autres pages
          * Pas besoin de JavaScript

          Il faut placer ce script en tête de tout code car on utilise init_set() et header().

          ini_set('session.use_trans_sid', 0);
          ini_set('session.use_only_cookies', 1);
          session_start();
          
          // Tester si l'utilisateur accepte les cookies
          	$cookiePossible = FALSE;
          
          	if (isset($_COOKIE["PHPSESSID"])) {
          		$cookiePossible = TRUE;
          	} else {
          		if (isset($_REQUEST['testCookie'])) {
          			$cookiePossible = FALSE;
          		} else {
          			if (isset($_SERVER["QUERY_STRING"]) AND ($_SERVER["QUERY_STRING"]!='')) {
          				header("Location:http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'&testCookie=TRUE');
          			} else {
          				header("Location:http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'?testCookie=TRUE');
          			}
          			exit();		
          		}
          	}
          
          	if (!$cookiePossible) {
          		echo '<div style="position: absolute; width: 300px; border: 5px solid gray; padding: 8px; margin: 10px; background-color: #FFFFCC; bottom:1%; right:1%">';
          		echo '<h1 style="text-align: center; text-transform: uppercase; color: #F00;">attention !</h1>';
          		echo '<div style="text-indent: 50px; text-align: justify; letter-spacing: 2px;"><p>Attention, vous devez accepter les <b>cookies</b> pour utiliser certaines fonctionnalités du site.</p> <p>Merci de votre compréhension.</p> <p>Vous pouvez essayer de nouveau à accéder au site <a href=\'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'\'>'.$_SERVER['HTTP_HOST'].'</a></p></div>';
          		echo '</div>';
          		exit();
          	}
          1. Merci beaucoup. Quelques heures de travail épargnées. : )