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ć.?
<?php $liczby = http://www.php.net/array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); //liczby 0-9 http://www.php.net/shuffle($liczby); // tasowanie tablicy for ( $i = 0; $i < 4; $i++ ) { $liczba = $liczby[$i]; http://www.php.net/echo $liczba; } ?> <form> <input type="text" name="kod" /> </form>
Nie trzeba wywarzać otwartych drzwi http://php.net/manual/en/function.uniqid.php
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..
Noo teraz jest cacy. tylko zastanawiam się czemu w funkcji uniqid(); pierwsze 6 znaków jest cały czas takie same..?
tak wywołałem uniqid:
$xx zawsze na początku zwraca mi: 4c695e
$xx = http://www.php.net/uniqid('', true); http://www.php.net/echo $xx;
a może tak?
<?php $liczby = http://www.php.net/range(0, 9); //liczby 0-9 http://www.php.net/shuffle($liczby); // tasowanie tablicy $liczba = http://www.php.net/array_slice($liczby, 0, 5); foreach ($liczba as $dane) { $wynik .= $dane; } http://www.php.net/echo $wynik; ?> <form> <input type="text" name="kod" /> </form>
@Kaffiuri trafiłeś w 10 dzięki. ale poprzednie pytanie nadal aktualne. ;p ciekaw jestem
rand, po co pętle ?
Tez racja, mniej kodu wyjdzie.. zapomniałem o rand.
nie wiem czy najlepszy, czy najgorszy sposób, ale ja to robię tak:
<? // generowanie kodu $od = 1; $do = 9; $rd = http://www.php.net/rand($od, $do); http://www.php.net/echo"Przepisz kod:<br>$rd<br> <input type=\"text\" name=\"kod\"> <input type=\"hidden\" name=\"kod2\" value=\"$rd\">"; //sprawdzanie poprawnosci $tk = $_POST['kod']; $stk = $_POST['kod2']; if($tk !== $stk){ http://www.php.net/echo"Źle przepisałeś wygenerowany kod!"; http://www.php.net/exit; }
Może to
<?php function randNums($lenght) { http://www.php.net/static $hash = '0123456789'; $out = ''; for($x=0;$x<$lenght;++$x) $out .= $hash{http://www.php.net/rand(0,9)}; return $out; } http://www.php.net/echo randNums(5); function randChars($lenght) { http://www.php.net/static $hash = 'abcdefghijklmnopqrstuvwxyz0123456789'; $out = ''; for($x=0;$x<$lenght;++$x) $out .= $hash{http://www.php.net/rand(0,35)}; return $out; } http://www.php.net/echo randChars(5); ?>
Ja korzystam z md5(microtime()) + ewentualnie substr.
Dzięki wam wszystkim ze wszystkiego zrobiłem jedno.. tak jakby ;P
O to moje ostateczne rozwiązanie tego problemu:
<?php function generator_code($lok){ $liczby = http://www.php.net/range('A', 'Z'); //Znaki A-Z http://www.php.net/shuffle($liczby); // tasowanie tablicy $liczba = http://www.php.net/array_slice($liczby, 0, 5); foreach ($liczba as $dane) { $wynik .= $dane; } http://www.php.net/echo '<input type="hidden" name="getcode" value="'.$wynik.'" />'; //funkcja jest wywoływana w formularzu dlatego ten input http://www.php.net/echo $wynik; // Widok Diva z losowym kodem } ?>
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)