Autor | Zpráva | ||
---|---|---|---|
sitole Profil |
Ahoj, vytvářím si opravdu jednoduchou administraci pro svoje weby :)
Můj kod v souboru index.php ¨<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <meta http-equiv="Content-Language" content="cs"> <meta charset="windows-1250"> <link href="css/icon.png" rel="icon" type="image/png" /> <title>SITOLE :: Administrační systém pro jednoduché weby a blogy</title> <link rel="stylesheet" href="css/style.css"> <meta name="description" content="Administrační systém pro jednoduché weby a blogy."> <meta property="og:title" content="Administrace"> <meta property="og:site_name" content="Administrace"> <meta property="og:description" content="Administrační systém pro jednoduché weby a blogy."> <link rel="author" href="http://facebook.com/sitoleTV"> </head> <body> <br> <!-- Soubor s administrací --> <form action="administrace.php" method="post"> <!-- Soubor s administrací --> <center> <h2>Administrační systém</h2> <h1>SITOLE</h1> <!-- Samostatný formulář --> <input type="submit" value="Přihlásit" name="submit" class="submit" /><br> <br><label for="name">Jmeno </label> <input type="text" name="jmeno" value="<?echo $_POST["jmeno"]?>"> <label for="name">Heslo </label> <input type="password" name="heslo"> <!-- Samostatný formulář --> <br><br><h4>Jiří Svěcený 2015 Verze 0.1</h4> </center> </form> </body> </html> A kod v souboru administrace.php <? if($jmeno=="admin") $heslo1=klab455545an; elseif($jmeno=="uzivatel2") $heslo1=heslo2; elseif($jmeno=="uzivatel3") $heslo1=heslo3; ?> <? if($heslo==$heslo1) echo "Kod stránky : Všechny \" musí být odraženy symbolem \ Jinak to nejde!"; else echo "Špatne heslo!" ?> Proč když do formuláře zadám všechny možné znaky.. (Ty které nejsou v proměné heslo1 se stejně zobrazí text obsažený zde) <? if($heslo==$heslo1) echo "Kod stránky : Všechny \" musí být odraženy symbolem \ Jinak to nejde!"; Předem děkuji :)
|
||
lionel messi Profil |
#2 · Zasláno: 4. 4. 2015, 11:50:30
sitole:
Odpoveď je: Regsiter globals Ďalej mi súbore administrace.php mi padla do oka syntaktická chyba (aspoň predpokladám, že ide o chybu): <? if($jmeno=="admin") $heslo1="klab455545an"; elseif($jmeno=="uzivatel2") $heslo1="heslo2"; elseif($jmeno=="uzivatel3") $heslo1="heslo3"; ?> Reťazce sa v PHP uzatvárajú do úvodzoviek/apostrofov, predpokladám, že kab455545an nemá byť konštanta (tie sa zvyknú písať notáciou PASCAL_CASE (veľkými písmenami)).
Taktiež by som používal na ohraničenie PHP kódu dlhý otvárací tag <?php , krátka verzia je závislá na povolení konfiguračnej direktívy short_open_tag a osobne uzatváram do zložených zátvoriek aj podmienky tvorené jedným príkazom.
|
||
Keeehi Profil |
#3 · Zasláno: 4. 4. 2015, 11:52:44
1. používej
<?php a ne jen <?
2. řetězce (konce řádků 1-3) mají být v uvozovkách " nebo apostrofech '
3. proměnné $jmeno a $heslo neexistují, můžou existovat $_POST["jmeno"] a $_POST["heslo"] >>
$jmeno = isset($_POST["jmeno"]) ? $_POST["jmeno"] : ""; $heslo = isset($_POST["heslo"]) ? $_POST["heslo"] : ""; |
||
sitole Profil |
#4 · Zasláno: 4. 4. 2015, 12:48:53
Můj kod v soubor administrace.php je nově následovný
<?php if($jmeno=="admin") $heslo1=klab455545an;' elseif($jmeno=="uzivatel2") $heslo1=heslo2;' elseif($jmeno=="uzivatel3") $heslo1=heslo3;' ?> <?php if($heslo==$heslo1) echo "Kod stránky : Všechny \" musí být odraženy symbolem \ Jinak to nejde!"; else echo "Špatne heslo!" ?> A nechápu tu třetí část „$_POST["jmeno"] a $_POST["heslo"]“ To bude tedy místo $heslo1 $_POST["heslo"] ? :) |
||
lionel messi Profil |
#5 · Zasláno: 4. 4. 2015, 13:28:39
sitole:
> A nechápu tu třetí část > „$_POST["jmeno"] a $_POST["heslo"]“ > > To bude tedy místo $heslo1 $_POST["heslo"] ? :) Nie. Pomocou podmienky od Keeehiho zistíš, či sú nastavené premenné z formulára a podľa výsledku inicializuješ premennú $heslo . Ak bolo heslo zadané do formulára, „skopíruje“ sa jeho hodnota zo superglobálneho poľa $_POST do lokálnej premennej $heslo . V opačnom prípade bude v $heslo prázdny reťazec.
Navyše, kód v [#4] skončí syntaktickou chybou, reťazce sa ohraničujú iným spôsobom, pozri [#2]. |
||
Časová prodleva: 10 let
|
0