Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] losowa liczba przy rejestracji
Forum PHP.pl > Forum > Przedszkole
korey
Witam. Tworzę Formularz Do rejestracji w którym będzie trzeba wpisać w input losowy kod. Napisałem kodzik który wyświetla mi taki losowy 5 cyfrowy kod, ale nie wiem jak wyciągnąć ten wyświetlony ciąg cyfr po za Pętlę, tak bym mógł go porównać z tym co wpiszę w input. Naprowadzi mnie ktoś jak to zrobić.?

  1. <?php
  2. $liczby = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); //liczby 0-9
  3. shuffle($liczby); // tasowanie tablicy
  4. for ( $i = 0; $i < 4; $i++ )
  5. {
  6. $liczba = $liczby[$i];
  7. echo $liczba;
  8. }
  9.  
  10. ?>
  11. <form>
  12. <input type="text" name="kod" />
  13. </form>
flashdev
Nie trzeba wywarzać otwartych drzwi http://php.net/manual/en/function.uniqid.php
korey
Nie o taki efekt mi chodziło.. jak używam tej funkcji zwraca mi takiej długości kody: 34c695ba02c7404.40539291. a ja potrzebuję 4-6 znakowe..
Blame
substr
korey
Noo biggrin.gif teraz jest cacy. biggrin.gif tylko zastanawiam się czemu w funkcji uniqid(); pierwsze 6 znaków jest cały czas takie same..? biggrin.gif
tak wywołałem uniqid:
  1. $xx = uniqid('', true);
  2. echo $xx;
$xx zawsze na początku zwraca mi: 4c695e
Kaffiuri
a może tak?

  1. <?php
  2. $liczby = range(0, 9); //liczby 0-9
  3. shuffle($liczby); // tasowanie tablicy
  4. $liczba = array_slice($liczby, 0, 5);
  5. foreach ($liczba as $dane) {
  6. $wynik .= $dane;
  7. }
  8. echo $wynik;
  9. ?>
  10.  
  11. <form>
  12. <input type="text" name="kod" />
  13. </form>


teraz pozostaje ci porownac zmienna $wynik z tym co wpisał uzytkownik
korey
@Kaffiuri trafiłeś w 10 biggrin.gif dzięki. ale poprzednie pytanie nadal aktualne. ;p ciekaw jestem tongue.gif
Wicepsik
rand, po co pętle ?
Kaffiuri
Tez racja, mniej kodu wyjdzie.. zapomniałem o rand.
gorden
nie wiem czy najlepszy, czy najgorszy sposób, ale ja to robię tak:
  1. <?
  2. // generowanie kodu
  3. $od = 1;
  4. $do = 9;
  5. $rd = rand($od, $do);
  6. echo"Przepisz kod:<br>$rd<br>
  7. <input type=\"text\" name=\"kod\">
  8. <input type=\"hidden\" name=\"kod2\" value=\"$rd\">";
  9.  
  10. //sprawdzanie poprawnosci
  11. $tk = $_POST['kod'];
  12. $stk = $_POST['kod2'];
  13. if($tk !== $stk){ echo"Źle przepisałeś wygenerowany kod!"; exit; }
Blame
Cytat(korey @ 16.08.2010, 17:54:47 ) *
tylko zastanawiam się czemu w funkcji uniqid(); pierwsze 6 znaków jest cały czas takie same..? biggrin.gif

Przecież pisze w manualu, że funkcja uniqid generuje ciąg na podstawie aktualnego czasu i o ile sekundy i minuty się u ciebie zmieniały, o tyle godziny już nie, stąd ta powtarzalność winksmiley.jpg
kryzz
Może to winksmiley.jpg
  1. <?php
  2.  
  3. function randNums($lenght) {
  4. static $hash = '0123456789';
  5. $out = '';
  6. for($x=0;$x<$lenght;++$x) $out .= $hash{rand(0,9)};
  7. return $out;
  8. }
  9.  
  10. echo randNums(5);
  11.  
  12.  
  13. function randChars($lenght) {
  14. static $hash = 'abcdefghijklmnopqrstuvwxyz0123456789';
  15. $out = '';
  16. for($x=0;$x<$lenght;++$x) $out .= $hash{rand(0,35)};
  17. return $out;
  18. }
  19.  
  20. echo randChars(5);
  21.  
  22. ?>
franki01
Ja korzystam z md5(microtime()) + ewentualnie substr.
korey
Dzięki wam wszystkim ze wszystkiego zrobiłem jedno.. tak jakby ;P

O to moje ostateczne rozwiązanie tego problemu: smile.gif
  1. <?php
  2. function generator_code($lok){
  3.  
  4. $liczby = range('A', 'Z'); //Znaki A-Z
  5. shuffle($liczby); // tasowanie tablicy
  6. $liczba = array_slice($liczby, 0, 5);
  7. foreach ($liczba as $dane) {
  8. $wynik .= $dane;
  9. }
  10. echo '<input type="hidden" name="getcode" value="'.$wynik.'" />'; //funkcja jest wywoływana w formularzu dlatego ten input
  11.  
  12. echo $wynik; // Widok Diva z losowym kodem
  13. }
  14. ?>


Dziękuje bardzo wszystkim za pomoc smile.gif z pol roku obijałem się i pozapominało się troszkę. tongue.gif

Pozdro By Korey
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.