un Forastero  <Webworking>


wir basteln uns eine Funktion für Zufallswörter

Samstag, 13 Juni 2009   





das wichtigste für Zufallswörtern sind die Zeichen, die Anzahl derer, und natürlich der Zufall. Letzeres bietet PHP in Form der Funktion rand(). Diese Funktion erwartet 2 Parameter, 2 Zahlen, die einen Bereich abstecken. Innerhalb dieser Grenzen spuckt rand() eine zufällige Zahl aus.

<?php
echo rand(0,12);
?>

Die Anzahl der Zeichen, die unser Zufallswort haben soll, schreiben wir in eine Variable. Die Zeichen selbst, die wir verwenden wollen, stecken wir in ein Array.

<?php
$anzahl_zeichen =10;
$verwendbare_zeichen= array("a","b","c","d","e");
?>

Da wir ein Zufallswort haben möchten, mit genau 10 Zeichen, durchlaufen wir eine Schleife, ja, genau, 10mal. In jedem Schleifendurchlauf führen wir die Zufallsfunktion rand() einmal aus. Die Parameter, die wir verwenden, ergeben sich aus dem Array $verwendbare_zeichen. Die Nummerierung der einzelnen Array-Elemente beginnt bei 0. Das ist unser 1. Parameter. Die Gesamtanzahl aller im Array vorhandenen Elemente verrät uns die Funktion count(). Weil die Nummerierung aber bei 0 beginnt, ziehen wir von der Gesamtanzahl Array-Elemente 1 wieder ab.

<?php

$startwert=0;
$gesamtanzahl =count($verwendbare_zeichen);
$endwert=$gesamtanzahl-1;

// und hier die Schleife

$zufallsziffern='';

for($i=1; $i<=10; $i++) {
$zufallszahl=rand($startwert,$endwert);
$zufallsziffern .= $verwendbare_zeichen[$zufallszahl];
}

echo $zufallsziffern;
?>

Die Schleife durchlaufen wir, wie gesagt, 10mal. Wir ermitteln eine Zufallszahl. Das Array $verwendbare_zeichen gibt uns an der Stelle der Zufallszahl einen Buchstaben oder eine Ziffer aus. Das ist dieser Ausdruck $verwendbare_zeichen[$zufallszahl]. Damit wir das so ermittelte Zeichen zwischenspeichern können, definieren wir eine Variable $zufallsziffern. Damit immer wieder eine neue Ziffer in die Variable dazu geschrieben werden kann, ist vor dem Gleichheitszeichen ein Punkt notiert. (Fehlt der Punkt, würde die Variable immer wieder mit der neu ermittelten Ziffer überschrieben, bis der Schleifendurchlauf beendet ist, das wollen wir aber nicht).

Nun müssen wir noch eine Funktion daraus machen. Das Schema ist folgendes:

<?php
function zufallswort(){
// hier passiert was, das in die Variable $ergebnis geschrieben wird
return $ergebnis;
}

// der Funktionsaufruf
echo zufallswort();
?>

Mit dem vorher zusammengeschrieben Code ergibt sich dann folgende Funktion

<?php
function zufallswort(){
$anzahl_zeichen =10;
$verwendbare_zeichen= array("a","b","c","d","e");
$startwert=0;
$gesamtanzahl =count($verwendbare_zeichen);
$endwert=$gesamtanzahl-1;

$zufallsziffern='';

for($i=1; $i<=10; $i++) {
$zufallszahl=rand($startwert,$endwert);
$zufallsziffern .= $verwendbare_zeichen[$zufallszahl];
}


return $zufallsziffern;
}

// der Funktionsaufruf
echo zufallswort();
?>

Die Funktion können wir noch variabler gestalten. Die Zeichenanzahl für das Zufallswort (hier: 10) muss nicht fest in der Funktion stecken. Besser wäre es, wenn beim Funktionsaufruf gleich bestimmt werden soll, wieviele Zeichen das Zufallswort jeweils haben soll.

<?php
function zufallswort($anzahl_zeichen){
// hier passiert was, das in die Variable $ergebnis geschrieben wird
return $ergebnis;
}

// der Funktionsaufruf
echo zufallswort(10);
// oder mal
echo zufallswort(15);
?>

Das hat Änderungen an unserem Code zur Folge. $anzahl_zeichen =10; fällt weg, da wir die Zahl in den Funktionsauruf gepackt haben. Die 10 taucht an an anderer Stelle auf, in der Schleife, for($i=1; $i<=10; $i++) Dort schreiben wir einfach die Variable $anzahl_zeichen hinein, also die Variable, welche wir an die Funktion übergeben.

<?php
function zufallswort($anzahl_zeichen){
$verwendbare_zeichen= array("a","b","c","d","e");
$startwert=0;
$gesamtanzahl =count($verwendbare_zeichen);
$endwert=$gesamtanzahl-1;

$zufallsziffern='';

for($i=1; $i<=$anzahl_zeichen; $i++) {
$zufallszahl=rand($startwert,$endwert);
$zufallsziffern .= $verwendbare_zeichen[$zufallszahl];
}


return $zufallsziffern;
}

// der Funktionsaufruf
echo zufallswort(12);
?>

Das Spielchen könnte man mit den zu verwendenden Zeichen auch machen. Man packt das Array in die Parameterübergabe der Funktion, bzw. den Funktionsaufruf. Das darf jeder selber machen, wenn er das möchte. Im übrigen, wen man Groß- und Kleinbuchstaben und auch Zahlen verwendet, kann man prima Passwörter damit generieren. Und solche Passwörter, sind garantiert nicht zu erraten.

Download: Und hier die fertige Funktion "Zufallswörter" zum Herunterladen. (zip, 4KB)





Kommentare

es gibt insgesamt 0 Kommentar(e)



Name*
Vorname
Kommentar*
Email
Homepage
Telefon
Sicherheitscode *
 


This is a nested column

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

This is another nested column

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.