Autor | Zpráva | ||
---|---|---|---|
RastyAmateur Profil |
Dobrý den, opravdu již nevím, proč mi to stále hlásí "Parse error: syntax error, unexpected '}', expecting ',' or ';' in G:\web\Programy\VertrigoServ\www\tjsh\action_novinky2.php on line 44". Mám kód:
<?php # Legenda $legend = $_POST['legend']; $nadpis = $_POST['nadpis']; $text = $_POST['text']; $pass = $_POST['heslo']; $password = "krtek"; $password1 = "sysel"; # Podpisy if ($pass == $password) $autor = "Krtek"; if ($pass == $password1) $autor = "Sysel"; # Vložení příspěvku do "novinky_archiv.txt" if ($pass == $password or $password1){ file_put_contents("novinky_archiv.txt", "<fieldset><legend>".$legend."</legend><b>".$nadpis." </b><br>".$text."<br><i><small><small>".$autor."</small></small></i></fieldset>"."\r\n".file_get_contents("novinky_archiv.txt")); # Oznámení echo' <h1 style=/"font-size: 50px;/"> Příspěvek byl úspěšně přidán! </h1> <div style="text-align: center;"> <span class="_002"> <a href="novinky.php">Pokud Váš prohlížeč nepodporuje automatické přesměrování, klikněte zde! </span> </div> ' } else { echo ' <h1 style=/"font-size: 35px;/"> Příspěvek nebyl přidán, heslo nebylo zadáno správně! </h1> <div style="text-align: center;"> <span class="_002"> <a href="novinky.php">Pokud Váš prohlížeč nepodporuje automatické přesměrování, klikněte zde! </span> </div> '} ?> Kde je chyba? Primitivní kód!! Dodávám: line 44 = " } elseif { echo '" (line 27)
|
||
juriad Profil |
#2 · Zasláno: 25. 6. 2014, 17:30:05
Řádek 17: Za echem musí být mezera.
Řádek 26: Na konci chybí středník. Řádek 36: Za apostrofem chybí středník. Chybová hláška: Nečekáná uzavírací složeně závorka, očekávaná čárka nebo středník. |
||
RastyAmateur Profil |
Díky :-) Již mi to funguje, ale stále ne tak jak bych chtěl :(
|
||
Joker Profil |
RastyAmateur:
Chyby syntaxe = špatně napsaný kód se v první řadě snažte najít sám. Použijte editor, který na ně upozorňuje rovnou při psaní kódu. Viz také Jaký editor pro PHP (přehled editorů), nebo povídání o editorech na Péhápko.cz. Jelikož není označené co je řádek 44, nevím, jestli to je ta chyba, ale například řádek 27 je nesmysl: } elseif { echo ' Kromě toho tam je spousta potenciálních problémů a z pohledu logického je docela vtipné třeba tohle: if ($pass == $password or $password1) Doplnění: Než jsem to napsal, obsah vlákna se poněkud aktualizoval. |
||
RastyAmateur Profil |
#5 · Zasláno: 25. 6. 2014, 17:36:10 · Upravil/a: RastyAmateur
Joker mohl by jsi mi prosím blíže vysvětlit to s tou podmínkou? Jak mám tedy udělat, aby to fungovalo?
Tak předtím mi nefungovalo $password1 a nyní mi to tam hází příspěvky i se špatným heslem :( |
||
Joker Profil |
#6 · Zasláno: 25. 6. 2014, 17:42:51
RastyAmateur:
Tak odhadoval bych, že $password1 se má taky kontrolovat proti $pass? if (($pass == $password) or ($pass == $password1)) Ale budoucí přidání dalšího uživatele do takového kódu bude opravdu „radost“. Když už nic, alespoň by mohli uživatelé být definovaní na začátku jako pole a testovat, jestli heslo (nebo spíš bych řekl něco jako přístupový klíč) v poli existuje a podle toho vybrat jméno. |
||
RastyAmateur Profil |
#7 · Zasláno: 25. 6. 2014, 17:48:26
Joo! díky Joker, konečně mi to funguje..
Nemyslím si, že by přidání "uživatele" bylo nějak složité. Nastavím pro něj jen $passwordX, vložím ho do podmínky a vytvořím pro něj $autora... Vím, že pomocí MySQL by to jistě šlo řešit mnohem lépe, ale nevím jak udělat, aby mi SQL při vypisování dalo každou novinku do jednoho fieldsetu... A co myslíš tím, že by uživatelé mohli být definováni a testováni na začátku a to s tim přístupovým kódem? Ještě jednou díky :) |
||
juriad Profil |
#8 · Zasláno: 25. 6. 2014, 17:58:46
# definujeme uživatele: $users = array( 'pass1' => 'user1', 'pass2' => 'user2' ); # pokud v poli $users neexistuje klíč $pass if (!isset($users[$pass])) { # nepřihlášenému se ukáže chyba exit("Nemáš oprávnění!"); } $autor = $users[$pass]; # sem se dostane jen přihlášený uživatel |
||
Joker Profil |
RastyAmateur:
„Nemyslím si, že by přidání "uživatele" bylo nějak složité. Nastavím pro něj jen $passwordX, vložím ho do podmínky a vytvořím pro něj $autora...“ A přidat jméno autora. Když vezmu, že ten skript se skládá prakticky z definice hesel, definice podpisů a toho IF-u vypisujícího HTML kód, všechno z toho se musí při přidání uživatele upravit. „Vím, že pomocí MySQL by to jistě šlo řešit mnohem lépe, ale nevím jak udělat, aby mi SQL při vypisování dalo každou novinku do jednoho fieldsetu“ Nemusí to být hned databáze, ale alespoň něco, co půjde snadno upravit. Docela primitivní řešení by bylo: <?php // Definice uživatelů $uzivatele = array( /* jeden uživatel je array, abych šly případně evidovat i další věci kromě jména */ "krtek" => array("jmeno" => "Krtek") , "sysel" => array("jmeno" => "Sysel") ); $klic = $_POST["heslo"]; // Pokud v poli uživatelů heslo existuje jako klíč, je přihlášen $prihlasen = array_key_exists($klic, $uzivatele); if ($prihlasen) { $jmeno = $uzivatele[$klic]["jmeno"]; // uděláme akce pro přihlášeného uživatele } juriad byl opět rychlejší :) Obě řešení jsou hodně podobná, ale tak nechávám i to moje. |
||
RastyAmateur Profil |
#10 · Zasláno: 25. 6. 2014, 18:05:39
Abych toto zmákl, natolik PHP neumím, jsem rád, že jsem pochopil, co jste mi tu napsali :) Ještě jednou děkuji, pro dnešek končím :) Ahojte
|
||
Joker Profil |
#11 · Zasláno: 25. 6. 2014, 18:08:38
RastyAmateur:
Tak co zkusit nějakou učebnici, třeba obligátní Péhápko? |
||
RastyAmateur Profil |
Joker, ty jsi doplnil text v #4. Ano, za to se omlouvám, pokud si správně vzpomínám, u "elseif" jsem umazával "-if"...
A ještě jsem v prvním příspěvku doplnil Legendu |
||
Časová prodleva: 10 let
|
0