[PHP] lze if (isset($p)) zjednodušit na if ($p) ?

Webdesign, HTML, CSS, Flash, PHP, ASP, .NET, JavaScript. Kritika www stránek na Smetišti.

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod eM 28. 7. 2006 12:24

Dobry den,
v jednom scriptu mi trochu unika vyznam jedne podminky - a to sice:

Kód: Vybrat vše
if ( isset($_POST['a']) and $_POST['a'] and
    isset($_POST['b']) and $_post['b'] )
{
    udelej_neco();
}


Vim ze isset($a) vraci TRUE i kdyz je promena $a nastavena na FALSE. Ale nedala by se se vyse uvedena podminka zjednodusit na neco jako :
Kód: Vybrat vše
if ( $_POST['a'] and $_POST['b'] )
{
    udelej_neco();
}


unika mi totiz, jaky ma puvodni podminka smysl..(nebo pro jaky ucel by se dala pouzit).

// Howard - upraven titulek
// mbing : Téma přesunuto ● z Programování do Tvorba webových stránek a aplikací.
eM
Kolemjdoucí

Odeslat příspěvekod babca 28. 7. 2006 19:12

Co to je za název tématu prosímtě??
"[PHP]"...
___
Vim ze isset($a) vraci TRUE i kdyz je promena $a nastavena na FALSE. Ale nedala by se se vyse uvedena podminka zjednodusit na neco jako :


1) cokoliv potřebuješ vědět o php: http://cz.php.net/

2) "Vim ze isset($a) vraci TRUE i kdyz je promena $a nastavena na FALSE."
ano, protože ta funkce vraci boolean, zda dana promenna jiz existuje, nebo ne! To nema nic spolecnyho s false.

3) Ano, k tomu by pak bylo if ($a) - pak kdyz je $a false tak je to cely false... :D

//Mývalice: Příště použij tlačítko Obrázek
babčův HTPC pro rok 2011: AMD Zacate, spotřeba 16W@46°C při idle, just Google it
babca
Junior
Uživatelský avatar

Odeslat příspěvekod Z@chi 28. 7. 2006 20:01

Vise uvedenou podminku by jsem spise upravil na
Kód: Vybrat vše
if( isset($_POST['a'] && isset($_POST['b'])) )
..

Jinak to muzes testovat treba i na NULL hodnotu.
Dulezite je si uvedomit jak presne se post prenasi.
Protoze kdyz neni vyplnena hodnota, post promenna se ani neodesle.
Z@chi
Junior
Uživatelský avatar

Odeslat příspěvekod eM 28. 7. 2006 21:23

Jj, skusim to, problem je ze je to jen v jeden scriptu z asi dvaceti a tahle podminka mi nedavala smysl..

TO: babca - prirozene ted ted nemam vsechny scripty systemu po ruce jinak bych se neptal...
eM
Kolemjdoucí

Odeslat příspěvekod Z@chi 28. 7. 2006 22:08

Ale tak to co je tam v te podmince je spravne.
Ja jenom nemam rad, kdyz nekdo pise podminku typu:
Kód: Vybrat vše
if($a):
endif;

Ale jinak to bude fungovat spravne i tak.
Jenom je to zbytecne.
Z@chi
Junior
Uživatelský avatar

Odeslat příspěvekod babca 4. 8. 2006 12:56

co jsem to sakra psal? asi sem měl ňákou blbosu náladu... :)

navíc, co to má být dneska? 15 stupňů celsia... :x

podminka
Kód: Vybrat vše
if (isset($_POST['a']))
{ }

vraci, zda je promenna $_POST['a'] "setla", zda je v pameti zaregistrovana - bud ma nejakou hodnotu treba true, false, nebo boolean/int 0, 1, tad nebo treba string "aaa" a NEBO TREBA i prazdny reteezec "" (na to posledni pozor)

pro testovani zda je hodnota zadana tedy pouzit
Kód: Vybrat vše
if ($_POST['a'] == "")
{ echo "chyba"; }


a podminka
Kód: Vybrat vše
if ($_POST['a'])
{ echo "bleble"; }

testuje, zda neni $_POST['a'] false, 0, nebo prazdny retezec
(mylsim ze se to taky lisi podle verze php, kdysi to bylo jinak)


doufam ze sem to napsal spravne :)
babčův HTPC pro rok 2011: AMD Zacate, spotřeba 16W@46°C při idle, just Google it
babca
Junior
Uživatelský avatar

Odeslat příspěvekod babca 4. 8. 2006 13:03

To Mývalice:
Příště použij tlačítko editovatd/quote]


tím myslíš co? nechápu k čemu se to vztahuje... ;)
babčův HTPC pro rok 2011: AMD Zacate, spotřeba 16W@46°C při idle, just Google it
babca
Junior
Uživatelský avatar

Odeslat příspěvekod 2ge 4. 8. 2006 15:53

spravne testovanie bez warningov ma byt (napriklad na action post premennu), myslim si:
Kód: Vybrat vše
if(isset($_POST['foo']) && $_POST['foo'] == 'bar') {
       echo "bar";
}
SubDownloader - stahuj a nahravaj titulky k filmom pomocou opensource programu z OpenSubtitles.org
2ge
Junior
Uživatelský avatar

Odeslat příspěvekod S-Tony 4. 8. 2006 16:02

Kód: Vybrat vše
if(isset($_POST['foo']) && $_POST['foo'] == 'bar') {
       echo "bar";
}


Mi to moc není jasné, proč ověřovat jestli proěmnná existuje. Je to kod navíc vždyť stačí jednoduchý zápis:
Kód: Vybrat vše
if($_POST["foo"] == "bar") echo "bar";

A v případě že proměná existuje a obsahuje bar, tak se vypíše bar. V případě že proměnná neexistuje, tak se nestane nic.
TO isset a podobné blbosti mi nedávají smysl :-(
Když se smíříte s tím, že život už nic nového nepřinese, tak teprve to je ten okamžik, kdy všechno důležité teprve začíná...
S-Tony
Junior
Uživatelský avatar

Odeslat příspěvekod neonn 4. 8. 2006 16:12

Nezkousel jsem to, ale mozna, ze ma pravdu. Kdybys pouzil
Kód: Vybrat vše
if($_POST['foo'] == 'bar')

muze to hodit warning, ze index neexistuje. Stavalo s mi to, kdyz jsem neco vybiral z databaze, ale zrovna v jedne "bunce" nic nebylo.

Ale kdyz pouzijes
Kód: Vybrat vše
if(isset($_POST['foo']) && $_POST['foo'] == 'bar')

zkontroluje se nejdriv to ISSET. Kdyz promenna neni nastavena (isset() vrati FALSE), nebude se provadet druha cast (&& $_POST['foo'] == 'bar'), takze nemuze dojit k Warningu.
Kdyz ale ISSET() vrati TRUE, provede se i druha cast. Ted je zeruceno, ze $_POST['foo'] existuje a nehodi to warning...

Ale pokud se pletu, opravte me...
Before talking crap about someone, check the room... :)
SH*T HAPPENS! :)
neonn
Junior
Uživatelský avatar

Odeslat příspěvekod 2ge 4. 8. 2006 16:14

nepleties sa, lebo si to dobre napisal, mne sa tak podrobne nechcelo :)
SubDownloader - stahuj a nahravaj titulky k filmom pomocou opensource programu z OpenSubtitles.org
2ge
Junior
Uživatelský avatar

Odeslat příspěvekod S-Tony 4. 8. 2006 16:20

Jo tak to zase není klasická proměnná,ale POST. Aha. Jsem to přehlíd :-)
Já to totiž vůbec nepoužívám. Spoléhám plně na automatické předávání proměnných!
Když se smíříte s tím, že život už nic nového nepřinese, tak teprve to je ten okamžik, kdy všechno důležité teprve začíná...
S-Tony
Junior
Uživatelský avatar

Odeslat příspěvekod 2ge 6. 8. 2006 01:33

S-Tony, tak na to nespoliehaj, cim skorej si to vypni, pretoze tak ti to vyhackuju, ze budes smutny. Naozaj som neveril, ze niekto moze kodovat pod register_globals ON a - som prekvapeny...predpokladam ze SQL inejction ti asi tiez nic nehovori...a do cookie ukladas ci je user zalogovany :)
SubDownloader - stahuj a nahravaj titulky k filmom pomocou opensource programu z OpenSubtitles.org
2ge
Junior
Uživatelský avatar

Odeslat příspěvekod Z@chi 6. 8. 2006 02:24

No to je pravda. mit v dnesni dobe zapnutou direktivu register globals je opravdu sebevrazedne. :-)
Je mnohem bezpecnejsi vyuzivat globalni pole a na tohle se nespolehat
Z@chi
Junior
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků