[php] Random text probleem

Pagina: 1
Acties:

  • Martink
  • Registratie: Juni 2001
  • Laatst online: 11-02-2025
Hoi
ik heb een probleem, ik heb een script die verzind elke dag een andere directory voor een directory, maar nu komt hij telkens met het zelfte.
ik heb het getest op 2 server:
www.jongerenclub.nl/test.php
www.cartoontje.nl/lego18+/test.php

op www.cartoontje.nl verzind hij telkens het zelfte op www.jongerenclub.nl werkt hij prima
wat is dan het probleem?
dit is het script:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
function generate_dirname($length) { 
    $ret_val     = '';   
    $charset     = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; 
    $charset_len = strlen($charset) - 1; 
    
    srand(microtime() * 1000000); 

    for ($i=0;$i<$length;$i++) 
        $ret_val .= $charset{rand(0, $charset_len)}; 

    return $ret_val; 
} 
$newdir = generate_dirname(10);
echo $newdir;
?>


edit:
wat ziet het er toch nieuw uit :)

[ Voor 0% gewijzigd door Martink op 06-08-2002 21:25 . Reden: ziet er nieuw uit ]


  • Juup
  • Registratie: Februari 2000
  • Niet online
Hij verzint steeds hetzelfde. Ok.
Mag je in PHP van een string zomaar $charset{$i} nemen?
Moet dat geen array zijn ofzo?

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • Martink
  • Registratie: Juni 2001
  • Laatst online: 11-02-2025
ja dat mag, anders verzint hij toch niks :)
er komt telkens het zelfte woord uit :(

  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 01-09 18:16
geneer dirname 32 chars ofzo kan wel met md5

zoiets als dit uit m'n hoofd ff snel:

PHP:
1
md5("hoi", microtime()*10000);


Maar dat wil je waarscheinlijk niet.
Misschien kun je ff kijken op phpfreakz.nl, daar staan ook veel van die random dingen, leer je ook van.

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Welke php versie?

En misschien helpt het om gebruikt te maken van mt_rand en mt_srand?

Maak de seed wat beter.

bv.
PHP:
1
2
3
4
5
6
function make_seed() {
    list($usec, $sec) = explode(' ', microtime());
    return (float) $sec + ((float) $usec * 100000);
}
mt_srand(make_seed());
$randval = mt_rand();

Programmer - an organism that turns coffee into software.


  • Martink
  • Registratie: Juni 2001
  • Laatst online: 11-02-2025
php versie is 4.0.6
Maar ik vind het raar. hij heeft dagen goed gelopen heb meer van de scriptjes draaien.
maar nu maken ze allemaal ineens de zelfte dirname namelijk 0Ywx4MUvRi
zou er iets mis zijn met server ofzo?

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 03-02 15:29
Martink schreef op 06 augustus 2002 @ 22:34:
ja dat mag, anders verzint hij toch niks :)
er komt telkens het zelfte woord uit :(
Om dan toch ff offtopic spellchecking te doen: zelfde woord...

Ook Knor is aangestoken met het ligfietsvirus!


  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 31-03 16:47

CyberSnooP

^^^^ schrijft --->

Omdat aangeeft dat 2 servers verschillend gedrag vertonen neem ik aan dat het probleem voornamelijk ligt aan een andere compilatie van de PHP.. PHP haalt z'n random functionaliteit ook maar uit bestaande c-libraries en in een van die versies zal wel een bug zitten.

Jouw code is vooral op het punt van het seeden van de random generator twijfelachtig. microtime() * groot_getal is een aardig truucje, maar eigenlijk niet goed. Bekijk eens de werking van microtime en kijk of de code van LuCarD wel werkt.

|_____vakje______|


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11:40

.oisyn

Moderator Devschuur®

Demotivational Speaker

Rotjeknor schreef op 07 augustus 2002 @ 00:03:
[...]Om dan toch ff offtopic spellchecking te doen: zelfde woord...


Ga alsjeblieft niet puur posten om de spelling te verbeteren, dat is nogal irritant. Geeft op zich niets als je het als een sidenote bij een normale ontopic post zet, maar ga niet alleen om die reden posten

Martink: misschien is het handig om wat meer tijd te besteden aan je reactie voordat je op de verstuur-knop ramt. Lees het nog 1 of 2 keer over om eventuele typefouten eruit te halen. Niet dat typefouten op zich zo'n ramp zijn, maar als het er veel zijn in 1 bericht leest dat heel irritant en zullen mensen je daardoor ook minder snel helpen (ja dat is echt zo). Ik weet niet of je dyslectisch bent of niet, maar copypaste het anders eens een keertje in word voordat je post, die haalt vrijwel alle spelfouten eruit

en hop, nu weer ontopic ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

PHP:
1
echo microtime () * 1000000


geeft 0 bij mij, hoor ;)

je seed elke keer met 0, dus krijg je elke keer de 1e uit dezelfde random reeks ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Yo-han
  • Registratie: December 2001
  • Laatst online: 08-07 11:19

Yo-han

nope.

deze werkt altijd!

PHP:
1
2
3
mt_srand((double)microtime() * 1000000);
$number = mt_rand(1,100);
echo $number;


mischien hier ff uit voort borduren (?)
Pagina: 1