PHP/JavaScript : Cookie et Popup

[Fermé]
Signaler
-
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
-
Bonjour,

J'utilise SPIP comme CMS et le principe est que le serveur va sur index.php qui appelle spip.php, qui lui appelle le squelette sommaire.html.

J'ai une page index.php avec le code suivant :
<?php
if (isset($_COOKIE['CookieVisiteVirtuelle'])) {
	header('location:spip.php');
}
else {
	header('location:prehome.php');
}
?>


et une page (vide) prehome.php :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php // Envoi d'un cookie qui restera prsent 24 heures
setcookie('CookieVisiteVirtuelle', '1', (time() + 3600*24), '/');
header("Refresh: 10; URL=http://localhost/spip/" );
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Prehome</title>
</head>
<body>
</body>
</html>


Lorsque je vais sur ma page d'accueil, soit le cookie "CookieVisiteVirtuelle" est présent dans le cache du navigateur, alors je suis redirigé vers spip.php, soit il n'existe pas et je suis redirigé vers prehome.php où le cookie se crée. Cela me permet de ne plus être redirigé vers la prehome dans la journée.

Jusque là tout va bien.
Maintenant je souhaite insérer une modalbox sur ma page d'accueil (spip.php qui va chercher le squelette "sommaire.html") plutôt que d'utiliser une page intermédiaire de prehome.

Dans ma page "sommaire.html" j'ai dans le "head" :
<script type="text/javascript" src="includes/prototype.js"></script>
<script type="text/javascript" src="includes/scriptaculous.js?  
    load=effects"></script>
<script type="text/javascript" src="includes/modalbox.js"></script>


ainsi que :
 onLoad="Modalbox.show('prehome.php')"

dans le body de cette même page.

Je tiens à préciser que j'ai déjà mis en place la modalbox sur une page et que cela fonctionne. Une fenêtre du type popup apparaît sur ma page d'accueil avec le contenu de "prehome.php" (ici vide).

Je souhaite donc lier mon principe de prehome + cookie avec celui de la modalbox. C'est à dire que lorsque j'arrive sur ma page d'accueil, je ne sois pas redirigé comme avant mais que la modalbox apparaisse seulement la première fois de la journée que je vais sur la page d'accueil spip.php.

Après avoir testé toutes sortes de solutions, j'en ai conclus que mon cookie ne se créait pas à l'ouverture de ma popup car l'URL ne changeait pas.

Je voudrais que ma page index.php pointe tout le temps vers spip.php sauf que si le cookie "CookieVisiteVirtuelle" n'existe pas, la modalbox se lance et s'il existe, elle ne se lance pas.
J'ai donc tenté quelque chose comme ça :

<?php
if (isset($_COOKIE['CookieVisiteVirtuelle'])) {
	header('location:spip.php');
}
else {
	header('location:spip.php');  onLoad="Modalbox.show('prehome.php')"
}
?>


Bien entendu je sais que cela est faux, je voudrais donc savoir si quelqu'un saurait comment faire pour préciser le "onLoad" (présent dans le body de "sommaire.html") dans ma boucle conditionnelle.

Auriez vous une solution à mon problème svp ?

Désolé pour la longueur du post mais je tenais à bien expliquer chaque étape. Merci de m'avoir lu.

3 réponses

Messages postés
436
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
24 mai 2009
113
toutafay, ami Terrien !
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Merci de votre réponse, maintenant le cookie se crée à l'ouverture de ma modalbox.
Il me reste un dernier soucis, lorsque j'arrive sur ma page d'accueil index.php :
<?php
if (isset($_COOKIE['CookieVisiteVirtuelle'])) {
	header('location:spip.php');
}
else {
	header('location:spip.php'); [Je voudrais préciser ici le onLoad de ma modalbox]
}
?>

je suis tout le temps redirigé vers spip.php, mais je souhaiterais ne pas déclencher la modalbox si le cookie existe.
Je rappelle que ma modalbox est appelée grâce à un onLoad dans le body de ma page sommaire.html.
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
893
Bonjour,

Les cookies doivent être envoyés avant tout début d'affichage, c'est à dire qu'aucune donnée ne doit avoir été envoyé en sortie lors de l'appel à la fonction setcookie(), sinon, vous aurez droit à un message d'erreur de ce genre :
Hors toi dans ton script tu as avant setcookie le <DOCTYPE...

c'est pas bon !

il faut mettre <?php setcookie tout au début de ton script
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
893
<?php
if (isset($_COOKIE['CookieVisiteVirtuelle'])) {
	header('location:spip.php');
}
else {
	header('location:spip.php?modalbox=cequetuveux'); [Je voudrais préciser ici le onLoad de ma modalbox]
}
?>


et dans spip.php tu recupères par $modalbox=$_GET['modalbox']