von Stephan Steege
Ein Script erzeugt Zufallskombinationen aus Ziffern und Großbuchstaben, zum Beispiel 591BUF7GS5 oder LTOBT2AFM3. Solche Codes werden in der Praxis vielfältig eingesetzt. Wo kommen die Codes her?
Wenn Dutzende, Hunderte, Tausende davon gebraucht werden, ist niemandem zuzumuten, sich jeden einzelnen auszudenken und einzutippen. Die Codes werden also maschinell erzeugt. Dazu wird ein Script benutzt.
Jeder Großbuchstabe und jede Ziffer entspricht einem ASCII-Code. Die Ziffern 0 bis 9 im Bereich zwischen ASCII 48 bis 57, die Großbuchstaben im Bereich zwischen 65 bis 90. Jedes Zeichen des Codes muss also in einem dieser beiden Bereiche liegen.
In unseren Beispielen enthält jeder Code 10 Zeichen. Am Anfang hat der Code jeweils 0 Zeichen. Jedes Zeichen des Codes wird nun einzeln per Zufallsgenerator erzeugt und dann an den Code angefügt. Das wird in einer Schleife solange wiederholt, bis die Zeichenkette die gewünschte Anzahl Zeichen enthält (in unseren Beispielen 10 Zeichen).
Die Vorgehensweise:
- Erzeugen einer Zufallszahl zwischen 0 und 1
- Multiplizieren mit 42 (das ist die Anzahl der Zeichen zwischen ASCII-Code 48 und 90)
- Bilden einer Ganzzahl ohne Kommastellen
- Addieren zu 48, damit der niedrigste Zielwert 48 ist (das erste erlaubte Zeichen)
- Die ASCII-Codes 58 bis 64 vermeiden. Dazu wird eine Schleife durchlaufen. Falls das Ergebnis der bisherigen Berechnung ein Wert zwischen 58 und 64 ist, wird die Schleife solange weiter durchlaufen, bis ein Ergebnis im „erlaubten“ Bereich liegt (48 bis 57 oder 65 bis 90)
- Umwandeln des ASCII-Codes in ein Zeichen (0 bis 9 oder A bis Z)
- Anfügen des Ergebnis-Zeichens an die Zeichenkette
- Die Schritte 1 bis 7 werden in einer Schleife so oft wiederholt, bis die Zeichenkette die gewünschte Länge erreicht hat (die gewünschte Länge ist die im Parameter „LaengeZufallscode“ übergebene Zahl).
Unser Script ist einmal in Javascript geschrieben und dann noch einmal in PHP. Beide Varianten haben ihre Vorteile und fuktionieren separat.
Zunächst die Variante in Javascript. Hier wird ein HTML-Formular mit einem Button erzeugt. Wenn man auf den Button klickt, wird eine Javascript-Funktion ausgeführt, die einen Zufallscode in den beschriebenen Schritten erzeugt.
Dieser Zufallscode wird dann als Meldung ausgegeben.
Der Quellcode:
<! – Beginn des HTML-Rahmen-Codes – > <form name="formular"> <! – öffnen eines Formulars (um einen Button anzuzeigen) – > <input name="button" type="button" onClick="fZufallsCode(10);" value="Zufallscode erzeugen"> <! – Bei Klick auf den Button mit der Aufschrift Zufallscode erzeugen wird die Javascript-Funktion fZufallscode() ausgeführt. Das Argument 10 bedeutet, dass ein Code mit 10 Zeichen Länge erzeugt werden soll. Wenn der Code mehr oder weniger >Zeichen enthalten soll: einfach eine andere Zahl an die Funktion übergeben – > </form> <! – Abschliessen der Form – > <! – Ende des HTML-Rahmen-Codes – > <script language="JavaScript"> <! – Es folgt der Javascript-Code für die Funktion fZufallsCode. – > function fZufallsCode(LaengeZufallscode) { // Initialisieren der Variablen: var Zufallscode = ''; var LaengeAktuell = 0; var Zufallszahl; var Ganzzahl; var chrWert; var Zeichen; while (LaengeAktuell < LaengeZufallscode) { <! – Schleife für jedes Zeichen des Codes durchlaufen, /* bis der Zufallscode die vorgegebene Anzahl Zeichen enthält – > */ chrWert = 0; <! – chrWert = 0 voreinstellen, damit die Schleife durchlaufen wird – > while (chrWert == 0 || (chrWert > 57 && chrWert < 65) ) { <! – Schleife zum Vermeiden des Zahlenbereichs 58 bis 64 /* Sie stellt sicher, dass kein Zeichen 0 oder Zeichen aus dem Bereich chr(58) bis chr(64) gewählt werden. Dazu wird die Schleife solange durchlaufen, bis ein Zeichen ausserhalb dieses Bereichs entsteht. – > */ Zufallszahl = Math.random(); <! – Math.random gibt eine Zufallszahl zwischen 0 und 1 zurück – > Ganzzahl = Math.floor(Zufallszahl*42); <! – Die Zufallszahl wird mit 42 multipliziert /* und die Nachkommastellen abgeschnitten (math(floor) So entsteht eine Ganzzahl, minimal 0, maximal 42. – > */ chrWert = Ganzzahl + 48; <! – Die Ganzzahl wird zu 48 addiert. /* So ergibt sich: minimal 0 + 48 = 48, der Ascii-Code des Zeichens 0 maximal 42 + 48 = 90, der Ascii-Code des Zeichens Z – > */ } <! – Ende der Schleife zum Vermeiden des Zahlenbereichs 57 bis 65 – >
Jetzt die Variante in PHP. Der Kern, nämlich die Funktion zum Erzeugen des Zufallscodes, arbeitet in den gleichen Schritten wie die oben beschriebene Javascript-Funktion:
function fZufallsCode($LaengeZufallscode) { $Zufallscode = ''; $LaengeAktuell = 0; while ($LaengeAktuell < $LaengeZufallscode) { $chrWert = 0; $Zufallszahl = 2; while ($chrWert == 0 or ($chrWert > 57 and $chrWert < 65) ) { $Zufallszahl = rand(1,100)/100; $Ganzzahl = floor($Zufallszahl*42); $chrWert = $Ganzzahl + 48; } $Zeichen = chr($chrWert); $Zufallscode = $Zufallscode.$Zeichen; $LaengeAktuell++ } return $Zufallscode; }
Im folgenden Beispiel wird diese Funktion eingebettet in ein „Rahmenprogramm“. In einer Schleife wird eine Liste x-stelliger Codes erzeugt und schließlich in eine Textdatei geschrieben. Diese Textdatei kann dann von anderen Programmmodulen weiterverabeitet werden.
Dazu wird die oben beschriebene PHP-Version wie folgt erweitert:
57 and $chrWert < 65) ) { // Beginn der Schleife zum Vermeiden des nicht erlaubten Bereiches // sie wird solange wiederholt, // wie der durch Zufall berechnete chrWert im nicht erlaubten Bereich liegt $Zufallszahl = rand(1,100)/100; // rand(1, 100) ermittelt eine Zufallszahl zwischen 1 und 100 // das Ergebnis wird durch 100 dividiert, // damit eine Zufallszahl zwischen 0 und 1 entsteht, // analog zu dem Javascript-Beispiel oben $Ganzzahl = floor($Zufallszahl*42); // floor() schneidet die Nachkommastellen ab $chrWert = $Ganzzahl + 48; // Addieren + 48, damit die kleinste mögliche Zahl 48 ist } // der Schleife zum Vermeiden des nicht erlaubten Bereiches $Zeichen = chr($chrWert); // Umwandeln der Ganzzahl in ein Zeichen $Zufallscode = $Zufallscode.$Zeichen; // Anhängen des Zeichens an den bisher schon gebildeten Code $LaengeAktuell++ // Schleifenzähler erhöhen } // Ende der Schleife zum Erzeugen des Zufallscodes return $Zufallscode; // übergabe des Zufallscodes an die Variable } ?>
Wie hilfreich war dieser Beitrag?
Klicke auf die Sterne um zu bewerten!
Durchschnittliche Bewertung 0 / 5. Anzahl Bewertungen: 0