Ako si vytvoriť generátor silného hesla
Našim cieľom je vytvorenie kódu pre vygenerovanie silného hesla pomocou skriptovacieho jazyka PHP. Heslo bude obsahovať 12 znakov, pričom bude záležať na tom, aby obsahovalo aspoň jenno veľké písmeno, aspoň jedno číslo a aspoň jeden špeciálny znak. Kód pre náš príklad by mohol vyzerať takto:
<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>generator silného hesla</title> </head> <body> <h1>Generátor silného hesla</h1> <p>Kliknite na tlačidlo nižšie pre generovanie nového hesla:</p> <p><strong><?php echo generatePassword(); ?></strong></p> <?php // definovanie funkcie pre generovanie hesla function generatePassword($length = 12) { // definovanie použiteľných znakov pre heslo $lower = 'abcdefghijklmnopqrstuvwxyz'; // malé písmená $upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; // veľké písmená $numbers = '0123456789'; // čísla $special = '!@#$%^&*()_+{}[];.,/?'; // špeciálne znaky $all = $lower.$upper.$numbers.$special; // kombinácia všetkých použiteľných znakov // inicializácia premenných pre kontrolu znakov v hesle $hasLower = false; $hasUpper = false; $hasNumber = false; $hasSpecial = false; // vytváranie náhodného hesla s použitím definovaných znakov $password = ''; for ($i = 0; $i < $length; $i++) { $index = rand(0, strlen($all) - 1); // náhodný výber indexu z kombinácie všetkých použiteľných znakov $char = substr($all, $index, 1); // výber znaku podľa náhodne zvoleného indexu $password .= $char; // pridanie znaku do hesla // kontrola, či heslo obsahuje požadované znaky if (strpos($lower, $char) !== false) { // ak heslo obsahuje malé písmeno $hasLower = true; // nastavenie premennej na true } if (strpos($upper, $char) !== false) { // ak heslo obsahuje veľké písmeno $hasUpper = true; // nastavenie premennej na true } if (strpos($numbers, $char) !== false) { // ak heslo obsahuje číslo $hasNumber = true; // nastavenie premennej na true } if (strpos($special, $char) !== false) { // ak heslo obsahuje špeciálny znak $hasSpecial = true; // nastavenie premennej na true } } // ak heslo neobsahuje požadované znaky, vygenerujeme ho znovu if (!$hasLower || !$hasUpper || !$hasNumber || !$hasSpecial) { return generatePassword($length); // rekurzívne volanie funkcie } return $password; // vrátenie vygenerovaného hesla } ?> </body> </html>