Rafraichir une page 1 fois

Eléphant du PHP | 60 Messages

23 août 2011, 13:45

Bonjour voici ce que je voudrais faire mais vu que je suis grand grand débutant, c'est un peu la galère.
Je n'ai pas d'erreur à 1ère vue mais ce qui est sûr c'est que ça ne fonctionne pas.
Le cookies refresh est correctement créé si inexistant mais je n'arrive pas à obtenir le relaod de la page qui doit s'enchainer
<head>
<?php
if(!isset($_COOKIE["refresh"])){ // si le cookies refresh n'existe pas
	setcookie("refresh", "1", time()+7200); //on créé le cookie avec une durée de 2h
	echo "<script>document.location.href = 'http://www.monsite.com';</script>\n"; // puis on rafraichie la page
	echo "</script>";
	}
else {} // si le cookies refresh existe, on ne fait rien
?>
Par avance merci pour votre aide

ViPHP
AB
ViPHP | 5818 Messages

23 août 2011, 18:51

Utilises un header plutôt qu'un bout de code javascript (qui peut être désactivé) :
<?php
if(!isset($_COOKIE["refresh"]))
{ 
       // si le cookies refresh n'existe pas
       setcookie("refresh", "1", time()+7200); //on créé le cookie avec une durée de 2h

       header("Location: http://www.monsite.com/");
       exit;
 }
?>

Eléphant du PHP | 60 Messages

23 août 2011, 19:19

Franchement AB ... merçi, merçi et encore merçi !!!
c'est 3x rien mais si tu savais combien j'ai galéré ...

ViPHP
AB
ViPHP | 5818 Messages

24 août 2011, 03:59

Merci pour le trois fois merci. ça compense pour d'autres qu'on dépanne pour du code parfois beaucoup plus difficile et qui ne prennent pas la peine de faire signe :)
PS En cliquant sur le message qui t'a aidé cela permettrait de marquer ta question comme résolue :wink:

Eléphant du PHP | 60 Messages

24 août 2011, 11:34

Aie, j'ai bien cru que ça fonctionnait mais en fait non.
Peut-être est-ce parce qu' avant j'ai déjà des header ?
voilà ce que ça donne :

</head>
<!-- Pour NO-CACHE -->
<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
?>
<!-- Pour DETECTION RESOLUTION -->
<script type="text/javascript" src="resscreen.js"></script> // script qui place 2 cookies correspondants à la résolution écran
// selon ces cookies, le template change et s'adapte
<!-- Pour RELOAD page si cookies refresh inexistant -->
<?php
if(!isset($_COOKIE["refresh"]))
{
// si le cookies refresh n'existe pas
setcookie("refresh", "1", time()+7200); //on créé le cookie avec une durée de 2h
header("Location: http://www.monsite.com/"); // et on actualise la page
exit;
}
?>

ViPHP
AB
ViPHP | 5818 Messages

24 août 2011, 18:25

Peut-être est-ce parce qu' avant j'ai déjà des header ?
Oui !

Mets le code php " if(!isset($_COOKIE["refresh"])) .... " tout en haut de ta page. Il n'a rien à faire ici où te le mets, mélangé à du html !

Eléphant du PHP | 60 Messages

24 août 2011, 19:40

ok mais il faudrait que ma recupération par cookies de la resolution ait lieu en premier (d'ailleurs là aussi, il faudrait que j'ajoute un test => si cookies res_height présent, on passe l’exécution de resscreen.js).
C'est seulement après qu'il faudrait vérifier la présence du cookies refresh et reloader la page si ce cookies refresh n'existe pas encore.
tu crois que c'est possible dans ce sens là ?

Eléphant du PHP | 60 Messages

24 août 2011, 23:01

J'ai testé ça et ça a l'air pas mal ... demain j'essaye avec une autre config et une plus grosse résolution pour voir ce que ça donne.


</head>
<!-- Pour NO-CACHE sur Index -->
<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

// Pour RELOAD page si template pas encore adapté à la résolution
if(!isset($_COOKIE["res_height"])) // si la résolution n'a pas encore détectée
{
echo '<script type="text/javascript" src="resscreen.js"></script>';
}
if(!isset($_COOKIE["refresh"])) // si le cookies refresh n'existe pas
{
setcookie("refresh", "1", time()+7200); //on créé le cookie avec une durée de 2h
header("Location: http://www.monsite.com/"); // et on rafraichit
exit;
}
?>
Modifié en dernier par lecer144 le 25 août 2011, 09:50, modifié 1 fois.

Eléphant du PHP | 60 Messages

25 août 2011, 09:30

bon ça marche pas, le reload ne se fait pas pffff :(