Autor Zpráva
Welton123
Profil
Dobrý den, mám html formulář a potřebuji docílit toho, aby, když uživatel vyplní do pole "heslo" předem nastavené heslo tak to formulář odešle, ale pokud v tom poli bude jiný text/slovo a klikne na odeslat, tak se to neodešle. Nemáte návrh jak toho docílit? Předem děkuji

<form action="" method="post"></br>
<input type="text" name="jmeno" value="" placeholder="Vaše jméno"></br>
<input type="email" name="email" value="" placeholder="Váš email"></br>
<input type="text" name="heslo" value="" placeholder="Zadejte heslo"></br>
<input type="submit" value="Odeslat formulář">
Joker
Profil
Welton123:
Kde je problém?
Prostě po odeslání formuláře bude serverový kód, který pokud heslo se rovná něčemu pokračuje ve zpracování a pokud ne, vypíše odpovídající hlášku.
RockFire
Profil
Welton123:
Přesně podle popisu se to dá udělat jen javascriptem. ten si ovšem může kdokoliv přečíst. Takže máš dvě možnosti:

1) Odeslat, zpracovat na serveru (např. PHP) a pokud se heslo rovná, pak se stane co chceš, pokud ne, tak načíst stejnou stránku a např. pomocí session doplnit obsah formuláře jak byl s nějakou chybovou hláškou.

2) Druhá varianta je použít AJAX, tedy přes JavaScript poslat nějakému PHP souboru ono heslo a zkontrolovat, co vrátí a podle toho pak odeslat či neodeslat. Tuto variantu ale stejně musí doplnit varianta 1.!

Joker:
Předpokládám, že chce docílit opravdu neodeslání.
Joker
Profil
RockFire:
Předpokládám, že chce docílit opravdu neodeslání.
Otázka, jestli myslel neodeslání formuláře na server, nebo neodeslání e-mailu s daty formuláře.

Bez odeslání na server to nejde*, protože minimálně to heslo se na kontrolu poslat musí. No a jestli má celkem tři políčka plus odesílací tlačítko (čili rozdíl mezi odesláním všeho a jen hesla je mizivý), je zbytečné se pytlíkovat s AJAXem, který nejdřív odešle jedno políčko a následně se znovu odešle celý formulář.

* Resp. jde tím Javascriptem, ale to se to rovnou nemusí dělat vůbec, když si a) heslo každý může přečíst v kódu a b) to jde obejít vypnutím Javascriptu.
RockFire
Profil
Rozhodně souhlasím, proto jsem uvedl tu 1. variantu. Ale dovedu si představit hru celou fungující přes JavaScript, kde něco takového je potřeba. Vypnutí JavaScriptu vypne hru a díky AJAXu nepůjde heslo přečíst. Sice se to musí i po odeslání zkontrolovat, kdyby chtěl někdo útočit, ale pro normálního uživatele to funguje správně. Nicméně možnost využití zřejmě velmi malá.
Joker
Profil
RockFire:
AJAX ovšem pořád znamená odeslání dat na server.
Pokud tam jsou čtyři políčka (jméno, e-mail, heslo a odesílací tlačítko), nevidím žádný přínos v tom předběžně kontrolovat samotné heslo, pak odeslat celý formulář a kontrolovat ho ještě jednou.
Kdyby se tím nahrával třeba gigabajtový soubor na server, tak to by smysl mělo, aby uživatel nečekal dvě hodiny na nahrání dat, jen aby mu to pak napsalo, že má špatné heslo.
RockFire
Profil
Joker:
Ano, ale bez refreshe stránky. Já souhlasím, že je to zbytečné, ale k tomu dodávám, jak to udělat.
Welton123
Profil
Myslel jsem to tak, že pokud by se heslo schodovalo tak po kliknutí by se to zapsalo do souboru (to už mám) a když by zadal heslo špatné tak by se nestalo nic, stranka by se např. jen načetla znova.
Neznám ještě tak dobře php, ale napadlo mě, zda by to nešlo pomocí
$heslo = $_POST["heslo"];

if ($heslo == 12345);
RockFire
Profil
Welton123:
A vidíš, jakou diskusi vyvolal nesprávně položený dotaz?

Jinak ano, takto to řešit jde, dokonce bez toho prvního řádku, tedy:

<?php
if($_POST["heslo"] == "12345")
{
  // Zapsání do souboru
}
else
{
  // Patrně nějaká chybová hláška
}
?>
Welton123
Profil
Tak to se omlouvám :// a děkuji :)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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