Autor | Zpráva | ||
---|---|---|---|
zooner Profil |
#1 · Zasláno: 3. 11. 2008, 20:51:53
Zdravim, zajímalo by mě jestli je efektivní psát takto kód:
function otevirani(){ if(isset($_GET["smazat"])){ smazat($_GET["smazat"]); } elseif(isset($_GET["zmenit"])){ zmenit($_GET["zmenit"]); } } |
||
nightfish Profil |
#2 · Zasláno: 3. 11. 2008, 21:00:50
„Zdravim, zajímalo by mě jestli je efektivní psát takto kód:“
ano |
||
zooner Profil |
#3 · Zasláno: 3. 11. 2008, 21:12:16
nightfish
díky, já jen, že programovat už nějak tak umím, ale bohužel příšerně nepřehledně a ne moc efektivně ;-) |
||
bohyn Profil |
#4 · Zasláno: 3. 11. 2008, 21:36:42
Pokud bys pouzil jen
if($_GET["smazat"]) tak PHP vyhodi notice v pripade ze promenna neexistuje. Jinak bych tam jeste pridal nejakou kontrolu na datovy typ promenne pokud ji nemas v tech funkcich. // napr. pokud ma $_GET["smazat"] byt cislo if(isset($_GET["smazat"]) && $_GET["smazat"] + 0){ smazat($_GET["smazat"]); } |
||
Alphard Profil |
#5 · Zasláno: 3. 11. 2008, 23:02:41
bohyn
když už se bude zjišťovat, jestli je proměnná číslo, máme na to funkci is_numeric(), nevymýšlejte věci, které ani nefungují např. řetězec 12OKrtq by tím prošel ... |
||
BetaCam Profil |
#6 · Zasláno: 4. 11. 2008, 02:39:34 · Upravil/a: BetaCam
Alphard
I s is_numeric() je to tak trochu čistě orientační, protože $_GET['smazat'] by mělo být s největší pravděpodobností typu INT jenže přes is_numeric() projde i float či hexadecimal takže to také není úplně neprůstřelné. Pokud chce mít člověk opravdu jistotu, že hodnota je typu "INT" ( což neni protože ji dostaneme jako string proto ty uvozovky ) lze použít například regulár if (preg_match('/^[0-9]+$/', $_GET["smazat"])){ $smazat = (int)$_GET["smazat"]; } |
||
Mastodont Profil |
#7 · Zasláno: 4. 11. 2008, 07:33:51 · Upravil/a: Mastodont
----
(sorry, duplicita) |
||
nightfish Profil |
#8 · Zasláno: 4. 11. 2008, 08:51:35
BetaCam
a proto chytří lidé vymysleli funkci ctype_digit() |
||
BetaCam Profil |
#9 · Zasláno: 4. 11. 2008, 21:13:05 · Upravil/a: BetaCam
nightfish
„a proto chytří lidé vymysleli funkci ctype_digit()“ To ovšem nic nemění na tom co sem napsal. Tedy to, že ani is_numeric($_GET["smazat"]) ani přímé přetypování $_GET["smazat"] na int není zrovna ideální pokud hodnoty, které se testují mají být přirozená čísla. Jinak v tomto případě je to jedno, ale ctype_digit() se také nehodí na zjištování jestli hodnota stringu je typu INT, protože přes něj neprojdou záporná čísla. to lze zase udělat třeba regůlárem nebo pomocí dvojího přetypování ( $_GET["smazat"] === (string)(int)$_GET["smazat"] ) a pude to daleko více způsoby. |
||
Časová prodleva: 15 let
|
0