Bonjour,
j'ai un soucis de date très bizarre, dans un forum punbb mais visiblement le probleme ne lui est pas spécifique.
je place le décor :
punbb 1.2.6 avec pas mal de modifs un peu partout, mais le module post.php est identique à l'original
controle du flood (flood interval) à zéro
lors du post d'un message, il arrive que j'ai le message "intervalle minimum de 0 secondes entre deux messages". Alors que le flood interval est déjà à zero. pour contourner ce probleme, j'ai ajouté une clause au test d'antiflood :
passage de
Code :
- if (!$pun_user['is_guest'] && !isset($_POST['preview']) && $pun_user['last_post'] != ''
- && (time() - $pun_user['last_post']) < $pun_user['g_post_flood'])
|
à
Code :
- if (!$pun_user['is_guest'] && !isset($_POST['preview']) && $pun_user['last_post'] != ''
- && intval($pun_user['g_post_flood']) != 0
- && (time() - $pun_user['last_post']) < $pun_user['g_post_flood'])
|
Avant meme de regarder la différence entre le time() et la date de dernier post, je vérifie si le flood interval est nul ou pas. Cette solution me paraissait bonne, mais j'ai vite déchanté.
Ayant enlevé cette protection, je me suis rendu compte d'un probleme.
Certains des posts sont "antidatés". je m'explique : un post d'id 425 est daté de 18h15, et un post d'id 426 est lui daté de 18h14 !
C'est théoriquement impossible. En gros, lors du post, la date retournée par la fonction time() est "future". lors du test d'antiflood :
Code :
- time() - $pun_user['last_post']) < $pun_user['g_post_flood']
|
ici, le test est passant c'est parceque time() - $pun_user['last_post']) est inférieur à zero (car $pun_user['g_post_flood'] = 0, j'ai vérifié douze fois).
or dans l'opération
Code :
- time() - $pun_user['last_post']
|
time() est _théoriquement_ plus grand que $pun_user['last_post']. ou au pire égal si on est très très très très rapide.
Mais il est tout à fait impossible que la valeur de $pun_user['last_post'] soit supérieure à la valeur rendue par time() étant donné que $pun_user['last_post'] a été renseigné par time() précédemment.
et pourtant c'est ce qui m'arrive...
j'ai vérifié dans la base, ce n'est pas une erreur du script d'affichage des topics.
Quelqu'un à déjà eu affaire àce genre de soucis ?