Autor Zpráva
peter_r
Profil
mám vytvorenú funkčný kód, ktorý mi po odoslaní zapíše údaje do db

potrebujem ale urobiť, že po vypísaní inputov a stlačení tlačidla najskôr údaje vypíše na kontrolu a stlačením ďalšieho tlačidla ich zapíše do db

čiže najskôr mám:

<form action="kontrola.php" method="get" >
        <input type="text" name="nazov">
        <input type="submit" value="Skontrolovať">
        </form>

čo by malo byť OK, v kontrola.php tieto údaje vypíšem:

<?php echo $_GET['nazov'] ?>

ale neviem ako ich zapísať do db, skúsal som toto:

if ($_POST)
        {
            Db::query('
            INSERT INTO tabulka (nazov)
            VALUES (?)
            ', $_POST['nazov']);
        }
        
        <form method="post">
            <?php echo $_GET['nazov'] ?>
            <input type="submit" value="Odoslať">
          </form>

viem že tu musím niekde zadefinovať $_POST['nazov'] = $_GET['nazov'] ale tu som v koncoch, prosím o radu, ďakujem.
lionel messi
Profil
peter_r:
čo by malo byť OK, v kontrola.php tieto údaje vypíšem:
>
>
<?php echo $_GET['nazov'] ?>

1. Skús navštíviť kontrola.php?nazov=<script>alert("Prečítaj si niečo o XSS útoku")</script>. Slovíčka na ďalšie štúdium sú XSS a htmlspecialchars (prípadne stačí pretypovanie na číslo, ak pracujeme s číslami).

2. Keď už, tak predať hodnotu pomocou value (ošetrenie zámerne neuvádzam):

<form method="post">
            <?php echo $_GET['nazov'] //toto si poriadne ošetri ?>
            <input type="hidden" value="<?php echo $_GET['nazov'] //aj toto si poriadne ošetri ?>" name="nazov">
            <input type="submit" value="Odoslať">
          </form>

3. Celkovo to nie je príliš dobrý spôsob a určite existuje lepšia alternatíva. Ak robíš čosi ako nákupný košík, použi session. Ak je to čosi ako registračný formulár, stačil by jeden formulár.

Bežný postup trebárs pre registračný formulár by mohol byť plus-mínus takýto:

Užívateľ vypíše dáta do formulára. Tie sa na rovnakej stránke po odoslaní spracujú (kontrola, či je vyplnené všetko potrebné, kontrola unikátnosti mena, náležitostí hesla, formátu e-mailu...). Prípadné chyby si v PHP uložíme do poľa.

Po validácii kontrolujeme, či je pole prázdne (nevyskytla sa chyba). Ak áno, zapíšeme dáta. Ak nie, do formulára (stále rovnakého) vypíšeme dáta, ktoré už užívateľ zadal (ošetrené proti XSS) a na vhodné miesto príslušné chybové hlášky.
peter_r
Profil
ošetriť znamená upraviť aby som predišiel nejakému zneužitiu zo strany návštevníka?

čiže toto je OK?

<?php echo htmlspecialchars($_GET["nazov"]); ?>
lionel messi
Profil
peter_r:
ošetriť znamená upraviť aby som predišiel nejakému zneužitiu zo strany návštevníka?

Asi som nemyslel, že máš tomu vstupu podať penicilín...

Pokiaľ ide o to nejaké zneužitie, skúsil si si názornú ukážku z [#2] a čosi prečítal?

čiže toto je OK?

Áno.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0