Bonsoir,

Quelqu'un aurait une idée d'amélioration pour mon script qui est sensé envoyez une alert si on dépasse le nombre d'éssai d'un formulaire.

ça fonctionne sauf que l'heure retournée n'est pas la bonne

On stock dans la session :

    if(empty($_SESSION['login_fail'])){
        $_SESSION['login_fail'] = 1;
        $_SESSION['login_time'] = time()+ 60 * 3;
    }else{
        $_SESSION['login_fail']++;
    }

Si compteur dépasser :

if(!empty($_SESSION['login_time']) && $_SESSION['login_time'] < time()){
    unset($_SESSION['login_fail']);
    unset($_SESSION['login_time']);
}
if(!empty($_SESSION['login_fail']) && $_SESSION['login_fail'] >= 2){
    $error = errors(['Vous avez entré de mauvais identifiants 10 fois de suite il vous faut attendre '. date('H\hi',$_SESSION['login_time']) .' pour réessayer']);
}

Je viens de tester a 2:05 il me dit d'attendre jusque 1h05 pour réassayez.

Cela dit ça fais bien ce que je veut, sauf l'heur qui n'est pas bonne.

Une idée ?

Merci.

5 réponses


Carouge10
Réponse acceptée

Bonsoir,
As-tu vérifier la time zone dans les config de wamp ? Car si tu as fais une mise à jour, elle a pu changer.

Bonjour,
Si tu fais un

date('H\hi',time());

Il te met la bonne heure? Si non c'est que tu as un soucis de timezone.

Salut,
Tu utilises time qui renvoie l'heure du serveur, tu es en local pour faire ton teste ? Si tu le fais sur un serveur, il peut très bien ne pas être en France et donc avoir un décalage d'heure.

neecride
Auteur

galyb

Oui je le fais en local au départ j'avais bien les bonne dates je pense que c'est au niveau de la nouvel version de wamp car je voulais tester mon code sur PHP7

eltharin

Pas trop compris je dois implémenter la session des tentative rater pour le login et bloquer si ça spam.

je fais ça pour afficher l'alert

if(!empty($_SESSION['login_fail']) && $_SESSION['login_fail'] >= 2){
    $error = errors(['Vous avez entré de mauvais identifiants un trop grand nombres de fois il vous faut attendre '. date('H\hi',$_SESSION['login_time']) .' pour réessayer']);
}

et c'est la que l'heure est mauvaise

le debug me donne ça

  'login_fail' => int 2
  'login_time' => int 1510859115
neecride
Auteur

J'ai mis ça date.timezone = "Europe/Paris" c'étais en UTC le UTC+2 me flinguer toutes mes date sur mes req.

ça a l'aire de fonctionner.

Petite info pour ceux qui cherche :

dans le php.ini

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone ="Europe/Paris"