Bonjour,
Voila je rencontre un petit problème avec mon code.
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 !
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 ;)
ç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 !