Autor Zpráva
jefitto44
Profil
Mám minikalkulačku, ktorá vie iba deliť. Podmienkou chcem ošetriť delenie nulou. Kód je taký:
<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:
<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
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
Ale čo ak tam chcem nechať <form method="get">? Schválne som to nerobil cez post...
johnl
Profil
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
Už mi to fachčí, ďakujem pekne :)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: