[RESOLU] Probleme timestamp

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Probleme timestamp

Re: Probleme timestamp

par nestor94 » 13 nov. 2021, 01:42

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;
	}

Re: Probleme timestamp

par finipe » 10 nov. 2021, 01:18

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

par nestor94 » 10 nov. 2021, 00:27

Nouveau test en cours avec if au lieu de while...

Re: Probleme timestamp

par finipe » 31 oct. 2021, 22:25

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

par nestor94 » 31 oct. 2021, 18:18

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 :P

Re: Probleme timestamp

par nestor94 » 31 oct. 2021, 18:09

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

par finipe_ » 30 oct. 2021, 16:42

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

par finipe_ » 30 oct. 2021, 16:38

Il y a un souci dans date('Y-m-d- h:i:s'); : un tiret en trop après d

Probleme timestamp

par nestor94 » 30 oct. 2021, 13:57

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)