Autor Zpráva
emissary
Profil
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
<title>reg4.php</title>
</head>

<body>
        
<?php 
    
if (isset($_POST['submit'])) 
    {
        if ($_POST['meno'] == "") {echo "Chýba meno";}
        elseif ($_POST['heslo'] == "") {echo "Chýba heslo";}
        elseif ($_POST['overheslo'] == "") {echo "Chýba heslo";}
        elseif ($_POST['heslo'] != $_POST['overheslo']) {echo "Hesla musia byt rovnaké";} 
        else {
            include "db1.php";
            $query = "INSERT INTO uzivatelia SET meno='$meno', heslo=MD5('$heslo')";
            $result = mysql_query ($query);
            if ($result) 
                    echo "Váš účet bol úspešne vytvorený";
                else
                    echo "Nebolo možné vytvoriť Váš účet, skúste neskôr";}
    }

?>    
<div align="center">
        <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
            <table>
                <tr>
                    <td>Login</td>
                         <td><input type="text" name="meno" value="" size="20" /></td>
                   </tr>
            <tr>
                    <td>Heslo</td>
                         <td><input type="password" name="heslo" value="" size="20" /></td>
            </tr>
            <tr>
                    <td>Opakuj heslo</td>
                         <td><input type="password" name="overheslo" value="" size="20" /></td>
            </tr>
            <tr>
                    <td colspan="2"><input  type="submit" name="submit" value="registruj"  /></td>
                   </tr>
            </table>
          </form>
</div> 
</body>
</html>


Ahojte!

1. poradí mi niekto, prečo sa môj formulár správa ako keby bol odoslaný?Pri načítaní stránky sa hneď spustí skript. Veď ten skript sa má spustiť až potom, čo stlačím "registruj". Prečo to tak nie je?

2. a keď sa už tak správa, prečo sa nezastaví hneď na prvej podmienke. tj
if ($_POST['meno'] == "") {echo "Chýba meno";}

Do
($_POST['meno'] )
vloží "meno"
($_POST['heslo'] )
vloží "heslo"
($_POST['overheslo'] )
vloží "overheslo"

Jediné čo ho zastaví je podmienka
elseif ($_POST['heslo'] != $_POST['overheslo']) {echo "Hesla musia byt rovnaké";}

keďže heslo a overheslo sa nerovnajú, tak vypíše "Hesla musia byť rovnaké" Keby, tam nie je táto podmienka, tak pri každom načítaní, vloží do databázy "meno" a "heslo".
holi
Profil
A co zkusit místo

<?php
if ($_POST['meno'] == "") {echo "Chýba meno";}
?>


Také isset
<?php
if (!isset($_POST['meno'])) {echo "Chýba meno";}
?
denCo
Profil
if ( !empty ( $_POST['submit'] ) ) {
  if ( empty ( $_POST['meno'] ) ) {echo "Chýba meno";}
  .....

toto by malo ísť
shaggy
Profil
emissary:
A keď ti odpovieme, tak opäť zmažeš svoj príspevok tak, ako minule? V takom prípade nevidím dôvod, prečo by sme ti mali radiť.
emissary
Profil
shaggy:
Lenže ako si poradil, tak som prerobil celý kód. A dal som tu nový. A mám tu iný problém. Ty si mi nič konkrétne neporadil. Prepáč.
shaggy
Profil
emissary:
A preto si zmazal starú otázku, hej? Nebolo by jednoduchšie pokračovať v tej téme aj s novým kódom? Ja som ti poradil až moc dobre, ale ty si očividne rady nezaslúžiš. Prepáč.
emissary
Profil
shaggy:
Fešák, nemám 12 rokov, aby som sa tu naťahoval s Tebou. Pokiaľ poznáš odpoveď a nechceš mi ju povedať, tak si ju nechaj pre seba. Mňa to nezaujíma. Snáď sa tu nájdu inteligentní ľudia, ktorí veľmi radi poradia a poprípade mi vysvetlia, prečo sa
if (isset($_POST['submit']))

pri načítaní stránky chová ako keby bol odoslaný formulár - teda stlačená tlačidlo "submit".
holi
Profil
Protože i žádné hodnota submitu něco odesílá tzn. nehodnota má svou hodnotu něco jako hodnota "null" nebo trua a false to samé s inputama, takže ty po načtení stejnak odešleš hodnotu submit false nebo jak se to dá říct, tím tvá podmínka se submitem je platná ... takže využíj empty jak ti radil denCo
Alphard
Profil
emissary:
Pri načítaní stránky sa hneď spustí skript.
To není možné. Radši jsem to zkoušel, kdyby se chtěl někdo hádat :-)

Každopádně si vypište pole $_POST a bude to jasné. print_r($_POST);

Pokud jde o to přepsané vlákno, nejsme na to zvyklí. Doufám, že se to nebude opakovat.
emissary
Profil
Ďakujem všetkým, na problém som nakoniec prišiel. Keď som zmenil niečo v kóde, uložil na servery a opätovne načítal stránku, tak to začalo blbnúť. Aj keď som zavrel stránku, ale len okno, nie celý prehliadač a znova otvoril. Takže som musel zavrieť celý prehliadač. Po tomto to už šlo normálne. Takže každú zmenu v kóde riešim reštartovaním prehliadača. Sorry, že som Vás tu zavádzal. Ale nečakal som takúto "zradu". Ďakujem...
denCo
Profil
emissary:
Aj hej, tak stačí obyčajne refreshnúť stránku napr. F5, ale aj tak je to trošku blbé keď niečo nefunguje na prvý krát, tak hneď zakladať tému a nevyskúšať to viac krát a napr. iným prehliadačom.
emissary
Profil
denCo:
Ja som sa s tým narobil pol dňa. A toto ma nenapadlo. A refreshnúť stránku nestačilo.... po každé musím zavrieť prehliadač a znova ho spustiť.
holi
Profil
emissary:
Ja som sa s tým narobil pol dňa. A toto ma nenapadlo. A refreshnúť stránku nestačilo.... po každé musím zavrieť prehliadač a znova ho spustiť.

Co používáš za prohlížeš já si teto anomalie všiml u nejnovější Opery která nehodlá měnit ani změnu v HTML nebo CSS takže musíš držet cca déle jako 2-3 sekundy F5, na chvíly ti zbělá obrazovka a stránka se načte znova a zaktualizuje se.

PS: Opera je výborný prohlížeč ale na tvorbu webu doporučuji mozilu nebo chrome ;)

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: