Test acceptation cookies en PHP ?

Fermé
Daniel - 30 juin 2004 à 11:05
 Arkhadi - 16 janv. 2012 à 15:12
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

ShaoShiva
Messages postés
106
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
25 janvier 2005
18
30 juin 2004 à 11:16
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. : )
0
ShaoShiva
Messages postés
106
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
25 janvier 2005
18
30 juin 2004 à 11:14
Pourquoi pas la solution que tu proposes? autrement je ne crois pas que ce soit possible.
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ShaoShiva
Messages postés
106
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
25 janvier 2005
18
30 juin 2004 à 12:00
Moi aussi je ne le connaissais pas ce site avant, j'ai juste fais une recherche sur google ;-)
0
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
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