Zeichenkette zufällig erzeugen

imagine

Grünschnabel
Hi!

Mit der Suche wurde ich leider nicht fündig, deshalb hier meine Frage:

Ist es möglich mit PHP eine zufallsgenerierte, 8-stellige Zeichenkette(aus Zahlen und Buchstaben) zu erzeugen? Wenn ja, wie?

Vielen Dank, MFG
imagine
 
Ich gebe Dir mal eine Function zum generieren eines PW

Dazu musst Du die Mindestlänge und maximal Länge angeben.

PHP:
function pw_gen($min,$max){
#
#   Anzahl der Werte definieren
	define( "_WEIGHT_NUMERIC_", 3 ); //3 Zahlen im PW
	define( "_WEIGHT_LOWER_", 1 ); // Je Klein Buchstabe nur 1x
	define( "_WEIGHT_UPPER_", 1 ); // Je Gross Buchstabe nur 1x
#
#   ASCII Werte definieren
	define( "_OFFSET_NUMERIC_", 48 );
	define( "_OFFSET_UPPER_CASE_", 65 );
	define( "_OFFSET_LOWER_CASE_", 97 );
#
#
	$pw = "";
#
	// Kleinbuschstaben ermitteln
	for( $weight = 0; $weight < _WEIGHT_LOWER_; $weight++ ) {
		for( $i = 0; $i <= 25; $i++ ) {
			$lower[] = $i + _OFFSET_LOWER_CASE_;
		}
	}
#
	// Grossbuschtaben ermitteln
    for( $weight = 0; $weight < _WEIGHT_UPPER_; $weight++ ) {
	    for( $i = 0; $i <= 25; $i++ ) {
            $upper[] = $i + _OFFSET_UPPER_CASE_;
	    }
	}
#
    // Zahlen ermitteln (3x)
    for( $weight = 0; $weight < _WEIGHT_NUMERIC_; $weight++ ) {
	    for( $i = 0; $i <= 9; $i++ ) {
            $num[] = $i + _OFFSET_NUMERIC_;
	    }
	}
#
#   // Array zusammenführen
	$ar_alnum = array_merge( $lower,$upper, $num );
#
#   // Array mischen
	shuffle( $ar_alnum );
#
#
	$ar_min = 0;
    $ar_max = count($ar_alnum) - 1;
#
    // interne Zufallszahl für mt_rand festlegen
    mt_srand( (double) microtime() * 1000000 );
#
    if( $min == $max ) {
	    $len = $max;
	} else {
	    $len = mt_rand( $min, $max ); // Zufällige Länge festlegen
	}
#
    for( $i = 0; $i < $len; $i++ ) {
        $randval =  mt_rand( $ar_min, $ar_max ); //Zufallszahl ermitteln
		$pw .= chr( $ar_alnum[$randval] ); //Element nach Zufallszahl ausgeben
	}
return $pw;
}
?>
 
umständlicher gehts nich? :P

PHP:
function random($laenge) { 
	$zeichen = "abcdefghijklnmopqrstuvwxyzABCDEFGHIJKLNMOPQRSTUVWXYZ0123456789";
	$kette = ""; 

	mt_srand ((double) microtime() * 1000000); 
	for ($i = 0; $i < $laenge; $i++) { 
		$kette .= $zeichen{mt_rand (0,strlen($zeichen))}; 
	} 
	return $kette; 
}

is doch einfacher und kürzer o_O
 
Zurück