Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] losowa liczba przy rejestracji
korey
post 16.08.2010, 16:23:16
Post #1





Grupa: Zarejestrowani
Postów: 122
Pomógł: 2
Dołączył: 14.08.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


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>


--------------------
”Jestem nędzarzem, mam tylko marzenia.
Rozsyłam je u twych stóp,
Stąpaj lekko, gdyż stąpasz po mych marzeniach„
Go to the top of the page
+Quote Post
flashdev
post 16.08.2010, 16:26:43
Post #2





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Nie trzeba wywarzać otwartych drzwi http://php.net/manual/en/function.uniqid.php


--------------------
Go to the top of the page
+Quote Post
korey
post 16.08.2010, 16:41:03
Post #3





Grupa: Zarejestrowani
Postów: 122
Pomógł: 2
Dołączył: 14.08.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


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..


--------------------
”Jestem nędzarzem, mam tylko marzenia.
Rozsyłam je u twych stóp,
Stąpaj lekko, gdyż stąpasz po mych marzeniach„
Go to the top of the page
+Quote Post
Blame
post 16.08.2010, 16:43:18
Post #4





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

Ostrzeżenie: (0%)
-----


substr


--------------------
Go to the top of the page
+Quote Post
korey
post 16.08.2010, 16:54:47
Post #5





Grupa: Zarejestrowani
Postów: 122
Pomógł: 2
Dołączył: 14.08.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


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


--------------------
”Jestem nędzarzem, mam tylko marzenia.
Rozsyłam je u twych stóp,
Stąpaj lekko, gdyż stąpasz po mych marzeniach„
Go to the top of the page
+Quote Post
Kaffiuri
post 16.08.2010, 16:56:08
Post #6





Grupa: Zarejestrowani
Postów: 40
Pomógł: 6
Dołączył: 6.05.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
korey
post 16.08.2010, 17:00:03
Post #7





Grupa: Zarejestrowani
Postów: 122
Pomógł: 2
Dołączył: 14.08.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


@Kaffiuri trafiłeś w 10 biggrin.gif dzięki. ale poprzednie pytanie nadal aktualne. ;p ciekaw jestem tongue.gif


--------------------
”Jestem nędzarzem, mam tylko marzenia.
Rozsyłam je u twych stóp,
Stąpaj lekko, gdyż stąpasz po mych marzeniach„
Go to the top of the page
+Quote Post
Wicepsik
post 16.08.2010, 17:35:46
Post #8





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


rand, po co pętle ?


--------------------
Go to the top of the page
+Quote Post
Kaffiuri
post 16.08.2010, 17:44:01
Post #9





Grupa: Zarejestrowani
Postów: 40
Pomógł: 6
Dołączył: 6.05.2009

Ostrzeżenie: (0%)
-----


Tez racja, mniej kodu wyjdzie.. zapomniałem o rand.
Go to the top of the page
+Quote Post
gorden
post 16.08.2010, 17:44:02
Post #10





Grupa: Zarejestrowani
Postów: 486
Pomógł: 101
Dołączył: 27.06.2010

Ostrzeżenie: (0%)
-----


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; }
Go to the top of the page
+Quote Post
Blame
post 16.08.2010, 18:07:02
Post #11





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
kryzz
post 16.08.2010, 18:37:17
Post #12





Grupa: Zarejestrowani
Postów: 10
Pomógł: 3
Dołączył: 21.11.2008

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
franki01
post 16.08.2010, 21:17:17
Post #13





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Ja korzystam z md5(microtime()) + ewentualnie substr.
Go to the top of the page
+Quote Post
korey
post 17.08.2010, 20:00:57
Post #14





Grupa: Zarejestrowani
Postów: 122
Pomógł: 2
Dołączył: 14.08.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


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


--------------------
”Jestem nędzarzem, mam tylko marzenia.
Rozsyłam je u twych stóp,
Stąpaj lekko, gdyż stąpasz po mych marzeniach„
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.05.2024 - 02:47