Autor | Zpráva | ||
---|---|---|---|
Coiltare Profil * |
#1 · Zasláno: 6. 5. 2012, 16:17:17
Ahoj,
V PHP jsem sotva začátečník, do té doby jsem se učil JavaScript, kde jsem se inspiroval scriptem, který jsem kdysi naprogramoval. Ted bych ho chtěl udělat v PHP. Níže je uvedený kod, jak bych si to asi představoval. Jedná se o vygenerování čísla, o počtu znaků rozhodne uživatel (zadá číslo do inputu (name="cisla") ) HTML <form method="post"> <input type="text" name="cisla"> <br> // tady uživatel zadá počet znaků k vygenerování čísla <input type="submit" name="odesli" value=" vygeneruj "> </form> <?php if ( isset($_POST["odesli"]) and is_numeric(trim($_POST['cisla']) ) ){ function generate($_POST["cisla"]){ $znaky = array(0,1,2,3,4,5,6,7,8,9); $vygenerovaneZnaky = ""; for ($i=0; $i<=$_POST["cisla"]; $i++){ $num = rand(0,9); $vygenerovaneZnaky +=$znaky[$num]; echo $vygenerovaneZnaky; } } } else { ?> <script> alert('neplatný řetězec'); </script> <?php } ?> |
||
mimochodec Profil |
#2 · Zasláno: 6. 5. 2012, 16:20:04
Coiltare:
$vygenerovaneZnaky .= $znaky[$num]; |
||
Coiltare Profil * |
#3 · Zasláno: 6. 5. 2012, 16:22:03
Aha, zlozvyk z JavaScriptu, ale ipřesto to nepomohlo.
|
||
Someone Profil |
$num = rand(0,9) ; ti vygeneruje číslo od 0 do 9, v poli $znaky není žádná položky s indexem 9... Toto by ti mohlo pomoci...
Tu funkci si dej někam mimo a potom při odeslání formuláře zadej hodnotu jako parametr funkce...: // tady bude funkce if (isset($_POST['odesli'])) { generovat(intval($_POST['cisla'])); } function cislo($pocet) { $vysledek = ''; for ($a=0;$a<$pocet;$a++) { $cislo = rand(0,9); $vysledek .= $cislo; } return $vysledek; } if (isset($_POST['odesli']) and is_numeric(trim($_POST['cisla']))) { echo "Vaše vygenerované heslo je: ".cislo($_POST['cisla']); } |
||
mimochodec Profil |
Ještě jedna drobnost. Jestli jde opravdu o vygenerování n-místného náhodného čísla, zkusil bych použít
$vygenerovaneZnaky = ( pow(10, $n-1)-1 , pow(10, $n)-1); (opravena syntaxe, omlouvám se, matematické operátory někdy nejsou, čím se zdají být) |
||
Coiltare Profil * |
#6 · Zasláno: 6. 5. 2012, 19:19:08
Smím se zeptat, proč tu funkci nesmím mít vně podmínky?
|
||
panther Profil |
#7 · Zasláno: 6. 5. 2012, 19:21:44
Coiltare:
protože vně podmínky (otestování odeslání formuláře) nemusí tebou používané $_POST['cisla'] existovat (a PHP ti bude vracet varování o použití neexistujícího klíče).
|
||
Časová prodleva: 12 let
|
0