Jednoduchý generátor hesiel pomocou PHP
V tomto článku si ukážeme, ako jednoducho vytvoriť generátor hesiel pre svoje aplikácie. Script sa môže hodiť pri viacerých aplikáciách, kde je nutný prístup pomocou hesla. Princíp je veľmi jednoduchý, vystačíme si so základnými znalosťami PHP.
Ako každý program, aj tento má svoje výhody a nevýhody. Výhoda je hlavne v bezpečnosti systému. Môžeme tým odnaučiť užívateľov mať heslá ako 123456, abcdef, asdfghjkl, apd. Nevýhodou týchto generovaných hesiel je zapamätateľnosť u užívateľov. Nie každý užívateľ je schopný zapamätať si heslo typu hew45$s!. Administrátor by mal zvážiť klady a zápory tejto aplikácie a využiť ju vo svoj prospech.
Celá aplikácia sa bude skladať z jednej funkcie generuj_heslo() s jediným parametrom, ktorým je premenná $dlzka. Tá určuje, aký počet znakov bude mať vygenerované heslo. Ďalšia premenná, ktorú budeme potrebovať, je premenná $moznosti. Táto premenná obsahuje súbor znakov, z ktorých bude generátor náhodne vyberať znaky na vytvorenie konečného hesla. Pred volaním funkcie nesmiete zabudnúť inicializovať generátor náhodných čísiel, pretože by ste mohli generovať stále tie isté heslá. Namiesto rand() môže byť tiež použitá funkcia mt_rand(), ktorá je rýchlejšia a má lepší generátor náhodných čísiel a preto teoreticky generuje lepšie heslá.
Jadrom tohoto jednoduchého programu je cyklus, ktorý pri každom svojom opakovaní priradí premennej $heslo jeden náhodný znak z premennej $moznosti. Cyklus sa opakuje toľkokrát, až kým dĺžka premennej $heslo nedosiahne hodnotu $dlzka. Náhodné vyberanie znakov z premennej $moznosti sa koná pomocou funkcie substr(), ktorá má tri parametre. Prvý parameter je množina znakov. Druhým parametrom je číslo pozície znaku od ktorého sa má začať vyberať. Toto číslo je v našom prípade náhodne generované pomocou funkcie mt_rand(). Tretím parametrom je počet vyberaných znakov. To znamená, že pri každom opakovaní cyklu sa spusti funkcia substr(), ktorá vyberie z množiny znakov jeden náhodný a doplní ho do premennej $heslo.
<? php
mt_srand((double)microtime()*1000000); // inicializácia generátora náhodných čísiel
function generuj_heslo($dlzka) {
$moznosti=’abcdefghijklmnopqrstuvwxyz‘.
‚ABCDEFGHIJKLMNOPQRSTUVWXYZ‘.
‚0123456789‘.
‚!@$#%&*()+‘;
$heslo=““;
while(strlen($heslo) < $dlzka) {
$heslo .= substr($moznosti, mt_rand(0, strlen($moznosti) – 1), 1);
}
return($heslo);
}
$heslo=generuj_heslo(8);
?>
Tento generátor (zdrojový kód na stiahnutie) je veľmi užitočný, ale má jednu nevýhodu. Vygenerované heslo sa zapisuje priamo do HTML kódu (viď ukážku). Tento problém sa dá vyriešiť pomocou obrázkového generátora hesiel. Ten vytvoríme doplnením nasledujúceho kódu:
<?php
Header(„Content-type: image/png“);
// Vytvorenie obrázku a alokacia farieb
$obr=ImageCreate(85,20);
$cierna=ImageColorAllocate ($obr, 0, 0, 0);
$biela=ImageColorAllocate ($obr, 255, 255, 255);
// Zakreslíme reťazec
ImageString($obr, 5, 1, 1, $heslo, $biela);
//Obrázok vytlačíme a zrušíme
ImagePNG($obr);
ImageDestroy($obr);
?>
Základom je funkcia ImageString(). Používa sa na kreslenie viac znakov na obrázok. Kreslí reťazec „reťazec“ v obrázku „obrázok“ na súradnice x, y farbou „farba“. Ak je parameter písmo (1, 2, 3, 4 alebo 5), použije sa nejaké zabudované písmo. Väčšina použitých funkcií je už rozobratá v článku Obrázky a PHP – geometrické funkce, preto ich tu nebudem rozoberať, pozrite si rovno výsledok generátora.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Monitory OLED: klíčové pojmy a funkce
13. května 2024 -
Rychlost serveru: Klíč k lepšímu umístění ve vyhledávačích
7. června 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024
IronNETiQ
Pro 3, 2009 v 18:04ked to dam na stranku tak to nefunguje
bruccio
Led 4, 2011 v 18:57samostatne mi to funguje, ale po vlozeni
do obsahu stranky mi to hodi chyby v obrazku…
hlp?