[PHP] Destruction d'une variable dans une boucle

Destruction d'une variable dans une boucle [PHP] - PHP - Programmation

Marsh Posté le 17-02-2009 à 09:38:10    

Bonjour à tous,

 

Je me heurte à un petit problème qui, je pense, ne doit pas être si compliqué que cela.

 

J'ai un script en php qui me permet de constituer une chaine de caractères qui me sert à identifier des internautes venant sur mon site :

 
Code :
  1. $taille = 10;
  2. $lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
  3. srand(time());
  4. for ($i=0;$i<$taille;$i++)
  5.     {
  6.     $idsess.=substr($lettres,(rand()%(strlen($lettres))),1);
  7.     }
 

Or ce script se trouve dans une boucle (constitution pour chaque utilisateur).

 


Code :
  1. while($data = mysql_fetch_array($req))
  2.      {
  3.      if($verif>900)
  4.           {
  5.           $taille = 10;
  6.           $lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
  7.           srand(time());
  8.           for ($i=0;$i<$taille;$i++)
  9.                {
  10.  $idsess.=substr($lettres,(rand()%(strlen($lettres))),1);
  11.  }
  12.           echo $idsess;
  13.           }
  14.      unset($idsess);
  15.      }
 

Le problème c'est que pour 10 utilisateurs par exemple, la valeur idsess reste la même, même en mettant un unset en fin de boucle.

 

En cherchant un peu, j'ai cru comprendre que mon souci était normal (la variable reste définie à l'intérieur de la boucle mais pas à l'extérieur.

 

Quelqu'un sait il comment détruire/réinitialiser cette variable à l'intérieur de la boucle ?

 

Merci.


Message édité par yaotzin le 17-02-2009 à 09:45:02
Reply

Marsh Posté le 17-02-2009 à 09:38:10   

Reply

Marsh Posté le 17-02-2009 à 10:10:39    

Vérifie plutôt la valeur de ton nombre aléatoire. J'aurais plutôt tendance à dire qu'il prend toujours la même suite de nombre.
 
Pis bon, dans ce cas, j'ai l'impression qu'un idsess = ""; serait largement suffisant.


Message édité par kao98 le 17-02-2009 à 10:11:57

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 17-02-2009 à 10:16:30    

Le probleme vient du srand(time());
 
Il faut que tu le fasses 1 seule fois en haut de ton script.
Dans ton cas, le script met surement moins d'une second pour s'executer, time() a donc la meme valeur entre deux appels...

Message cité 1 fois
Message édité par fluminis le 17-02-2009 à 10:17:05

---------------
http://poemes.iceteapeche.com - http://www.simuland.net
Reply

Marsh Posté le 17-02-2009 à 10:28:55    

fluminis a écrit :

Le probleme vient du srand(time());
 
Il faut que tu le fasses 1 seule fois en haut de ton script.
Dans ton cas, le script met surement moins d'une second pour s'executer, time() a donc la meme valeur entre deux appels...


+1
c'est là ou je voulais en venir.


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 17-02-2009 à 13:00:41    

En effet, cela fonctionne maintenant.
 
Au temps pour moi pour la conservation des variables dans les boucles...
 
Merci Messieurs !

Reply

Marsh Posté le 17-02-2009 à 13:39:29    

Suis pas sûr que t'es bien tout compris !
Ca n'a rien à voir avec la "conservation" (on parle de portée) des variables ! Là, c'est plus de l'utilisation de srand / rand qu'il s'agit.


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 17-02-2009 à 18:37:53    

Oui oui,
 
J'ai bien compris. Je me suis focalisé sur cette histoire de conservation de valeur des variables, alors que le problème venait d'ailleurs...
 
Je te dis, le script fonctionne maintenant...
 
Merci encore.

Reply

Sujets relatifs:

Leave a Replay

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