<?php
class PasswordGenerator
{
/**
* @author Andrzej Grala
* @package PasswordGenerator
* @version 1.0
*
* Przykład użycia:
* $password = new PasswordGenerator();
* $password->useSpecialChars = false;
* $password->useDigits = true;
* $password->useLowercaseLetters = true;
* $password->useUppercaseLetters = false;
* $password->passwordLength = 12;
* $password->generate();
* echo $password->password;
*/
/**
* ilość znaków hasła
*
* @var int
*/
public $passwordLength = 8;
/**
* czy używać znaków specjalnych | domyślnie tak
*
* @var bool
*/
public $useSpecialChars = true;
/**
* czy używać małych liter | domyślnie tak
*
* @var bool
*/
public $useLowercaseLetters = true;
/**
* czy używać dużych liter | domyślnie tak
*
* @var bool
*/
public $useUppercaseLetters = true;
/**
* czy używać dużych liter | domyślnie tak
*
* @var bool
*/
public $useDigits = true;
/**
* zmienna przechowująca wygenerowane hasło
*
* @var string
*/
private $password = null;
/**
* żródła dla generatora haseł
*
* @var array
*/
private $source = array();
/**
* ilość żródeł dla generatora
*
* @var int
*/
private $sourceCounter = null;
/**
* pobranie wartości zmiennej
*
* @return string
*/
public function __get($name)
{
return $this->$name;
}
/**
* inicjalizacja żródeł znaków dla generatora w zależności od przekazanych parametrów
*
* @var int
*/
private function initialize()
{
if ($this->useSpecialChars)
{
$this->source[] = "!@#$%^*_-+=?:";
}
if ($this->useDigits)
{
$this->source[] = "0123456789";
}
if ($this->useLowercaseLetters)
{
$this->source[] = "abcdefghijklmnopqrstuvwxyz";
}
if ($this->useUppercaseLetters)
{
$this->source[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
}
if(!isset($this->source)) {
die("You must choose at least one password source (special chars, digits, lowercase letters, uppercase letters)");
}
$this->sourceCounter = sizeof($this->source); }
//generowanie hasła
public function generate()
{
//zerowanie hasła (przydatne w przypadku generowania większej ilości haseł w pętli)
$this->password = null;
//inicjalizacja żródeł znaków generatora
$this->initialize();
//pętla generuje hasło o odpowiedniej długości
for ($i=0; $i<$this->passwordLength; $i++)
{
//generowanie liczby pseudolosowej z zakresu ilości żródeł generatora
$temp = mt_rand(0
, $this->sourceCounter-1
); //generowanie liczby pseudolosowej z zakresu długości żródła tablicy znaków
//dopisanie znaku do hasła
$this->password .= $this->source[$temp][$temp2];
}
}
}
/* true - prawda // false - fałsz */
$password = new PasswordGenerator();
// Ustawiasz czy chcesz mieć w wygenerowanym haśle
$password->useSpecialChars = false; // znaki specjalne !@#$%^*_-+=?:
$password->useDigits = true; // Cyfry
$password->useLowercaseLetters = true; // małe litery
$password->useUppercaseLetters = false; // DUŻE LITERY
$password->passwordLength = 12; // Ustalasz długość wygenerowanego hasła
$password->generate(); // generujesz hasło
echo $password->password; // wyświetlasz ?>
Ten post edytował Wicepsik 3.11.2009, 16:36:58