Finde Fehler nicht ...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Finde Fehler nicht ...

    Sry für den "Aussagekräftigen" Betreff, aber mir ist kein anderer eingefallen.

    Ich habe folgenden Codeschnipsel geschrieben, aber es wird nichts ausgegeben .
    Es soll zufällige Zeichenfolgen aus einer Zeichenliste erstellen.
    Allerdings nur 10 Sekunden.

    PHP-Code:
    <?php
    $start 
    microtime(true);
    $chars 'abcdefghijklmnopqrstuvwxyz0123456789 !#$%&()*+,-.:<=>?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    while(
    microtime(true) - $start 10) {
            
    srand(microtime()*100);
        
    $c1 strval($chars[rand(190)]);
        
    $c2 strval($chars[rand(190)]);
        
    $c3 strval($chars[rand(190)]);
        
    $c4 strval($chars[rand(190)]);
        
    $c5 strval($chars[rand(190)]);
        
    $c6 strval($chars[rand(190)]);
        
    $c7 strval($chars[rand(190)]);
        
    $c8 strval($chars[rand(190)]);
        
    $l rand(1,8);
        
    $txt $c1.$c2.$c3.$c4.$c5.$c6.$c7.$c8."/r";
        
    $txt substr($txt0$l);
        echo 
    $txt;    
    }
    ?>
    Edit: Fehler gefunden, es wird aber:
    Code:
    Z@pe Z@pe GDSG GDSG....
    ausgegeben.
    Wie kann ich die Ausgabe ein wenig "zufälliger" gestalten?
    Zuletzt geändert von DerSchonWieder; 09.03.2008, 00:38.

  • #2
    Warum nicht unique id mit md5 verschlüsseln und kürzen?
    Haste ne Zeichenkette aus buchstaben und zahlen (reicht ja eigentlich)..

    Kommt eben auf den Sinn am Ende an..

    Kommentar


    • #3
      Also als 1. würde ich erstmal die Bedingung in der While-Schleife ändern. Sowas macht nicht viel Sinn. Überlege dir lieber, wieviel Buchstaben/Zeichen du insgesamt haben willst und lasse die Schleife entsprechend oft durchlaufen.

      Dann schau dir mal mt_rand an. Dort findest du auch, dass du das srand() garnicht mehr brauchst.
      Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
      var_dump(), print_r(), debug_backtrace und echo.
      Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
      Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
      Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

      Kommentar


      • #4
        So, ich möchte eine MD5-Datenbank erstellen.
        ...Ich weiß, es gibt viele solcher...Ist aber einfach nur ein Fun-Projekt.

        Das Script wird dann per Cronjob aufgerufen und dann trägt es die Daten in der DB ein.

        Ich habs jetzt so gelöst
        PHP-Code:
        <?php
        ini_set
        ('max_execution_time','1200');
        $chars 'abcdefghijklmnopqrstuvwxyz0123456789 !#$%&()*+,-.:<=>?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $mysqlhost='localhost';
        $mysqluser='web485';
        $mysqlpwd='lILBe8WG';
        $mysqldb='usr_web485_1';
        $connection=mysqli_connect($mysqlhost$mysqluser$mysqlpwd$mysqldb) or die('fehler beim verbinden');

        $x 1;
        while(
        $x 1) {
            
        $c1 strval($chars[mt_rand(190)]);
            
        $c2 strval($chars[mt_rand(190)]);
            
        $c3 strval($chars[mt_rand(190)]);
            
        $c4 strval($chars[mt_rand(190)]);
            
        $c5 strval($chars[mt_rand(190)]);
            
        $c6 strval($chars[mt_rand(190)]);
            
        $c7 strval($chars[mt_rand(190)]);
            
        $c8 strval($chars[mt_rand(190)]);
            
        $l mt_rand(1,8);
            
        $txt $c1.$c2.$c3.$c4.$c5.$c6.$c7.$c8."/r";
            
        $txt substr($txt0$l);
            
        $hash md5($hash);  
            
        mysqli_query($connection'INSERT INTO `hashes` (`str`, `hash`, `lenght`) VALUES (\''.$txt.'\', \''.$hash.'\', '.$l.'); '."\n");
        }
        mysqli_close($connection);

        ?>
        Zuletzt geändert von DerSchonWieder; 09.03.2008, 12:49.

        Kommentar


        • #5
          Hallo,

          dir ist schon klar, dass du mit while ($x = 1) eine Endlosschleife erzeugst, oder?

          Und selbst wenn du es mit so einer Schleife machen möchtest - das würde ich nicht, da gibt es doch viel bessere Möglichkeiten, so eine "Datenbank" aufzubauen - dann würde ich mir mal die EXTENDED-Inserts von mySQL anschauen. Damit kannst du viele Datensätze mit nur einer Query einfügen, hier hast du pro Schleifendurchlauf 1 - und das drückt den SQL-Server irgendwann in die Knie, vor allem, weil die Schleife endlos läuft.
          Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
          var_dump(), print_r(), debug_backtrace und echo.
          Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
          Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
          Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

          Kommentar


          • #6
            Richtig,
            es soll ja eine Endlosschleife erzeugt werden.
            Irgendwas bricht es dann ab (nach 10min).
            Ich nehme absichtlich pro Insert einen Query.

            Das Feld MD5 ist als Unique gekennzeichnet.
            Wenn ich nun alles in einen Query packe und dann ein Hash schon in der Tabelle drinn ist, bricht es mit einen Fehler ab->Es werden nicht alle Datensätze eingefügt.

            ...
            cu.

            Kommentar

            Lädt...
            X