[PHP]Zufälliges Passwort

Gsus

schwankend^^
ID: 215354
L
22 Mai 2006
1.553
68
moin,
ich habe mal wieder ein problem und zwar möchte ich ein zufälliges passwort generieren und dieses in einer variablen sspeichern. auf www.php-einfach.de habe ich dazu folgenden code gefunden:
PHP:
<?php 
function rand_string($lng) 
   { 
   mt_srand((double)microtime()*1000000); 

   //Welche Buchstaben benutzt werden sollen (Charset) 
   $buchstaben = "abcdefghijkmnpqrstuvwxyz123456789"; 
    
   $str_lng = strlen($buchstaben)-1; 
   $rand= ""; 

   for($i=0;$i<$lng;$i++)         
      $rand.= $buchstaben{mt_rand(0, $str_lng)}; 
       

   return $rand; 
   } 
?>
doch der gibt nix aus und wie kann ich die ausgabe dann in einer variablen speichern? ich hoffe ihr habt das problem verstanden...
mfg
 
Gsus schrieb:
doch der gibt nix aus [...]
Siehst du ein echo im Code ? ;)
Gsus schrieb:
[...]und wie kann ich die ausgabe dann in einer variablen speichern?
Weise den Funktionsrückgabewert einfach einer Variablen zu:
PHP:
$my_pw=rand_string(10);
Ich lege dir nahe, das Manual nochmal eingehend zu studieren und wenigstens die Grundzüge der Sprache PHP zu lernen :roll:
 
jo thx *peinlich peinlich*...

man es kann doch jeder mal nen Blackout haben und sonen scheiss übersehen ich bin grad back aus mallorca vor 1h gelandet... xD
 
Gsus schrieb:
jo thx *peinlich peinlich*...

man es kann doch jeder mal nen Blackout haben und sonen scheiss übersehen ich bin grad back aus mallorca vor 1h gelandet... xD
Erm ich glaub das hat nix mit Blackout sondern mehr mit nicht wissen zu tun. Lies es einfach nach und gut ist. Rechtfertigen musst du das nichtmal.
 
Wäre evtl so auch einfacher zu realisieren

PHP:
$array = array("a","b","c","d","e","f","g","h");
$passwort = ''; //string
while(strlen($passwort) < 5) {
	$passwort .= $array[rand(1,count($array) -  1)];
}
 
ABC schrieb:
Wäre evtl so auch einfacher zu realisieren

PHP:
$array = array("a","b","c","d","e","f","g","h");
$passwort = ''; //string
while(strlen($passwort) < 5) {
	$passwort .= $array[rand(1,count($array) -  1)];
}

Aber auch nur wenn man viel Zeit damit verbringen möchte alle Buchstaben ins Array einzutragen.
Wenn du bei der andern Funktion etwas an der Random-Bauweise veränderst ist es fast das Gleiche, nur halt auf diesen kleinen Unterschied der aber viel Zeit kosten kann ...
 
ABC schrieb:
Wäre evtl so auch einfacher zu realisieren

PHP:
$array = array("a","b","c","d","e","f","g","h");
$passwort = ''; //string
while(strlen($passwort) < 5) {
	$passwort .= $array[rand(1,count($array) -  1)];
}
Guckst du hier:
PHP:
echo substr(md5(microtime()),1,5);
:mrgreen:
 
Ein Passwort mit 5 Zeichen, welches nur aus a-f und 1-9 besteht? :ugly:

Ansonsten weis ich nicht was ihr gegen die Funktion habt, sie dürfte recht schnell sein und lässt sich hübsch Anpassen. Ich frag mich bloss warum die Länge als Parameter übergeben wird und der Buchstaben Pool ned aber ok ;)
 
ABC schrieb:
Wäre evtl so auch einfacher zu realisieren

PHP:
$array = array("a","b","c","d","e","f","g","h");
$passwort = ''; //string
while(strlen($passwort) < 5) {
	$passwort .= $array[rand(1,count($array) -  1)];
}

das array muss ja net unbedingt nen array sein, nen String tuts in dem fall genauso, und die funktion ist wirklich viel schöner und übersichtlicher als die andere :)
 
Nabend,
hätte da auch noch nen vorschlag zum thema falls noch aktuell. Die folgende funktion erstellt mir die trenncodes für meine massenmails(is im prinzip dasselbe wie ein passwort nur länger).

PHP:
function code($l = 6, $co = ''){ // <- länge und codebegin
	$ch='azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789';
	$max = strlen($ch)-1;
	for($i = 0; $i < $l; $i++) {  $co .= $ch{mt_rand(0, $max)}; }
	return preg_replace('/\s+/', '', $co);
}

echo code(6);
Hoffe das hilft weiter.
mfg
 
Moin,
hier mal meine "alte" Funktion.

PHP:
  function password($length = 8)
    {
      $sign = array_merge(range("0", "9"), range("a", "z"), range("A", "Z"));
      for($i = 1; $i <= $length; $i++)
        {
          $signs .= $sign[array_rand($sign)];
        }
      return $signs;
    }
  while($i++ < 30)
    {
      echo("<input type=\"text\" value=\"".password(32)."\" size=\"50\"></input>\n");
    }
 
Die erste Funktion, ganz oben, wo man ein Buchstabenset hat, ist doch schon gut ;)

Und weil es so schön ist, hier noch eine von vielen Möglichkeiten: :ugly:
PHP:
function rand_pass($lng=8, $set='abcdefghijkmnpqrstuvwxyz0123456789') {
	mt_srand((double)microtime()*1000000);
	$rand='';
	$setlen=strlen($set)-1;
	for($i=0;$i<$lng;$i++) $rand.= $set[mt_rand(0, $setlen)];
	return $rand;
}