Redirection sur une plage horaire

Par Charles Ntg, il y a 8 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

J'essaye de faire une redirection de mon index.php vers ma page closed.php de 23:30 à 07:30 du matin mais malheureusement ça ne fonctionne pas.

J'ai forcé la variable $heure pour voir si je rentre dans la condition mais il ne se passe rien...

Je ne comprends pas trop :'(

<?php //$heure = date('H:i:s'); $heure = '23:31:00'; $heure_ouverture = '23:30:00'; $heure_fermeture = '07:30:00'; if($heure >= $heure_ouverture && $heure <= $heure_fermeture) { //echo $heure; header('Location: /closed.php'); exit(); } ?>

Un petit coup de pouce s'il vous plaît amis Grafikart :)

merci !

2 réponses

G1.3, il y a 8 ans

Salut

Vu le nombre de format d'heure, PHP ne sait pas comment comparer des heures textuelles de ce genre (de plus, 2 jours différents). Tu peux comparer des DateTime, ce sera plus simple à manipuler. J'ai fais un petit bout de code du genre en 2-2:

$current = (new DateTime())->setTime(23, 55, 00); // Ici il est 23h55, tu peux modifier pour tester. Retire setTime() pour avoir l'heure actuelle une fois testé et approuvé $closeAt = (new DateTime())->setTime(23, 30, 00); $openAt = (new DateTime())->setTime(7, 30, 00); // En fonction du moment de la journée if ($current > $openAt) { $openAt->add(new DateInterval('P1D')); // Prochaine ouverture demain matin } else { $closeAt->sub(new DateInterval('P1D')); // Fermé depuis hier soir } // Comparaison de DateTime (easy ;) ) if ($current > $closeAt && $current < $openAt) { echo "Closed"; } else { echo "Open"; }

Dis moi si tu as besoin d'explications en plus ;)

Charles Ntg, il y a 8 ans

ça me semble parfait, tu gères je n'aurai pas pensé une seule seconde que c'était les formats textuels des daites qui pouvaient venir faire planter le système !

Merci beaucoup !