Problème de timestamp

Problème de timestamp - PHP - Programmation

Marsh Posté le 09-07-2004 à 04:06:44    

Salut,
 
je voudrais faire un système d'identification des visiteurs grace à un pseudo et un mot de passe et je voudrais que cette identification ne dure qu'un certain temps évidemment. Il faudrait donc que lorsque le visiteur s'identifie on enregistre dnas une table la valeur $time = "l'heure actuelle + le temps que je veux que dure l'identification" et lorsque $time < "l'heure actuelle" on supprime le visiteur qui n'est donc plus identifié. En m'inspirant d'un script pour un compteur live de connectés qui lui marche très bien j'ai donc utilisé un champ timestamp et je rentre l'heure actuelle grâce à now() qui apparament retourne le timestamp actuel. Seulement j'ai un pb, cela ne marche pas tout le temps, des fois ça enregistre parfaitement le timestamp actuel et des fois ça me met "0000000000". Vous avez déjà eu ce pb et si oui que faire ?  :??:  
Merci d'avance

Reply

Marsh Posté le 09-07-2004 à 04:06:44   

Reply

Marsh Posté le 09-07-2004 à 09:25:32    

clair, mais peu crédible. donne un peu de code stp


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 09-07-2004 à 14:25:25    

JagStang a écrit :

clair, mais peu crédible. donne un peu de code stp

*
 
require("identif.php3" );
mysql_connect($host, $user, $pass) or die("Impossible de se connecter à la base de données !" );
mysql_select_db($database) or die("Impossible de selectionner la base !" );
mysql_query("DELETE FROM identip WHERE time < now()" );
$rep = mysql_query("SELECT * from identip WHERE ip='$REMOTE_ADDR'" );
$m=mysql_num_rows($rep);
 
if ($m == "0" )
{
//pas encore identifié
$timeout=3000;
$valuesList = "id_inscrit,ip,time";
$addValues = "'$id_inscrit','$REMOTE_ADDR',now()+ $timeout";
mysql_query("INSERT INTO identip (".$valuesList." ) VALUES(".$addValues." )" );
 
}
voilà jai pas tout mis hein juste l'essentiel pour effacer les visiteur identifié depuis trop longtemps et pour enregistré les visiteurs qui s'identifient


Message édité par Clapsou le 09-07-2004 à 15:18:30
Reply

Marsh Posté le 10-07-2004 à 02:37:28    

en fait c'est le "now() + 300" qui ne passe pas je me rend compte, il enregistre 000000000 dans la base. Parce que quand je test juste insert "now()" ça marche il me met le timestamp à la valeur actuel. D'ailleurs j'ai regardé dans la base, le timestamp n'est en fait rien d'autres que datetime c'est à dire la date suivi de l'heure, c'est normal ? C'est sans doute pour ça que ça ne passe pas!

Reply

Marsh Posté le 10-07-2004 à 02:41:32    

Code :
  1. require("identif.php3" );
  2. mysql_connect($host, $user, $pass) or die("Impossible de se connecter à la base de données !" );
  3. mysql_select_db($database) or die("Impossible de selectionner la base !" );
  4. mysql_query("DELETE FROM identip WHERE time < now()" );
  5. $rep = mysql_query("SELECT * from identip WHERE ip='$REMOTE_ADDR'" );
  6. $m = mysql_num_rows($rep);
  7. if ( !$m )
  8. {
  9. //pas encore identifié
  10. $timeout = 3000;
  11. $t = time() + $timeout;
  12. mysql_query("INSERT INTO identip(id_inscrit, ip, time) VALUES('$id_inscrit', '$REMOTE_ADDR', '$t')" );
  13. }


entre deux ", la variable est quand même intepreté, ça peut poser prob pour un tableau mais pas là
essaye avec time() qui renvoi le timestamp actuel.


Message édité par Flyounet_57 le 10-07-2004 à 02:43:19
Reply

Marsh Posté le 10-07-2004 à 03:34:05    

Flyounet_57 a écrit :

Code :
  1. require("identif.php3" );
  2. mysql_connect($host, $user, $pass) or die("Impossible de se connecter à la base de données !" );
  3. mysql_select_db($database) or die("Impossible de selectionner la base !" );
  4. mysql_query("DELETE FROM identip WHERE time < now()" );
  5. $rep = mysql_query("SELECT * from identip WHERE ip='$REMOTE_ADDR'" );
  6. $m = mysql_num_rows($rep);
  7. if ( !$m )
  8. {
  9. //pas encore identifié
  10. $timeout = 3000;
  11. $t = time() + $timeout;
  12. mysql_query("INSERT INTO identip(id_inscrit, ip, time) VALUES('$id_inscrit', '$REMOTE_ADDR', '$t')" );
  13. }


entre deux ", la variable est quand même intepreté, ça peut poser prob pour un tableau mais pas là
essaye avec time() qui renvoi le timestamp actuel.


 
Non j'ai essayé avec time() ça ne marchait pas non plus, par contre j'ai changé le nom de mon champ que j'avais appelé bêtement time et ça a l'air de marcher, peut être que ça faisait confusier avec la fonction time() justement.

Reply

Marsh Posté le 10-07-2004 à 07:55:43    

now() + 3000 <=> gmdate("Y-m-d H:i:s", time()+3000)
 
gmdate() à préférer à date() puisque c'est buggé avec le passage heure été/hiver


Message édité par T509 le 10-07-2004 à 08:28:29

---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed