Radzio Jogger

Twórcy CMS, a nawet prostej strony napisanej w php potrzebują wygenerować losowy, unikalny ciąg znaków, który mógłby posłużyć za kod aktywacyjny lub tymczasowe hasło. Kiedyś także stanąłem przed takim problemem. Postanowiłem napisać klasę:

class password
{
function password($string=0, $lenght=8, $type=FALSE, $capitalize=FALSE)
	{	$passwd = md5(uniqid($string));
	if($type == "AlphaOnly") 
		{
		$passwd = ereg_replace("[0-9]", "", $passwd);
		if($capitalize) 
			{
			for ($i = 0; $i < strlen($passwd); $i++) 
				{
				if($i%3 == 0) 
				   {
				    $passwd[$i] = strtoupper($passwd[$i]);
				   }
				$new_passwd.=$passwd[$i];
				}
			$passwd = $new_passwd;
			}
		} 
		elseif($type == "NumericOnly") 
		{
			$passwd = ereg_replace("[a-z]", "", $passwd);
		}
		$passwd = substr($passwd, 0, $lenght);
		return $passwd;
	}
}

Funckja md5() korzysta z algorytmu, który pobiera łańcuch znaków i na jego podstawie wyznacza klucz. Istnieje 2128 potencjalnych wartości klucza więc możliwość, że uda się wygenerować dwa takie same jest znikoma (2128 = 340 miliardów miliardów miliardów miliardów).

$pas  = new password();
$pass = $pas->generate_passwd();

Klasa jest prosta w użyciu, a jeżeli chcemy stworzyć hasło według własnych parametrów to możemy napisać taki kod:

$pas  = new password();
$pass = $pas->password(time(), 20, "AlphaOnly", false);

Ten kod wygeneruje nam 20 znakowe hasło, składające się tylko z liter. Pomoże nam to w lepszym zabezpieczeniu witryny, ale radziłbym pamiętać o innych zabezpieczeniach, których nigdy za wiele

Komentarze: rss

:] 25 stycznia 2006 o 21:57:47

radzio mogłeś się bardziej rozpisać, wiem co umiesz :D

zgoda (jarek) 25 stycznia 2006 o 22:08:04

Do jednej metody była ci potrzebna aż klasa? Zwłaszcza, że w PHP nie ma metod statycznych? Przesadziłeś, moim zdaniem.
W dodatku co to za dziki obyczaj dawać argumentom znakowym domyślną wartość FALSE albo 0? Odrobinę konsekwencji.

radzio 25 stycznia 2006 o 22:13:23

No jest część większego systemu, pomyślałem , że może komuś się to przyda :]

zoltax 29 stycznia 2006 o 21:54:44

Ale cię Radzio pojechali:D I kto nam robi sisi w szkole ...;p

radzio 30 stycznia 2006 o 09:26:38

:] wiesz zoltax Jarek ma rację nie ma sensu pisać klasy do generowania takiego hasełka (zwłaszcza, że zawiera tylko jedną metodę), ale uznałem, że może komuś się przydać. Przecież zawsze możesz część kodu wykorzystać, albo przerobić to na zwykłą funkcję. No ale nie zmienia to stanu rzeczy komuś może się to przydać.

splatch 15 września 2006 o 23:53:11

Metody statyczne są. Listnig jest niekompletny (gdzie metoda generate_password?).