Test acceptation cookies en PHP ?

Daniel -  
 Arkhadi -
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. jside
     
    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
    1. Arkhadi
       
      Merci beaucoup. Quelques heures de travail épargnées. : )
      0
  2. ShaoShiva Messages postés 106 Statut Membre 18
     
    Pourquoi pas la solution que tu proposes? autrement je ne crois pas que ce soit possible.
    0
  3. Daniel
     
    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.
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. ShaoShiva Messages postés 106 Statut Membre 18
     
    Moi aussi je ne le connaissais pas ce site avant, j'ai juste fais une recherche sur google ;-)
    0
  6. foisse
     
    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=='';
    0
    1. jside
       
      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.
      0