Generowanie losowych znaków w PHP

Bartosz

Bartosz Stefanicki Sobota, 6.01.2024

Generowanie losowych znaków w PHP

Wygenerowanie losowego ciągu znaków - można to zrobić na wiele sposobów, ale ich rezultaty są bardziej, lub mniej przewidywalne.

Generowanie uniqid()

Ta funkcja zwraca losowy ciąg znaków na podstawie timestampa, czyli bieżącej daty i godziny. Przyjmuje dwa opcjonalne parametry - prefix i wygenerowanie dodatkowego ciągu znaków.

<?php

// 5fc3d25cba7f6
echo uniqid();

// prefix_5fc3d25cba7f8
echo uniqid('prefix_');

// prefix_5fc3d25cba7f90.57409045
echo uniqid('prefix_', true);

?>

Generowanie losowych znaków

Funkcja time() zwraca obecny czas. md5() domyślnie zwraca 32 znaków, a sha1() 40 znaków, więc dzięki substr() możemy ten ciąg uciąć do odpowiednich rozmiarów.

<?php

// 62f43775b4fc313e72d8b5c6050f063fe4b93032
echo sha1(time());

// 49c4a4a2deb6273ffda85c4b45161201
echo md5(time());

// 3d40008475762363bd93
echo substr(md5(time()), 0, 20);

// 36f6df1e0e46a4b45174
echo substr(sha1(time()), 0, 20);

?>

Najbezpieczniejszy losowy ciąg znaków

Ostatni punkt to najmniej przewidywalny ciąg znaków, tym samym najbardziej bezpieczny. Można go spokojnie wykorzystać do różnych portali, kont internetowych i formularzy rejestracyjnych. Wyjaśniając - random_bytes() zwraca losowe bajty. Warto na tą funkcję nałożyć drugą bin2hex - zmieni bajty na dwukrotnie dłuższy ciąg znaków.

<?php

// a93369e6fb91cd28d6140f54808132eb35c1d2ec90eea8752ad7c09a91c1433d
echo bin2hex(random_bytes(32));

?>

Na itporady.pl znajdziesz także generator bezpiecznych haseł - sprawdź koniecznie w narzędziach online.

Warto zobaczyć

Szukasz hostingu?

Jest dużo firm oferujących hosting, ale którą wybrać? Przedstawiamy zestawienie najciekawszych propozycji i ranking hostingów (Luty 2024).

Data publikacji: Sobota, 28.11.2020. Tagi: php, skrypty. Źródło obrazka porady: Pixabay.

3 komentarzy


© 2005-2024 itporady.pl. Wszystkie prawa zastrzeżone.

Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką prywatności. Możesz określić warunki przechowywania lub dostępu do plików cookies w Twojej przeglądarce.