Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Zufallsgenerator Funktion

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Zufallsgenerator Funktion

    Hallo,
    die folgende Funktion habe ich aus diesem Forum hier kopiert.
    Bei fast jedem mal wenn ich sie ausführe bekomme ich einen PHP Error: Uninitialized string ofset: 62 in ...
    Hier die Funktion:
    PHP-Code:
    function GenerateString($length 7) { 
    //Funktion zur Generierung eines zufälligen Passworts 

    $char_control  ""
    $chars_for_pw  "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    $chars_for_pw .= "0123456789"

    $chars_for_pw .= "abcdefghijklmnopqrstuvwxyz"
    srand((double) microtime() * 1000000); 
    for(
    $i=0;$i<$length;$i++) { 
    $number rand(0strlen($chars_for_pw)); 
    $char_control .= $chars_for_pw[$number]; 

                 
    return 
    $char_control


    auf dieser Zeile tritt der Fehler auf: $char_control .= $chars_for_pw[$number];

    Ich hoffe es kann mir jemand sagen woran das liegt und wie ich das wegbekomme
    MfG php10


  • #2
    Das Problem liegt in dieser Zeile:
    Code:
    $number = rand(0, strlen($chars_for_pw));
    strlen() generiert dir eine um 1 zu große Zahl.

    [edit]
    Der Aufruf von srand() ist im Übrigen laut Manual überflüssig.
    http://hallophp.de

    Kommentar


    • #3
      danke erstmal, wie bekomme ich diese 1 zahl noch weg???

      Kommentar


      • #4
        Zitat von php10 Beitrag anzeigen
        danke erstmal, wie bekomme ich diese 1 zahl noch weg???
        Wenn dir nicht klar ist, wie man eine simple Subtraktionsoperation in PHP durchführt, dann fang bitte schleunigst an, dich über die Grundlagen zu informieren:
        http://www.php.de/php-einsteiger/489...nsammlung.html

        Kommentar


        • #5
          Ich will aber keine Zahl oder keinen Buchstaben weg nehmen, es sind halt 62 Zeichen...

          Kommentar


          • #6
            Ja, aber das erste Element in einem Array findest du nun mal unter dem Index 0. Folglich wirst du bei 62 Elementen (Buchstaben) keinen Buchstaben unter dem Index 62 vorfinden.
            http://hallophp.de

            Kommentar


            • #7
              also er nimmt manchmal die 62, rand fängt bei 0 an und hört bei dem wert von strlen auf der immer 62 ergibt, weil 0 bei strlen gleich leer bedeutet, also muss ich einfach strlen($var)-1 und dann hauts hin, die anfangswertbestimmung mit srand brauche ich dann auch nicht hast du geschrieben

              Kommentar


              • #8
                Ja richtig.

                Kommentar


                • #9
                  super, es klappt
                  danke!

                  Kommentar

                  Lädt...
                  X