Autor Zpráva
Měsíček
Profil
Chtěl bych upozornit na jednu chybu, která mě docela bije do očí - tato chyba je na stránce http://www.jakpsatweb.cz/heslo.html kde Yuhů přibližně ve prostřed ukazuje způsob zaheslování stránky pomocí PHP; skript, který podává je špatně napsán. Pokročilý mrkem oka uvidí co je špatně a sÁM si to opraví, ale na JPW obvykle chodí začátečníci, kteří o PHP neví zhola nic a tak ani nezjistí, že tohle je chyba, dále jsem zjistil, že mnoho lidí i na tuto chybnou stránku odvolávalo ve svých příspěvcích a obvykle s tím nakonec byly potíže, takže chybný skript:

<body>
<? if($GET["heslo"] != "mellon"): ?>
    <!--přihlaąovací formulář -->
    <form>
        Zadej heslo: <input type=password name="heslo">
        <input type=submit>
    </form>
<? else: ?>
    <h1>Vítejte v Morii!</h1>
    ... daląí tajný text
<? endif ?>
</body>
a zde je opravený

<body>
<?php if($_GET["heslo"] != "mellon"){ ?>
    <!--přihlaąovací formulář -->
    <form action="" method="GET">
        Zadej heslo: <input type="password" name="heslo">
        <input type="submit">
    </form>
<?php } else { ?>
    <h1>Vítejte v Morii!</h1>
    ... daląí tajný text
<?php } ?>
</body>
- Nechyba (místo <? přeměněno na <?php)
- Nechyba (přidány uvozovky)
- Chyba (místo $GET přeměněno na $_GET)

Jestliže toto vlákno Yuhů v brzké době nezpozoruje tak mu pošlu e-mail, dal jsem to tady také kvůli těm, kteří se na tuto stránku odvolávají a také pro začátečníky, kteří na tento skript natrefili a nefungoval jim.

EDIT: tedy další nápad (od uživatele joe) rovnou celé předělat do možnosti posílání jako POST a ne přes GET tedy:

<body>
<?php if($_POST["heslo"] != "mellon"){ ?>

    <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST">
        Zadej heslo: <input type="password" name="heslo">
        <input type="submit">
    </form>
    
<?php } else { ?>
    <h1>Vítejte v Morii!</h1>
    ... daląí tajný text
<?php } ?>
</body>
joe
Profil
Možná by neškodilo posílat heslo pomocí POST, když už by došlo k těm úpravám.
Str4wberry
Profil
Zobrazovat „heslo“ v adrese (metoda GET) je pro pochopení (podle mě) lepší.


Reakce na Měsíčka:
1. „action="" method="GET"“ — je zbytečné
2. Proč jsi měnil styl zápisu té podmínky?
Měsíček
Profil
1. „action="" method="GET"“ — je zbytečné

A není tak čistě náhodou atribut action="" povinný? method="GET" je defaultní .. takže ten zbytečný je, jde o přehlednost.

"2. Proč jsi měnil styl zápisu té podmínky?"

Protože je to IMHO přehlednější .. osobně bych to udělal ještě jinak, ale snažil jsem se držet celkového vzoru toho skriptu.
Yuhů
Profil
děkuju, opravím.

Typická lameřina. Upravoval jsem proměnné z tvaru $heslo a upsal jsem se.

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: