[PHP] Random wel en random niet

Pagina: 1
Acties:

  • Markje_X
  • Registratie: Maart 2000
  • Laatst online: 29-10-2014

Markje_X

a.k.a. Olthuis

Topicstarter
Na de search te hebben "getest" bleek het probleem nog niet voor te komen (althans vermoed ik).

Het probleem is als volgt:

We hebben een automatische password generator, opzichzelf niet uniek, maar het rare is, dat die local werkt, op de "normale" server ook, maar niet op de secure server. Het probleem is dat die op de secure server constant het zelfde password genereert, wat onmogelijk is!!!

De code is alsvolgt:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
print passGen();

function passGen()
{
    $passwCharString = "QWRTPSDFGHJKLZXCVBNM123456789!#$%&amp;amp;!#$%&amp;amp;";
    $passwLength      = 7;
    
    $stringLength    = strlen($passwCharString);
    
    for ( $i = 1; $i <= $passwLength; $i++ ) 
    {
        $randomNumber = rand(0, $stringLength-1);
        $password     = $password.substr($passwCharString, $randomNumber, 1);
    }
    return $password;
}
?>

De url's:
http://www.splashclass.org/pass/password.php
https://secure.vuurwerk.nl/~splash/password.php

  • steenz
  • Registratie: Oktober 2000
  • Laatst online: 13-09 16:22
Dit zou ik niet weten, heb er absoluut geen verklaring voor. Het script lijkt mij in orde en het werkt ook op die niet-secure server...

Wat ik nog wel weet van Visual Basic was dat als je een random getal genereerde, je altijd Randomize in de form_load moest zetten. Anders werden de random getallen gegenereerd op basis van je systeemtijd en waren dus in principe te 'raden'. Misschien bestaat er voor PHP ook wel zoiets, en staat dat raar ingesteld op die secure server...

Ben wel nieuwsgierig wat het nou is ;)

  • steenz
  • Registratie: Oktober 2000
  • Laatst online: 13-09 16:22
Uit de PHP-manual:
Remember to seed the random number generator before use with srand().
http://www.php.net/manual/en/function.rand.php

Probeer hier eens naar te kijken anders... Misschien is het toch ongeveer zoiets...... (gokje)

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

ik weet vrijwel zeker dat dat het is... kijk ook eens naar mtrand()...

Klaar voor een nieuwe uitdaging.


  • steenz
  • Registratie: Oktober 2000
  • Laatst online: 13-09 16:22
Hehe, dan zou m'n VB ervaring toch ooit nog een beetje van pas komen :D

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
function getRandomPassword($length) 
                { 
                      srand((double)microtime()*1000000); 

                      $return = ""; 
                      $letters = array('1','2','3','4','5','6','7','8','9','0'); 

                      for($i=0;$i<$length;$i++) 
                              $return .= $letters[rand(0,count($letters)-1)]; 
                      return $return; 
                } 
$pass=getRandomPassword(6);
echo "$pass";
?>

en deze?

Doet iets met Cloud (MS/IBM)


  • Markje_X
  • Registratie: Maart 2000
  • Laatst online: 29-10-2014

Markje_X

a.k.a. Olthuis

Topicstarter
Thanks jongens! Het functioneert nu!

Aan het begin van de code is toegevoegd:
srand((double) microtime() * 1000000);

  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 23:45
<off-topic>
Op zondag 03 februari 2002 21:54 schreef D2k een stukje code:
Da's natuurlijk niet erg efficient om elke keer dat de loop wordt doorlopen de count() van de woordenarray op te vragen. Die kan je natuurlijk beter voor de loop al vast in een variabele zetten :)
</off-topic>
Pagina: 1