[php/sql] random wordt toch ge-cached?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik gebruik de volgende - zelfgebakken - functie om een wachtwoord te genereren en in een db te stoppen, samen met andere input van de gebruiker.

PHP:
1
2
3
4
5
6
7
8
9
$letters = "abcdefghijklmnopqrstuvwxyz";
while (strlen($password) < 8) {
      if (strlen($password) % 2 == 0) {
                                       $extra_letter = substr($letters, rand(0,26), 1);
      } else if (strlen($password) % 2 != 0) {
                                              $extra_letter = rand(0,9);
      }
$password = $password.$extra_letter;
}


Werkt prima, als ik op F5 druk dan doet ie het prima en laat ie iedere keer een ander wachtwoord zien.

Maar nu gebruik ik het scriptje in de praktijk, en bij iedere input genereerd ie hetzelfde wachtwoord! Komt misschien omdat ik het steeds vanaf mn eigen pc doe maar ja, in de praktijk kan ook iemand het meerdere malen doen vanaf zijn pc.

Ligt dit aan het feit dat IE (of andere browsers) bestanden in zijn temp zet en dat de bestanden dus gecached zijn?
Vindt het maar vreemd, aangezien de code hierboven toch echt een random functie bevat...
Is dit een bekend probleem?

Misschien moet ik wel in mijn page een no-cache header zetten?

Acties:
  • 0 Henk 'm!

  • Altaphista
  • Registratie: Juli 2001
  • Laatst online: 11-09 17:33

Altaphista

1. check manual, 2. ask

welke versie php heb je?
"In oudere versies van PHP, moest je de random number generator 'zaaien' voor gebruik met srand(). Sinds 4.2.0 is dit niet meer nodig."
check ook: http://www.php.net/manual/nl/function.rand.php

Je gaat het pas zien als je het doorhebt.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Altaphista schreef op 14 april 2003 @ 10:58:
welke versie php heb je?
"In oudere versies van PHP, moest je de random number generator 'zaaien' voor gebruik met srand(). Sinds 4.2.0 is dit niet meer nodig."
check ook: http://www.php.net/manual/nl/function.rand.php
Versie nummero 4.0.

Maar wat bedoelen ze precies met zaaien? Ik zal het eens lezen...
Heb ik inmiddels gedaan, maar om nou te zeggen dat ik het begrijp...

[ Voor 13% gewijzigd door Verwijderd op 14-04-2003 11:05 ]


Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
ze hadden het beter schoffelen kunnen noemen denk ik.
het zorgt er gewoon voor dat die rand() functie niet iedere keer hetzelfde patroon volgt.
probeer gewoon het voorbeelde bij srand even uit en kijk ook bij de usercomments.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
marty schreef op 14 april 2003 @ 11:16:
ze hadden het beter schoffelen kunnen noemen denk ik.
het zorgt er gewoon voor dat die rand() functie niet iedere keer hetzelfde patroon volgt.
probeer gewoon het voorbeelde bij srand even uit en kijk ook bij de usercomments.
Heb nu dit boven in mijn page geplakt:

PHP:
1
srand((double)microtime()*1000000);


..en jawel, het werkt! Beetje vaag van de persoon die rand() uitgevonden heeft, ik vindt het gewoon een dikke bug. Maar ja, daarom is er nu ook PHP 4.0+ uiteraard.... (-:

Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 11-09 11:19

chem

Reist de wereld rond

Dat is geen bug, zo werkt rand en mt_rand nou eenmaal.

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
chem schreef op 14 April 2003 @ 11:21:
Dat is geen bug, zo werkt rand en mt_rand nou eenmaal.
Ik zeg ook niet dat het een bug is, maar dat ik vindt dat het een bug is... maakt verder niet uit ;)
Pagina: 1