MOJA PASJA - PROGRAMOWANIE
   Dzisiaj jest Niedziela, 23 kwietnia, 2017r. Ostatnia aktualzacja miała miejsce: 10 grudnia 2006r. Homepage

Programowanie: Artykuły * FAQ * Download * Komponenty * Książki WWW: Artykuły * Narzędzia * Kursy * Darmowe * FAQ * Skrypty * Ksiązki Off-Topic: Aforyzmy * Humor Inne: Forum * Wiki * Liczniki * Linki * Chat * Grafika * Video * Inne



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));
  
?>






Stronę przygotował: Kacper Cieśla (comboy). Wszelkie prawa zastrzeżone.
Reklama * Zgłoś błąd * Kontakt * Hosting * O stronie * Sponsoring
Czas generowania strony: 0s