ich möchte mit php einen 20stelligen Zufallscode generieren. Der Code soll sich aus Groß- und Kleinbuchstaben sowie aus Zahlen zusammensetzen.
Ich weiß das die Funktion “rand” dabei vorkommt aber sonst bin ich völlig ratlos. Könnte mir vielleicht jemand einen fertigen Script geben?
//Der String $possible enthält alle Zeichen, die verwendet werden sollen
$possible="abcdefghiklmnpqrtuvwxyz1234567890";
$str="";
while(strlen($str)<$len) {
$str.=substr($possible,(rand()%(strlen($possible))),1);
}
function randomString($len) {
// Der teil hier bereitet den „zufall“ vor, er richtet sich nach der zeit (da gibts verschiedene möglichkeiten)
function make_seed(){
list($usec , $sec) = explode (’ ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
srand(make_seed());
//Der String $possible enthält alle Zeichen, die verwendet werden sollen
$possible="abcdefghiklmnpqrtuvwxyz1234567890";
// Dein zufallsstring
$str=„“;
//solange der kürzer ist, wie die angegebene länge $len…
while(strlen($str)<$len) {
// hänge hinten dran:
// substr holt einen buchstabena us dem string $possible, von der stelle rand()%(strlen($possible)) mit der länge 1 - also einen buchstaben, wäre die letzte zahl 2, würde er jedesmal um cd oder hi oder so länger werden.
$str.=substr($possible,(rand()%(strlen($possible))),1);
}
return($str);
}
Wenn man nur ein einzelnes Zeichen aus dem String haben will, kann man sich dieses auch direkt (ohne extra Funktion) holen:
[code]$str .= $possible[ rand() % strlen($possible) ];[/code]
Das hat den gleichen effekt ist aber etwas kürzer :wink:
Nachteil: wenn man nicht aufpasst kann man $possible für ein Array halten.
Wenn man nur ein einzelnes Zeichen aus dem String haben will, kann man sich dieses auch direkt (ohne extra Funktion) holen:
Das hat den gleichen effekt ist aber etwas kürzer
Nachteil: wenn man nicht aufpasst kann man $possible für ein Array halten.
in Anbetracht dessen das PHP C/++ like ist, ist es net so abwegig…
aber geht es tatsächlich in PHP bei nem normalen String via Index nen Char zu erhalten?
Weiß net ob ichs jeh gewusst hab bzw. genutzt hab… hast du es getestet?
PS: nen String ist ein Array Nen Char Array Oder auch Byte/Int Array. Nur net jede Sprache lässt sowas zu.
Man kann auch {} statt [] verwenden (also $foo{13}), allerdings ist diese Variante laut oben genannter Quelle ab PHP 6 deprecated, es ist also besser, wenn man sie sich erst gar nicht angewöhnt.
Im Endeffekt (oder besser im Anfangsprefekt?) ist ein String schließlich nur ein Char-Array und daher ist diese Methode, auf ein Zeichen zuzugreifen, ein Überbleibsel aus vergangeneren Zeiten, das man wohl liebgewonnen hatte.