Autor | Zpráva | ||
---|---|---|---|
Amaterupl Profil |
Ahoj,
učím se PHP. Ale mám teď problém se syntaxí jednoho příkazu (asi se budete smát, ale jsem úplný začátečník): Zde můj kód pro zaheslování zobrazení stránky aktualni.html (funguje..., ale vždy pouze jen na jedno heslo): zadej heslo <form action="t.php" method="post"> <input name="heslo" type="password"> <input type="submit" value="ok"> </form> <?php $heslo =$_POST['heslo']; if ($heslo=="aa") include "aktualni.html"; else echo "Chybné heslo"; ?> Ale potřeboval bych, abych do toho rozhodovacího bloku "if" mohl zadat ještě více možných hesel, tedy nějak do tohoto bloku vložit podmínku "nebo". Např. tedy, že uživateli se zobrazí stránka "aktualni.html", pokud zadá heslo "aa" nebo "22" nebo "fk5" nebo "88" nebo "koj" nebo atd. atd. .... Pokouším se to nějak napsat pomocí logického operátoru "||" , ale nějak mi to pořád nejde. Můžete mi prosím poradit nebo tu syntaxi rovnou napsat? Předem Vám moc a moc děkuji za vaši ochotu a laskavost, Moderátor juriad: Neobaluj prosím celý příspěvek mezi značky [>pre] a [>/pre]. Moderátor juriad: Nikdy nezakládej duplicity. Myslíš-li, že vlákno potřebuje nějakou úpravu, zavolej moderátora napsáním třech m>mm
|
||
Taps Profil |
Nejlpsi by bylo podle me hesla ulozit do pole a pak kontrolovat vyskyt v poli
<? $hesla = ['heslo1', 'heslo2']; If (in_array($heslo,$hesla)){ Echo ' heslo je spravne'; }else{ Echo ' chyyba'; } ?> |
||
RastyAmateur Profil |
if($heslo == "aa") or ($heslo == "bb")) Taps: Já než to na tom mobilu napíšu... Ale máš prohozené argumenty ve funkci. |
||
Amaterupl Profil |
#4 · Zasláno: 19. 3. 2016, 11:43:03
RastyAmateur:
díky moc, já jsem rád, že zatím "vůbec jsem", zkusím to :) |
||
Taps Profil |
#5 · Zasláno: 19. 3. 2016, 11:48:21
RastyAmateur:
Diky za upozorneni, opravil jsem to - taky pisi z mobilu :-) |
||
Amaterupl Profil |
#6 · Zasláno: 19. 3. 2016, 11:51:09
tak jsem tu jednodussi variantu zkusil vlozit, ale nejede to...
takto jsem to napsal, co tam muze byt za chyba (v mezerách, v závorkách? ....)? zadej heslo <form action="t.php" method="post"> <input name="heslo" type="password"> <input type="submit" value="ok"> </form> <? $heslo =$_POST['heslo']; if($heslo == "aa") or ($heslo == "bb")) include "aktualne.html"; else echo "Chybné heslo"; ?> |
||
Taps Profil |
#7 · Zasláno: 19. 3. 2016, 11:52:50
Chybi ti zavorka u if
|
||
Amaterupl Profil |
#8 · Zasláno: 19. 3. 2016, 12:01:14
ÚÚÚUŽ to frčí.... jste fakt dobří.... je to paráda učit se u odborníků.... DÍKY MOC
|
||
juriad Profil |
A dost. Pánové, chápu, že chcete poradit, ale opravdu musíte svůj příspěvek plný chyb naklepat za několik sekund na mobilu? Nikomu tím nepomáháte, vlákno se zaplevelí vzájemným poukazováním chyb.
Amaterupl: Lépe použij řešení od Tapse, to je teď správné a v připadě většího počtu hesel i nejpřehlednější. Ještě ti doporučím u podmínek vždy psát závorky { } , každý příkaz psát na nový řádek a vyhnout se operátoru or (nahradit jej za || , který jsi správně chtěl použít).
|
||
Amaterupl Profil |
#10 · Zasláno: 19. 3. 2016, 12:11:21
aha, tak to za chvili zkusim podle TAPSE,
Juriade, může tě poprosit, napsal by jsi sem ten script i s těmi závorkami } { podle tebe, Díky moc, ať v tom nemám chaos už od začátku , díky moc |
||
Keeehi Profil |
Amaterupl:
Zejší diskutéři sepsali nějaké základy PHP. Zde jsou popsané podmínky. Hned na začátku je popsán právě ten problém se závorkami. Doporučuji si pak projít celou učebnici. |
||
juriad Profil |
<?php # vždy používej dlouhý otevírací tag, zkracené totiž vyžadují speciální konfiguraci PHP # tímto zajistíš, že když uživatel přijde na t.php jinak, než skrz formulář s heslem, tak mu vynadáš if (!isset($_POST['heslo'])) { # pokud neexistuje heslo: die("Nevyplněné heslo"); } # teď víme, že heslo existuje, můžeme si ho přiřadit do proměnné $heslo = $_POST['heslo']; # pole obsahující povolená hesla $hesla = ['aa', 'bb']; if (in_array($heslo, $hesla)) { # pokud je heslo mezi povolenými include "aktualne.html"; } else { echo "Chybné heslo"; } # pokud nic dalšího v souboru není, nemusíš psát zavírací značku ?> Všimni si také, kde píši v zdrojovém kódu mezery. Opraveno, doplnil jsem na 4. řádku podtržítko. Omlouvám se. |
||
Amaterupl Profil |
Juriade zkouším to.
Když spustím ten jednoduchý skript od Rastyamateura, tak to funguje bezvadně. I když tam vložím třeba 50 hesel. Ale když spustím ten tvůj-Tapsův, tak to pořád píše pouze hlášku "Nevyplněné heslo" (a to i když nějaké heslo vložím do okénka) |
||
juriad Profil |
Amaterupl:
Opravil jsem to. Ta proměnná se má jmenovat $_POST , nikoli $POST . Sypu si popel na hlavu.
|
||
Amaterupl Profil |
#15 · Zasláno: 19. 3. 2016, 14:03:53
no joo, už to frčí... tak už vím pár chyb, na které si dávat pozor... tady se líp učí, jak podle nějaké knihy...
ještě mi prosím řekni, co vlastně znamenají ty závorky {} ... k čemu jsou dobré? |
||
RastyAmateur Profil |
Amaterupl:
Označuje blok příkazů, které se mají provést, pokud je (není) podmínka splněná. Pokud je tam nedáš, podmínka se vztahuje pouze na první následující příkaz. <?php if(1 == 2) echo "Jedna"; echo "Dva"; echo "Tři"; # Vypíše to "DvaTři" if(1 == 2){ echo "Jedna"; echo "Dva"; } echo "Tři"; # Vypíše to "Tři" ?> |
||
juriad Profil |
#17 · Zasláno: 19. 3. 2016, 14:44:17
Amaterupl:
Ty se používají, když máš víc přikazů v podmínce: if (1 < 2) { echo "To asi nikoho nepřekvapí, že:"; echo "1 < 2"; } else { echo "Vesmír se nám zhroutil."; echo "Utíkejte, co vám jen nohy stačí"; } Porovnejme to všemi možnými variantami. Upozorňuji, že odřádování a odsazení nemá v PHP žádný význam, používá se jen pro tvé pohodlí a zvýšení čitelnosti. if (1 < 2) echo "To asi nikoho nepřekvapí, že:"; echo "1 < 2"; else echo "Vesmír se nám zhroutil."; echo "Utíkejte, co vám jen nohy stačí"; else není očekávané. První přikaz po ifu je podmíněný, druhý je už úplně mimo podmínku a else k ničemu nepatří.
if (1 < 2) { echo "To asi nikoho nepřekvapí, že:"; echo "1 < 2"; } else echo "Vesmír se nám zhroutil."; echo "Utíkejte, co vám jen nohy stačí"; echo je už mimo else , podmíněný je jen první příkaz.
if (1 < 2) echo "To asi nikoho nepřekvapí, že:"; echo "1 < 2"; else { echo "Vesmír se nám zhroutil."; echo "Utíkejte, co vám jen nohy stačí"; } Často se doporučuje složené závorky psát vždy. Protože se můžeš rozhodnout přepsat původně funkční kód: if (1 < 2) echo "To asi nikoho nepřekvapí, že: 1 < 2"; else echo "Vesmír se nám zhroutil. Utíkejte, co vám jen nohy stačí"; Můžeš tedy uvažovat tak, že závorky automatikcy patří za: if, else, for, foreach, while, do .
Někdy jsou totiž ty závorky povinné: class, interface, trait, function, switch, try, catch, finally .
Někdy je možné nahradit konstrukci se závorkami za dvojtečkovou notaci, ale tomu se doporučuji vyhnout. |
||
Amaterupl Profil |
#18 · Zasláno: 19. 3. 2016, 14:49:47
díky moc..., ty joo, to je dobrý, to si proštuduju
|
||
Časová prodleva: 9 let
|
0