Witam serdecznie. W tym artykule pokaże Wam jak napisać aplikację, która będzie generowała hasło. Co będzie ją wyróżniało? To, że my decydujemy, z jakich zasobów ma ona korzystać. Generator, może być wykorzystywany wielokrotnie, dlatego napiszemy go sobie w postaci funkcji.
Funkcja ta będzie przyjmowała jeden parametr - długość hasła.
function passwordGenerator($length)
Następnie utworzymy tablice, które będą przechowywać znaki, które mogą zostać użyte w haśle (można dodawać własne):
$uppercase = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'W', 'Y', 'Z');
$lowercase = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'w', 'y', 'z');
$number = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
Teraz musimy utworzyć zmienną, odpowiadającą, za przechowywanie hasła, do którego będziemy dopisywać poszczególne znaki i na końcu je zwrócimy. Słowo kluczowe NULL oznacza nic, czyli równie dobrze moglibyśmy napisać $password = '';
$password = NULL;
Głowna część programu, czyli pętla uzupełniająca nasze hasło, jako warunek dałem długość podaną jako parametr (żebyśmy mieli pewność, że hasło nie będzie za krótkie), ale zauważcie, że co każdy obrót pętli generują się 3 znaki (bo są 3 tablice w tym przypadku) więc tak, czy tak na końcu będziemy musieli ten ciąg "obciąć".
Losowanie znaków z tablic przebiega w ten sposób, że do zmiennej przechowującej hasło dopisywany jest losowy indeks konkretnej tablicy, a samo losowanie indeksów polega na losowaniu liczb od 0 do ostatniego indeksu tablicy (dzięki funkcji count() wiemy, ile elementów ma tablica) i na końcu odjęciu jednego elementu, ponieważ liczymy od 0.
for ($i = 0; $i < $length; $i++) {
$password .= $uppercase[rand(0, count($uppercase) - 1)];
$password .= $lowercase[rand(0, count($lowercase) - 1)];
$password .= $number[rand(0, count($number) - 1)];
}
Przed nami finał, zostało tylko skrócić hasło do długości podanej jako parametr funkcji, dokonamy tego za pomocą funkcji substr(). Od razu skrócony ciąg znaków zwrócimy.
return substr($password, 0, $length);
I to wszystko, teraz możemy sobie nasze hasło np. przypisać do zmiennej:
$myPassword = passwordGenerator(8);
echo '<p>Moje wygenerowane hasło: <strong>' . $myPassword . '</strong></p>' . "\n";
Efekt: Moje wygenerowane hasło: Al6Do0Wp
To na tyle w tym artykule, dziękuję za uwagę i pozdrawiam.
Listing
function passwordGenerator($length) {
$uppercase = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'W', 'Y', 'Z');
$lowercase = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'w', 'y', 'z');
$number = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
$password = NULL;
for ($i = 0; $i < $length; $i++) {
$password .= $uppercase[rand(0, count($uppercase) - 1)];
$password .= $lowercase[rand(0, count($lowercase) - 1)];
$password .= $number[rand(0, count($number) - 1)];
}
return substr($password, 0, $length);
}
$myPassword = passwordGenerator(8);
echo '<p>Moje wygenerowane hasło: <strong>' . $myPassword . '</strong></p>' . "\n"
?>