Autor Zpráva
W4C
Profil *
Hola,
Mám na začátku stránky "rádoby" funkční validátor IP/URL.-ten neřeším, protože šlape /zdá se/dobře

Po otestování zadané IP/URL ve validátoru se na základě odpovídajícího return kódu provede další operace
Return kódy 0 a 5 znamenají chyby v rozsahu/formátu/platnosti zadané IP/URL

Jedná se mi o to, že chci, pokud se vrátí tyto dva return kódy 0 a 5 a pokud $adh není vůbec zadaná , aby se celý následující obsah stránky s výsledky vynechal (neprovedl ani nezobrazil)

Validátor:
check_ip_address($adh){
...
...
}


Zápis:
 $adh="12" //zadána chybná IP - vyvolá to kód 5
$CHK1=(check_ip_address($adh)); //tady adresa projde validátorem a dosadí se return kód do .$CHK1 ($adh je zadaná IP/URL)
ECHO "CHK1:".$CHK1; //kontrola jestli return kód je vpořádku - je (kód je 5)
if((!Empty($adh) || ($CHK1 != "0") || ($CHK1 != "5")){          //a tady je problém, "obsah celé stránky" se provádí, ikdyž nemá

obsah celé stránky

}
else echo "ZADEJTE ADRESU";


Pokud ale zapíšu:
if(!Empty($adh)) {

obsah celé stránky

}
else echo "ZADEJTE ADRESU";


$adh v tomto případě byla odeslána prázdná a následující obsah se správně podle podmínky nenačet(zde return kód není).
Takže problém bude někde v ....|| $CHK1 != "0" || $CHK1 != 5")
Kde je chyba?
janbarasek
Profil
W4C: Tady: http://php.baraja.cz/if.php je několik ukázek, jak na to. nejčastější chyby, a jak vůbec podmínku vytvořit.
shaggy
Profil
janbarasek:
Namiesto spamovania a neustáleho odkazovania na svoj web, by si mohol radšej poradiť. Ak nevieš, poradiť, tak nepíš. Ty očividne nevieš poradiť, zvyšok si domysli sám.

W4C:
Môj laický a amatérsky názor je ten, že chyba je v tomto riadku:
if((!Empty($adh) || ($CHK1 != "0") || ($CHK1 != "5")){ 

mám pocit, že tam máš o jednu uzatváraciu zátvorku menej (celkovo tvoje používanie zátvoriek je povedzme "neštandardné"). Ale čudujem sa, že ti nevyhodí chybu a prebehne to.
fajzen
Profil
W4C:
no, je to problém logiky... Keď prevedieš tú podmienku do ľudskej reči, dostaneš:
Ak $adh nie je prázdne ALEBO $CHK1 nie je nula ALEBO $CHK1 nie je päť, vykonaj...
Vidíš ten problém? ALEBO $CHK1 nie je nula ALEBO nie je 5... Jedno z toho musí zákonite platiť vždy...

Daj v podmienke namiesto alebo (||) a zároveň (&&) a bude to správne (teda až na tú jednu chýbajúcu zátvorku, ako písal shaggy)
imploder
Profil
if((!Empty($adh) || ($CHK1 != "0") || ($CHK1 != "5")){ 

5 otevíracích závorek, 4 uzavírací - nesedí to, mělo by to havarovat na syntaktické chybě.
Možná oprava:
if((!Empty($adh)) || ($CHK1 != "0") || ($CHK1 != "5")){ 
W4C
Profil *
fajzen:
Díky,máš pravdu -&& to jistí.
Sice jsem to tam původně měl,ale bohužel nevhodně zapsaný s ( !== ) , což nemohlo fungovat, protože hodnoty na obou stranách jsou jiného typu.
původně, před rozvrtáním:
if(!Empty($adh) && $CHK1 !== "0" && $CHK1 !== "5") {
teď(funkční):
if(!Empty($adh) && $CHK1 != "0" && $CHK1 != "5") {

Sry, ta závorka chybí jen tady v postu, zkoušel jsem a zapomněl jsem ji zde dopsat.

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:

0