Gå til innhold

Laster tregt


Anbefalte innlegg

Siden min vil ikke fungere pga. denne funksjonen (laster til time-limit.)

 

function randomcode($len="8") {
$code = NULL;
for($i=0;$i<$len;$i++) {
$char = chr(rand(48,122));
while(!preg_match("[a-zA-Z0-9]", $char)) {
if($char == $lchar) { continue; }
$char = chr(rand(48,90));
}
$pass .= $char;
$lchar = $char;
}
return $pass;
}

 

Forklaring på det? Det er forresten gammel kode fra 2005.

Endret av winter2012
Lenke til kommentar
Videoannonse
Annonse

Jeg har ingen god forklaring på akkurat hvorfor scriptet ditt bruker så lang tid på å gjøre seg ferdig. Mitt guess er at randomkoden du har laget (rand og char) på en eller annen måte lager en unødvendig stor loop fordi den velger karakterer som ikke er gyldig.

 

Jeg har skrevet om koden din til følgende:

 

 

<?php
function randomcode($len="8") {
   $code = '';
   $chars = array(
    'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
    'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
    '0','1','2','3','4','5','6','7','8','9');

   while (strlen($code) <= $len) {
    $code .= $chars[rand(0,(count($chars)-1))];
   }

   return $code;
}
echo randomcode(20);
?>

 

Den gjør seg ferdig på noen millisekunder og jeg tror den har akkurat den samme funksjonaliteten som den originale koden du postet.

Lenke til kommentar

Øverst har du brukt variablen "code", mens sebere bruker du "pass". Jeg antar disse er ment til å være samme variabel. Det er en feil i koden i hvertfall.

 

Det neste er at pragmatchen din alltid er false, selv for verdier som er riktige. Så du kommer aldri ut av for-loopen. Du har rett og slett glemt en skrå-strek før og etter utrykket.

 

<?php
function randomcode($len="8") {
   $pass = "";
   for($i=0;$i<$len;$i++) {
    $char = chr(rand(48,122));
    while(!preg_match("/[a-zA-Z0-9]/", $char)) {
	    if($char == $lchar)
		    continue;
	    $char = chr(rand(48,122));
    }
    $pass .= $char;
    $lchar = $char;
   }
   return $pass;
}
echo randomcode();
?>

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...