Pass / key / wachtwoord generator

Door PHP Newbie, 15 jaar geleden, 3.973x bekeken

Met deze functie kun je een random wachtwoord genereren. Je kunt kiezen of je alleen kleine letters wilt, of je er ook hoofdletters bij wilt, of je er ook cijfers bij wilt en de lengte.

Het is op zich een simpele functie, maar ik dacht zelf: klein maar fijn. Gebruik hem zelf regelmatig en bevalt me prima.

Gesponsorde koppelingen

PHP script bestanden

  1. pass-key-wachtwoord-generator

 

Er zijn 18 reacties op 'Pass key wachtwoord generator'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Paul K
Paul K
15 jaar geleden
 
0 +1 -0 -1
Ziet er netjes uit, mooi gescript


15 jaar geleden
 
0 +1 -0 -1
Nu nog ë ï © e.d. toevoegen voor een extra veilig wachtwoord. Maar ziet er goed uit.
Menno
menno
15 jaar geleden
 
0 +1 -0 -1
nee dat moet je juist niet doen
dat is ongebruiksvriendelijk
niet iedereen weetn hoe je die karakters moet typen met het toetsenbord

zeker mensen die onhandig zijn met de pc niet :P
Ponzi
Ponzi
15 jaar geleden
 
0 +1 -0 -1
@ menno: het kan wel handig zijn als het slechts een verificatiesleutel is voor het activeren van een account ofzo. Dan moeten gebruikers die normaal niet zelf typen, maar geef je hem door via de URL.
K i p
K i p
15 jaar geleden
 
0 +1 -0 -1
Het is misschien miereneukerig, maar vanaf $karakters [ 72 ] krijg je notices.

Ik heb het dus zo getest:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
    error_reporting ( E_ALL );
    
    function
maakpass($lengte, $cijfers = true, $hoofletters = true)
    {

        # Als hoofdletters true is, zetten we hoofdletters in de array, anders alleen kleine letters
        $karakters = $hoofletters == true ? array_merge ( range ( 'A' , 'Z' ) , range ( 'a' ,  'z' ) ) : range('a', 'z');
        
        # Als cijfers true is, zetten we cijfers bij de array (2x zodat er wat meer cijfers in komen), anders houden we de array zoals hij was
        $karakters = $cijfers == true ? array_merge ( $karakters , range ( 0 , 9), range ( 0 , 9 ) ) : $karakters;
        
        # Maak een variabele aan voor het pass
        $pass = null;
        
        # Grootte van array is …
        $grootte = count ( $karakters );
        
        # Maak een loop die net zo lang doorgaat tot het aantal karakters van het pass bereikt is
        for( $i = 0 , $max = $grootte - 1 ; $i < $lengte ; $i ++ )
            # Voeg een letter uit de array aan het pass toe
            $pass .= $karakters [ rand ( 0 , $max ) ];
        
        # Geef het pass terug
        return $pass;
    }

    
    # Een pass van 10 karakters zonder hoofdletters en zonder cijfers
    echo maakpass ( 10 , false , false ) , ' <br />';
    
    # Een pass van 10 karakters met hoofdletters, kleine letters, maar zonder cijfers
    echo maakpass ( 10 , false ) , ' <br />';
    
    # Een pass van 15 karakters met hoofdletters en cijfers
    echo maakpass ( 15 ) , ' <br />';
    
    # Een testje voor een iets langere
    echo maakpass ( 75 ) , ' <br />';
?>
Hipska BE
Hipska BE
15 jaar geleden
 
0 +1 -0 -1
ja boris, misschien moest je wel . ipv , gebruiken bij je echo's :p
Woopie100
Woopie100
15 jaar geleden
 
0 +1 -0 -1
Even een vraagje?
Zou je dit met oop moeten/kunnen doen?
Rudie dirkx
rudie dirkx
15 jaar geleden
 
0 +1 -0 -1
Meer OOP dan dit wordt het niet. Het zijn 6 regels code. Dat is sowieso niet spannend. Een kleine functie kan je er van maken, maar ga het niet overdrijven
Jan Veenstra
Jan Veenstra
15 jaar geleden
 
0 +1 -0 -1
hihi grappig:P
Teun Beijers
Teun Beijers
15 jaar geleden
 
0 +1 -0 -1
Het kan wel met classes(ik denk dat Woopie dat bedoelt). Maar het is nutteloos, als je het persé wilt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
class passmaker {
    function
maakpass($lengte, $cijfers = true, $hoofletters = true)
    {

        //als hoofdletters true is, zetten we hoofdletters in de array, anders alleen kleine letters
        $karakters = ($hoofletters == true) ? array_merge(range('A','Z'), range('a', 'z')) : array_merge(range('a', 'z'));
        
        //als cijfers true is, zetten we cijfers bij de array (2x zodat er wat meer cijfers in komen), anders houden we de array zoals hij was
        $karakters = ($cijfers == true) ? array_merge($karakters, range(0, 9), range(0,9)) : $karakters;
        
        shuffle($karakters); //gooi de array even door elkaar
        
        $pass = NULL; //maak een variabele aan voor de pass
        
        for($i = 0; $i < $lengte; $i++) //maak een loop die net zolang doorgaat tot het aantal karakters van de pass bereikt is
        {
            $pass .= $karakters[$i]; //voeg een letter uit de array aan de pass toe
        }
        
        return $pass; //geef de pass terug
    }
}

$bla = new passmaker;
echo $bla->maakpass(15);
?>

Compleet nutteloos, maarja
Niek Kasius
Niek Kasius
15 jaar geleden
 
0 +1 -0 -1
en wat kan je er nu mee? want ik krijg enkeld een code te zien.
Toby hinloopen
toby hinloopen
14 jaar geleden
 
0 +1 -0 -1
dit is beginner niveau? niet zo bescheiden :P
- -
- -
14 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
class passmaker {
    public function __construct($lengte, $cijfers = true, $hoofletters = true)
    {

        //als hoofdletters true is, zetten we hoofdletters in de array, anders alleen kleine letters
        $karakters = ($hoofletters == true) ? array_merge(range('A','Z'), range('a', 'z')) : array_merge(range('a', 'z'));
        
        //als cijfers true is, zetten we cijfers bij de array (2x zodat er wat meer cijfers in komen), anders houden we de array zoals hij was
        $karakters = ($cijfers == true) ? array_merge($karakters, range(0, 9), range(0,9)) : $karakters;
        
        shuffle($karakters); //gooi de array even door elkaar
        
        $pass = NULL; //maak een variabele aan voor de pass
        
        for($i = 0; $i < $lengte; $i++) //maak een loop die net zolang doorgaat tot het aantal karakters van de pass bereikt is
        {
            $pass .= $karakters[$i]; //voeg een letter uit de array aan de pass toe
        }
        
        return $pass; //geef de pass terug
    }
}

$bla = new passmaker(15);
?>

Korter?
Tristan nvt
Tristan nvt
14 jaar geleden
 
0 +1 -0 -1
@iChris - maar geen PHP4, zoals helemaal bovenaan gemeld staat.

Ben wel met je eens dat jouw code beter/korter is :)
PHP Newbie
PHP Newbie
14 jaar geleden
 
0 +1 -0 -1
@iChris,

Jouw code gaat de fout in bij $bla = new passmaker(100);

Verder zie ik de meerwaarde van een class niet.
Eddy E
Eddy E
14 jaar geleden
 
0 +1 -0 -1
@ Teuneboon: dit kan natuurlijk niet werken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $pass .= $karakters[$i]; ?>


Althans, als je meer dan 100 (of 200) tekens wilt.
Daarom is een array_rand() in je while-loop wel beter.
En dan kan die shuffle alsnog. Ook krijg je met een array_rand() in je whileloop soms meerdere keren hetzelfde cijfer/teken. En dat is wellicht wenselijk!
- -
- -
14 jaar geleden
 
0 +1 -0 -1
Ho, wacht even. Ik heb enkel een verkorte functie gemaakt van de "class" die Teuneboon heeft gemaakt. Ik heb niet gekeken naar evt. fouten oid.

Fouten moet je bij Teuneboon zijn en niet bij mij :')
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Eddy E
Eddy E
14 jaar geleden
 
0 +1 -0 -1
Oke, ik zal jouw naam even wijzigen en er Teunebone van maken ;).

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. pass-key-wachtwoord-generator

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.