Wachtwoord Generator

Door Roel -, 19 jaar geleden, 6.650x bekeken

Een wachtwoord generator, erg simpel. Toch wilde ik hem even posten omdat het een van m'n eerste scripts is.

Updates
25 mei 2009: Helemaal opnieuw gescript, vele malen beter nu. ;-)
7 augustus 2009: Valid gemaakt en de code geoptimaliseerd.

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
39
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Wachtwoord Generator gemaakt door Roel</title>
</head>
<body>
<h1>Wachtwoord Generator</h1>
<p>
Vind je het moeilijk om een sterk beveiligd wachtwoord te bedenken? Laat deze generator het doen! Vul het aantal cijfers in, en druk op <b>Genereer</b>!
</p>
<?php
// Controleren of er op de knop gedrukt is
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // Controleren of er iets fout gegaan is
    if (empty($_POST['aantal'])) {
        echo '<div style="background-color: #FFD6D7; color: #FF0000; border: 1px solid #FF0000; padding: 2px">Je hebt het aantal tekens niet ingevoerd!</div>';
    }
elseif (!is_numeric($_POST['aantal'])) {
        echo '<div style="background-color: #FFD6D7; color: #FF0000; border: 1px solid #FF0000; padding: 2px">Je hebt geen geldig aantal tekens ingevuld!</div>';
    }
else {
        // Als alles goed gegaan is wordt nu de code gegenereerd
        $code = '';
        $tekens = Array_Merge(range('a', 'z'), range('A', 'Z'), range(0, 9));
        for($i = 0; $i < $_POST['aantal']; $i++){
            $code = $code.$tekens[rand(0, 61)];
        }

        // Na iedere 105 karakters een <br /> zetten om te zorgen dat alles netjes op het scherm staat
        $code = wordwrap($code, 105, '<br />', true);
        // Nu alleen nog de code op het scherm zetten
        echo '<div style="background-color: #D6FFD7; color: #00AA00; border: 1px solid #00AA00; padding: 2px">'.$code.'</div>';
    }
}

?>

<form method="post" action=""><p>
Aantal tekens:<br />
<input type="text" name="aantal" /><br /><br />
<input type="submit" value="Genereer" /> <input type="reset" value="Herstel" />
</p></form>
</body>
</html>

Voorbeeld: http://phphulp.rlsoftware.nl/wachtwoordgenerator/

Gesponsorde koppelingen

PHP script bestanden

  1. wachtwoord-generator

 

Er zijn 20 reacties op 'Wachtwoord generator'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
J orii
J orii
19 jaar geleden
 
0 +1 -0 -1
Als ik jou was zou ik:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
$tekens=array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q"

,"r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","A",

"B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","

V","W","X","Y","Z");

vervangen door:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$tekens=range('a', 'z');


dit is ff korter, en minder typ werk :)


verder vind ik het er wel leuk uit zien :)
Roel -
Roel -
19 jaar geleden
 
0 +1 -0 -1
Bedankt voor de tips. :)
Ricardo
Ricardo
19 jaar geleden
 
0 +1 -0 -1
Ik ben echt een noob in php maar ik ben bezig het te leren ;),
ik denk dat als je roel's versie vervangt door jouw versie,
$tekens=range('a', 'z');
dat je dan alleen de kleine letters; a t/m z hebt
terwijl roel,
-Kleine letters
-hoofd letters
-cijfers
heeft, klopt dat?

Ricardo
Ed
Ed
19 jaar geleden
 
0 +1 -0 -1
Neem dan een array_merge(range('a', 'z'), range(0, 9), range('A', 'Z'))

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
<?php
function make_seed() {
  list($usec, $sec) = explode(' ', microtime());
  return (float) $sec + ($usec * 100000);
}


if(!isset($_POST['aantal']))
    $_POST['aantal'] = 8;
$random = '';
$tekens = array_merge(range('a', 'z'), range('A', 'Z'), range(0,9));

for($i = 0; $i < intval($_POST['aantal']); $i++) {
    srand(make_seed());
    $random .= $tekens[rand(0, count($tekens)-1)];
}

echo 'Wachtwoord: '.$random;
?>


Zelfde effect, efficiëntere code.
Eddy E
Eddy E
19 jaar geleden
 
0 +1 -0 -1
Even of jouw gebruik van srand().
Waarom maak je nog een seed aan en gebruik je niet gewoon mt_rand()?
mt_rand() maakt zijn eigen nummers en je kan een minimale en maximale opgeven (bijvoorbeeld:)
Ten daarna doe je er niets mee, want je vangt het niet op in een $variable oid.
Martijn Wieringa
Martijn Wieringa
19 jaar geleden
 
0 +1 -0 -1
Als iemad het wachtwoord ooit moet invullen, is het makkelijk dat het wachtwoord 'human readable' is.

Voorkom daarom het gebruik van de volgende tekens in het wachtwoord, ze kunnen met elkaar worden verward:

0 (nul), O o
1 (een) L l I i

Gebruik daarom liever:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

$tekens
= array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'm', 'n', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');

?>
Yorick17
yorick17
19 jaar geleden
 
0 +1 -0 -1
Als je het goed codeerd is dit echt niet nodig hoor.
Leroy Boerefijn
Leroy Boerefijn
19 jaar geleden
 
0 +1 -0 -1
@Pholeron, CTRL-c CTRL-v ?? :P
Joren de Wit
Joren de Wit
19 jaar geleden
 
0 +1 -0 -1
Leroy:
@Pholeron, CTRL-c CTRL-v ?? :P
Nope, merk op dat bepaalde tekens, die makkelijk als een ander teken geïnterpreteerd kunnen worden, weggelaten zijn.

yorick17:
Als je het goed codeerd is dit echt niet nodig hoor.
Het heeft niets met het coderen te maken, maar juist met de leesbaarheid voor een gebruiker. In bepaalde lettertypen is er mogelijk tot geen onderscheid te maken tussen bepaalde tekens. Precies zoals Pholeron zegt...
Nicoow Unknown
Nicoow Unknown
19 jaar geleden
 
0 +1 -0 -1
Doet me erg denk aan een functie die ik hiervoor geschreven heb =þ
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
function generate_rand_string($length)
{

      // begin met een leeg wachtwoord.
      $password = "";
      // alle mogelijke characters
      $possible = "23456789bcdfghjklmnopqrstvwxyzBCDFGHJKLMNPQRSTVW";    
      // counter op 0
      $i = 0;    
      // Voeg random characters toe, totdat $length is bereikt
      while ($i < $length)
      {

    // Neem een willekeurige character
        $char = substr($possible, mt_rand(0, strlen($possible)-1), 1);        
    // Ieder karakter mag maar 1 keer voorkomen
        if (!strstr($password, $char))
        {

              $password .= $char;
              $i++;
        }
    }

    return $password;
}

?>

Deze gebruik ik eigenlijk voor alles van random wachtwoorden, maar ook voor codes om een ingelogd persoon te verifiëren. (heerlijk duur woord)

dingen als een I l 1 lijken vind ik al vreselijk veel op elkaar.
o 0 lijken ook op elkaar.
Ik gebruik zelf in dit soort dingen alleen de letters a e i o u 0 1 niet
die a e u slaan op zich nergens op, maar je moet toch iets in je vrije tijd =P
Martijn Wieringa
Martijn Wieringa
19 jaar geleden
 
0 +1 -0 -1
Mijn "verdediging" sluit volledig aan bij Blanche..
tnx :D
Bas Visscher
Bas Visscher
19 jaar geleden
 
0 +1 -0 -1
waar is die session start voor?
Aaron
Aaron
19 jaar geleden
 
0 +1 -0 -1
Waarom geen md5(); ?:p
Ed
Ed
19 jaar geleden
 
0 +1 -0 -1
MD5 is zo moeilijk onthouden, he!
Eddy E
Eddy E
19 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo substr(md5(time())), 0, 6); ?>


Valt mee toch?
Maar dan heb je geen verschil tussen kleine en hoofdletters.
Nicoow Unknown
Nicoow Unknown
19 jaar geleden
 
0 +1 -0 -1
en wat nou als 2 mensen op exact dezelfde tijd een wachtwoord aan maken, dan hebben ze allebei hetzelfde wachtwoord.
dus dat heeft ook geen zin, is alleen wat korter.
Steven russcher
steven russcher
19 jaar geleden
 
0 +1 -0 -1
kan ook zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
        function randomhash($length = null) {
            static $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    
            if(!is_int($length) || $length < 8) {
            $length = 8;
            }
                return substr(str_shuffle($characters), 0, $length);
            }
        
$password = randomhash();
PHP Newbie
PHP Newbie
19 jaar geleden
 
0 +1 -0 -1
Nico,
Hoeveel mensen op hyves hebben wel niet hetzelfde wachtwoord? Volgens mij zijn er dat heel wat. Ik denk niet dat die miljoenen leden allemaal een ander wachtwoord hebben.

Hiermee zeg ik niet dat de oplossing van Eddy een goeie is. Een hacker kan op deze manier namelijk gewoon het wachtwoord raden.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
 
0 +1 -0 -1
PHP Newbie schreef op 13.01.2009 18:37
Nico,
Hoeveel mensen op hyves hebben wel niet hetzelfde wachtwoord? Volgens mij zijn er dat heel wat. Ik denk niet dat die miljoenen leden allemaal een ander wachtwoord hebben.

Hiermee zeg ik niet dat de oplossing van Eddy een goeie is. Een hacker kan op deze manier namelijk gewoon het wachtwoord raden.

-------------------------------------------------------------------------
Ja, mee eens!

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

Inhoudsopgave

  1. 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.