Jak wygenerować losowy ciąg znaków ?
Do wygenerowania takiego ciągu mamy w PHP gotową funkcję. Zowie się ona uniqid(). Jako argument podajemy prefiks, czyli to co będzie dołączone na początku ciągu.
<?
echo uniqid('');
echo '<br>';
echo uniqid('kod');
?>
|
Przykładowy wynik działania:
408e59160851c
kod408e59160d3af
Trochę są do siebie podobne te uniqid, prawda ? To nie przuypadek. Funkcja generuje te ciągi na podstawie aktualnego czasu. Ale czas ten bierze
pod uwagę z dokładnością mikrosekund, więc możesz spać spokojnie. Chociaż.. zawsze możesz stwierdzić, że dwa skrypty mogą się uruchomić dokładnie w tej samej
mikrosekundzie, a Ty nie chesz mieć dwóch takich samych ciągów. Oczywiście, możesz dodać jeszcze jako drugi argument wartość true, a PHP
doda na końcu ciągu taki śmieszny numerek ;)
<?
echo uniqid('',true); // Przykładowy wynik: 408e5af0d512a5.05421772
?>
|
Uniqid() nie jest jednak jedynym sposobem na generowanie tego typu ciągów, możemy sobie np. zażyczyć aby nasze id składało się tylko z określonych znaków
i miało określoną długość:
<?
$tabelka = '1234567890qwertyuiopasdfghjkklzxcvbnm';
$id = '';
for ($i=0; $i<7; $i++) // 7 to długość ciągu
{
$id .= $tabelka[rand()%(strlen($tabelka))];
}
echo $id;
?>
|
Można też poeksperymentować z innymi funkcjami podobnymi do md5() np crypt() czy crc32(). Można je również połączyć z funkcją uniqid() np.:
<?
echo md5(uniqid(rand(), true));
?>
|
|