Autor | Zpráva | ||
---|---|---|---|
jefitto44 Profil |
#1 · Zasláno: 9. 1. 2014, 21:38:31
Mám minikalkulačku, ktorá vie iba deliť. Podmienkou chcem ošetriť delenie nulou. Kód je taký:
1<form method="get"> <!-- delenie --> <form method="get"> <!-- delenie -->
<input type="number" name="delenec">
<input type="number" name="delitel">
<input type="submit" value="Podiel">
</form>
<?php
if ($delitel != 0):
$vysledok4=($delenec/$delitel);
echo ("Podiel čísel je $vysledok4");
else:
echo ("Nulou sa deliť nedá");
endif;
?> Problém je ten, že tú podmienku "Nulou sa deliť nedá" mi tam vypisuje furt, aj keď som ešte žiadne číslo do formulára nenapísal |
||
johnl Profil |
jefitto44:
Za 1. nejdříve musíš ověřit, zda již došlo k odeslání formuláře a za 2. používat register_globals může být někdy vážnou bezpečnostní chybou, nikdo by Ti asi jeho používání v dnešní době nepochválil, zkus spíše používat $_POST .
Takto by měl nějak vypadat tvůj kód: 1<form method="get"> změn na method="POST" (nebo místo $_POST použij $_GET) <form method="get"> změn na method="POST" (nebo místo $_POST použij $_GET)
<input type="submit" value="Podiel">přepiš na: <input type="submit" name="podiel" value="Podiel">
<?php
if(isset($_POST["podiel"])){ # ověříš, zda bylo odesláno submit tlačítlo
if($_POST["delitel"] != 0)
{
$vysledek = $_POST["delenec"] / $_POST["delitel"];
echo "Podíl je: " . $vysledek;
}else{ echo "Nulou nelze dělit."; }
}
?> |
||
jefitto44 Profil |
#3 · Zasláno: 9. 1. 2014, 21:52:30
Počkaj... s php som začal včera... bezpečnostné veci momentálne absolútne vôbec neriešim...
Tomu overeniu submit tlačitka vôbec nechápem... čo tam mám overovať? Veď predsa ak nestlačí tlačitko, tak sa skript nerozbehne a nič sa nestane... či zle tomu chápem? |
||
johnl Profil |
jefitto44:
Ano, chápeš to špatně. :) Když já si načtu tvoji stránku, tak se PHP kód hned provede a jelikož uživatel nezadal žádné hodnoty, obě to bude brát jako 0 (false) a vypíše se Ti, že nulou nelze dělit. Musíš tedy kód dát do podmínky if(isset($_POST["podiel"])){ ... } což zajistí, že kód se provede až v momentě, kdy bude odesláno ono tlačítko. :)
„bezpečnostné veci momentálne absolútne vôbec neriešim“ Je lepší se ihned učit věci správněji - byť třeba trochu složitěji, než se poté složitě odnaučovat zlozvyky v kódu. :) |
||
jefitto44 Profil |
#5 · Zasláno: 9. 1. 2014, 21:56:19
Ale čo ak tam chcem nechať <form method="get">? Schválne som to nerobil cez post...
|
||
johnl Profil |
#6 · Zasláno: 9. 1. 2014, 21:59:38
jefitto44:
V tom případě použiješ místo $_POST proměnnou $_GET. :) Tedy if(isset($_GET["podiel"])){ ... } . Kód se poté provede až v momentě, kdy uživatel stiskne tlačítko, formulář se odešle a v $_GET bude $_GET["podiel"] = "Podiel"; > to už je ale nepodstatné. :)
|
||
jefitto44 Profil |
#7 · Zasláno: 9. 1. 2014, 22:22:19
Už mi to fachčí, ďakujem pekne :)
|
||
Časová prodleva: 11 let
|
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.
Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:
Běda vám, jestli to bude blábol.
0