Page 1 sur 1
Probleme timestamp
Posté : 30 oct. 2021, 13:57
par nestor94
Bonjour,
Je sèche un peu sur ce sujet là et ne trouve pas la bonne écriture peut-etre?
$lastconnexion = strtotime($lastconnexion);
$date_jour = date('Y-m-d- h:i:s');
$date_jour = time();
while(($date_jour !== $lastconnexion+259200 AND (vacance =='ON'))
{
header('Location:vacance_OK.html');
exit;
}
Il s'agit de bloquer la connexion à un membre déclaré en vacances pendant 72 heures minimum.
($lastconnexion est déclaré en table avec DATETIME)
Re: Probleme timestamp
Posté : 30 oct. 2021, 16:38
par finipe_
Il y a un souci dans date('Y-m-d- h:i:s'); : un tiret en trop après d
Re: Probleme timestamp
Posté : 30 oct. 2021, 16:42
par finipe_
La variable $date_jour est affectée deux fois de suite, donc la ligne $date_jour = date('Y-m-d- h:i:s'); est de toute façon inutile.
Ensuite, pour comparer deux timestamps, il vaut mieux utiliser une inégalité je pense. Dans ce cas là, vous avez une boucle while qui semble infinie.
Re: Probleme timestamp
Posté : 31 oct. 2021, 18:09
par nestor94
Ok pour la variable $date_jour qui est redondante.
Pour la suite, le !== est bien une négation, non?
"Tant que la date du jour n'est pas égale à $lastconnexion +(équivalent de 72 heures en secondes )
header etc.."
Re: Probleme timestamp
Posté : 31 oct. 2021, 18:18
par nestor94
oups, avec le $ accolé à vacance et les parenthèses adéquates ça semble plus cohérent
$lastconnexion = strtotime($lastconnexion);
$date_jour = time();
while(($date_jour !== $lastconnexion+259200) AND ($vacance =='ON'))
{
header('Location:vacance_OK.html');
exit;
}
J'attends donc demain (les 72 heures écoulées) pour confirmer que c'est OK

Re: Probleme timestamp
Posté : 31 oct. 2021, 22:25
par finipe
Les parenthèses ne sont pas un problème pour l'opérateur logique AND dans ce cas.
D'autre part, le !== est effectivement un test de l'inégalité, mais qui teste en plus le type de variable.
Donc si tu utilises !== au lieu de != tu dois t'assurer que $date_jour et $lastconnexion+259200 seront exactement du même type.
Auquel cas, ajouter un intval() pour chaque semble plus sûr.
Concernant l'inégalité, c'est pas nécessairement la différence : si 2 != 3, ça ne signifie pas pour autant que 2 > 3
Dernière chose : la boucle while est inutile. Un simple "if" est suffisant pour tester cela.
Re: Probleme timestamp
Posté : 10 nov. 2021, 00:27
par nestor94
Nouveau test en cours avec if au lieu de while...
Re: Probleme timestamp
Posté : 10 nov. 2021, 01:18
par finipe
Il faut aussi que tu modifies le
!== avec un
> parce que sinon ta condition sera toujours vraie, sauf quand $date_jour sera parfaitement égal (à la seconde près) à $lastconnexion+259200.
La condition sera donc plutôt :
Code : Tout sélectionner
if($date_jour > $lastconnexion+259200)
{
header('Location: vacance_OK.html');
exit;
}
C'est ce que je disais en soulignant que l'inégalité n'est pas la même chose que la différence.
Re: Probleme timestamp
Posté : 13 nov. 2021, 01:42
par nestor94
Oui, c'est ce que j'ai modifié ce jour car ça ne fonctionnait pas!
$lastconnexion = strtotime($lastconnexion);
$date_jour = time();
if($date_jour < $lastconnexion+259200 && $vacance ==='ON')
{
header('Location:vacance_OK.html');
exit;
}