W artykule tym przedstawię kilka sposobów na to jak wygenerować przypadkowy ciąg znaków / lub nowe hasło dla użytkownika, za pomocą PHP.
Sposób pierwszy.
Z wykorzystaniem funkcji kodowania md5
// tworzenie funkcji "losowy_ciag" - z parametrem $dlugosc //gdzie $dlugosc może być z zakresu od 0 do 32 - w przypadku wpisania wiekszej liczby niż 32 i tak funkcja zwróci 32 znaki function losowy_ciag($dlugosc){ // generujemy losowy ciąg znaków // pobieramy aktualny czas a następnie przeprowadzamy kodowanie tego czasu za pomocą funkcji szyfrującej md5 $string = md5(time()); //przycinamy ciąg znaków do podanej długości, począwszy od 1 znaku a skończywszy na $długosc $string = substr($string,0,$dlugosc); //zwraca ciąg znaków return($string); } // teraz zapisujemy do zmiennej i wyświetlamy na ekranie; $ciag_znakow=losowy_ciag(10); echo $ciag_znakow;
Przykładowym wynikiem naszego programu dla długości 10 będzie: 75ef4da3dc
Funkcja ciekawa lecz narzuca nam ograniczenie w postaci maksymalnej długości znaków do 32 sztuk.
Poniżej wiec zaprezentuje przykładową funkcje, która nie ma takiego ograniczenia.
Sposób drugi.
// tworzenie funkcji "losowy_ciag_2" - z parametrem $dlugosc function losowy_ciag_2($dlugosc) { //przypisanie do zmiennej $znaki ciągu znaków od 0 do Z $znaki= "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; // zadeklarowanie zmiennej $losowy_ciag jako pusty / aby nie wyświetlało nam się ostrzeżenie $losowy_ciag=""; // pętla for która generuje nam znaki w zależności od podanej długości for ($i=0; $i < $dlugosc; $i++) { //każdorazowe przejście pętli nadpisuje nam zmienna $losowy_ciag, dopisuje kolejny losowy znak //jak zostaje wybrany ten znak? - zacznijmy od środka //strlen($znaki)-1) liczy ile znaków znajduje się w zmiennej $znaki i odejmuje 1 //rand(0, strlen($znaki)-1) - wybiera losową wartość z zakresu 0 do wartości strlen($znaki)-1 //oraz ostatnia funkcja substr($znaki, rand(0, strlen($znaki)-1), 1) - wybiera znak z ciągu znaków zmiennej $znaki, znajdujący się na pozycji wygenerowanej przez funkcję rand() $losowy_ciag .= substr($znaki, rand(0, strlen($znaki)-1), 1); } // zwracanie całego losowego ciągu znaków return $losowy_ciag; } //Jeśli chcemy wyświetlić losowy ciąg o długości 10. znaków, wpisujemy: echo losowy_ciag_2(10);
Przykładowy wynik działania tej funkcji z długością 60 jest: LW7GKnKcR47oHLzKlDXdqrChZonUFbByx48dcJjkJqZSJPuljcFF3fRl3aVk
Sposób trzeci – prosty
wykorzystanie wbudowanej funkcji uniqid()
//funkcja generuje 13 znakowy ciąg na podstawie aktualnego czasu echo uniqid(); // wynik przykładowy: 50cb9f1565879 //można zwiększyć ilość losowych znaków do 23 stosując jako drugi parametr wartość true echo uniqid('',true); // wynik przykładowy dla tego rozwiązania: 50cb9f69d06bf8.51904596 //istnieje także możliwość nadania własnej formy stałej do generowanego ciągu echo uniqid('haslo'); //wynikiem w tym przypadku, przykładowo będzie: haslo50cba05c355bd
Przedstawiłem tu 3 sposobny na wygenerowanie losowego ciągu znaków. Oczywiście jest ich więcej.
Można kombinować na masę sposobów, wykorzystując inne nie podane w tych artykule funkcje.. np crypt() czy crc32(). Każde funkcje można ze sobą łączyć, zapętlać, zamieniać kolejności itd itp.
np.
echo md5(uniqid(rand(), true));
Ogranicza nas tylko wyobraźnia…
Mam nadzieje, że artykuł Wam się przyda…