[PHP] Easy Passwordgenerator

01/12/2014 13:54 C0RE'#1
Hallo Leute, heute möchte ich euch meine Selbstprogrammierte Klasse vorstellen. Es handelt sich dabei um ein Passwort Generator.


Das benutzen der Klasse ist sehr einfach:

PHP Code:
include 'class.php';

$rd                     = new Passwordgenerator();
$rd->Length             10;
$rd->Specialcharacters  '#$"/';
$rd->Numbers            '0123456789';
$rd->Letters            'ABCDEFGHIJKLMQRSTUVWXYZabcdefghijklmnpqrstuvwxyz'
Wie hier gezeigt, könnt ihr die Länge, Sonderzeichen, Zahlen und Buchstaben selbst bestimmen.

Nun gibt es zwei Möglichkeiten ein / oder mehrere Passwörter zu generieren:

Die einfache Variante um ein Passwort auszugeben:
PHP Code:
echo $rd->generate(); 
Wenn ihr 10 Passwörter ausgeben wollt, einfach die Anzahl als Integer oder String als Argument eintragen:
PHP Code:
echo $rd->generate(10); 
Ich hoffe, es gefällt euch. Für Feedback und Kritik würde ich mich freuen.

Class.php:

Test.php:
01/14/2014 14:36 IchVerabschiedeMich#2
Hätte man das nicht einfach als einzelne Funktion schreiben können?

---

PHP Code:
$Chars  "$this->Specialcharacters$this->Numbers$this->Letters"
String Verkettung finde ich schöner

PHP Code:
if($this->Length == '')$this->Length 10
Würde ich wenn ohne klammern wenigstens unter einander machen.
Noch besser wäre einen Default wert bereits oben zu definieren.

PHP Code:
$results       .= implode($pass)."<br>"
Lieber nen Array erstellen, und diesen ausgeben - evtl. will jemand die Passwörter ja nicht ausgeben ;)
01/14/2014 17:15 C0RE'#3
Hey, danke erstmal für dein kleines Feedback b.z deine Korrektur.

Quote:
Originally Posted by Padrio View Post
Hätte man das nicht einfach als einzelne Funktion schreiben können?
Ich finde Klassen schöner :o
Quote:
Originally Posted by Padrio View Post
PHP Code:
$Chars  "$this->Specialcharacters$this->Numbers$this->Letters"
String Verkettung finde ich schöner
PHP Code:
$Chars  $this->Specialcharacters && $this->Numbers && $this->Letters
Hinzugefügt :rolleyes:
Quote:
Originally Posted by Padrio View Post
PHP Code:
if($this->Length == '')$this->Length 10
Würde ich wenn ohne klammern wenigstens unter einander machen.
Noch besser wäre einen Default wert bereits oben zu definieren.
Stimmt, default wäre natürlich am besten :)
Quote:
Originally Posted by Padrio View Post
PHP Code:
$results       .= implode($pass)."<br>"
Lieber nen Array erstellen, und diesen ausgeben - evtl. will jemand die Passwörter ja nicht ausgeben ;)
Joaaaaaaaaa, füge ich noch hinzu :)
01/14/2014 17:15 dowhile#4
Quote:
Hätte man das nicht einfach als einzelne Funktion schreiben können?
Wenn ich eine Klasse habe, die gerne Passwörter erzeugen möchte, es ihr aber egal ist, wie diese Passwörter erzeugt werden, kann ich der Klasse ein Objekt seines Passwort-Generators übergeben, so dass meine Klasse mit generate() immer irgendein Passwort bekommt.

Wäre das eine Funktion könnte ich den Algorithmus nicht austauschen und ich müsste meiner Klasse alle Parameter die für die Generierung des Passworts nötig sind übergeben, obwohl sich die Klasse ja eigentlich gar nicht dafür interessiert, wie diese aussehen.

Gegenfrage: Was spricht dagegen, das als eine Klasse zu schreiben?

Quote:
$Chars = $this->Specialcharacters && $this->Numbers && $this->Letters;
Man kann Zeichenketten mit einem logischen Und konkatenieren? (ernste Frage, das geht in PHP?)
01/14/2014 17:21 C0RE'#5
Hehe, habe es oben schon mit "Punkt" . gemacht ^^ War ein denkfehler von mir :(

Btw: Bin von der Ladezeit bei 10 Tausend Passwörtern erstaunt. Diese beträgt: 0.228 Sekunden :)
Nicht so, das man das irgendwie gebrauchen könnte :)

Außerdem beträgt die Ladezeit bei einem Passwort mir einer Länge von 100.000 Zeichen nur 0.235 Sekunden.

Sehr schwachsinnig da man dies im normalfall nicht macht.
01/18/2014 05:28 Lumi#6
Du könntest auch statt in die Variable die einzelne Buchstaben und Zahlen reinzuschreiben, einen array mit einer Funktion namens range() erstellen. Korrigiert mich, wenn ich falsche liege. Ansonsten nette Funktion. :)
01/18/2014 18:12 єтєяηιту#7
Danke sehr.
01/18/2014 18:15 IchVerabschiedeMich#8
Quote:
Originally Posted by ​Lumi View Post
Du könntest auch statt in die Variable die einzelne Buchstaben und Zahlen reinzuschreiben, einen array mit einer Funktion namens range() erstellen. Korrigiert mich, wenn ich falsche liege. Ansonsten nette Funktion. :)
Range kann aber keine Sonderzeichen generieren?
Ansonsten würde ich sie als vor definierten wert nehmen.
01/19/2014 19:40 Lumi#9
Quote:
Originally Posted by Padrio View Post
Range kann aber keine Sonderzeichen generieren?
Ansonsten würde ich sie als vor definierten wert nehmen.
Nein, von Sonderzeichen war hier auch nie die Rede.
01/21/2014 20:22 Sedrika#10
Ich finde es ein klein wenig umständlich von dir gelöst, kann man viel einfacher machen.

PHP Code:
public function GetRandomString$length 32 )
{
    
$retval '';
    
$string "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    
mt_srand( (double)microtime() * 1000000 );
    for( 
$i 1$i <= $length$i++ )
        
$retval .= substr$stringmt_rand0strlen$string ) -), );
    return 
$retval;

01/22/2014 14:14 C0RE'#11
Quote:
Originally Posted by Sedrika View Post
Ich finde es ein klein wenig umständlich von dir gelöst, kann man viel einfacher machen.

PHP Code:
public function GetRandomString$length 32 )
{
    
$retval '';
    
$string "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    
mt_srand( (double)microtime() * 1000000 );
    for( 
$i 1$i <= $length$i++ )
        
$retval .= substr$stringmt_rand0strlen$string ) -), );
    return 
$retval;

Mit dieser funktion kannst du höchstens 1 Passwort auf einmal generieren.

Ich habe es Benutzerfreundlich in eine Klasse geschrieben, jedoch danke für dein Feedback :rolleyes:
01/22/2014 14:46 IchVerabschiedeMich#12
Quote:
Originally Posted by C0RE' View Post
Mit dieser funktion kannst du höchstens 1 Passwort auf einmal generieren.

Ich habe es Benutzerfreundlich in eine Klasse geschrieben, jedoch danke für dein Feedback :rolleyes:
Führ die Funktion in einer For() schleife aus und du hast mehrere...
01/22/2014 15:10 Ravenstorm#13
*hust*
[Only registered and activated users can see links. Click Here To Register...]
*hust*

Eine Schleife drum rum und du hast das gleiche Ergebnis und es ist einfacher in ein controller zu packen.
01/23/2014 19:52 Sedrika#14
Quote:
Originally Posted by C0RE' View Post
Mit dieser funktion kannst du höchstens 1 Passwort auf einmal generieren.

Ich habe es Benutzerfreundlich in eine Klasse geschrieben, jedoch danke für dein Feedback :rolleyes:
Dann erweitert man diese kurz halt.

PHP Code:
public function GetRandomString$length 32$count )
{
    
$retval null;
    
$string "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    for( 
$j 0$j $count$j++ )
    {
        
mt_srand( (double)microtime() * 1000000 );
        for( 
$i 1$i <= $length$i++ )
        {
            
$retval[] = substr$stringmt_rand0strlen$string ) -), );
        }
    }
    return 
$retval;

Damit hast du das ganze schön in einem Array.