Registrace nového uživatele     Návod     Kluby     Archív  Lopuchu     Lopuch.cz  

Něco navíc v zeleném?
A proč ne...

Lopuch.cz

Jméno:
Heslo:
Podpora LCD:
 
Klub PHP [ŽP: neomezená] (kategorie Programování) moderuje makovec.
Archiv
Diskuse o vybornem skriptovacim jazyku php. Dulezite odkazy, pred polozenim dotazu zkuste hledat odpoved zde:
  1. www.php.net - domovská stránka PHP
  2. www.kosek.cz - spousta tutorialu pro PHP v češtině
  Nastavení klubu     Nastavení práv     Homepage     Anketa     Přítomní     Oblíbené     Lopuch     Kategorie  
autor: 
text: 
vyplnit a 
Help
 Titulek, text příspěvku  
Opište pozpátku následující text bez prostředního znaku: ccloamc
[ 1845 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
etdirloth EtDirloth 14.5.2008 10:30  2277
Makhiel [2272]: huh [2274]: isset ani !empty ludom neodporucam v pripadoch, kedy testovana premenna nemusi byt typu Array - vtedy array_key_exists vyslovene potrebujes, pretoze ani v pripade vypnutych warnings a stringu $str['page'] nebude robit nepekne a tazko odhalitelne problemy. To vsak zrejme nebude pripad $_GET. Kedze ale presadzujem jednotny pristup vsade kde sa da, pouzivam array_key_exists - aj na superglobal arrays.
vid. comparison table, resp. jej krajsia verzia

Johny_G [2273]: ked ide len o register_globals, tak v tom nevidim problem, podpora tejto ficurie nebude az od php6
tvx tvx Myslet si, že svět je JEN takový, jak - ho v daný čas můžeme pochopit je hloupé. 14.5.2008 08:41  2276
mam php verze 5.2.5 a nemam s tim odkazovanim na neexistujici prvek pole problém... chybový hlášení mam na ostrý verzi vypnutý a na pokusný při ladění mi to nevadí.
Skript mi to v každém případě neukončuje.
huh huh 14.5.2008 02:39  2275
a ano -- dnesni PHP (resp. dnesni doporucovane zpusoby) nema uz zadne vyhody (zejmena ve smyslu mene psani) nez od pocatku univerzalni skriptovaci jazyky typu Python nebo Ruby
huh huh 14.5.2008 02:33  2274
Johny_G [2273]: tak pouzivej !empty a mas to. jinak vypisovani notice se da samozrejme vypnout
johny_g Johny_G - Relaxační terapie pro lopušáky ZDARMA! 14.5.2008 02:28  2273
Makhiel [2272]: Já mám právě podobnou konstrukci (jen místo isset používám array_key_exists), a připadá mi to jako docela dost balastu k nakrmení proměnné - nemluvě o tom, že tohle neřeší případ, kdy je v proměnné prázdná hodnota, a tudíž se musí ještě řádek připsat. Tohle je právě ta cesta, které jsem se původně chtěl vyhnout. No hodím to holt do nějaké funkce, ať nemám ze zdrojáku kompost.

To PHP pro mě úplně ztrácí kouzlo - v začátcích jsem prostě rovnou volal $page, a jak to díky register_globals pěkně chodilo :-).
makhiel 14.5.2008 02:15  2272
Já to zase vždy řešil jednoduše stylem

if (isset($_GET["page"])) $page = $_GET["page"];
else $page = "main";

respektive mám na to napsanou funkci, která by měla být v PHP6 už implementovaná rovnou :), o tolik složitější to není; v konfiguraci se dá poštelovat asi tak jen registerGlobals
johny_g Johny_G - Relaxační terapie pro lopušáky ZDARMA! 13.5.2008 23:36  2271
Tak další dotaz - narazil jsem na divnou buzeraci v PHP 5 (chci teď psát přímo v něm, protože se patrně web nastěhuje na server, kde už 4 neběží), a ač se to na několika místech internetu řeší, moc vyřešené mi to nepřipadá. Jde o chybu "undefined index", která naskočí v případě, že se táži GETem na proměnnou, která v adrese není. Zdá se, že namísto toho, aby pole vrátilo normálně hodnotu null, tak to prostě hodí chybu a ukončí skript.

Příklad: Když volám třeba index.php?page=main, je vše v pořádku; když ale zavolám jenom index.php, tak vypadne chyba "Notice: Undefined index: page in [blablabla] on line [blablabla]", a je vymalováno. Vždy jsem měl případ chybějící proměnné řešen jednoduše stylem

$page = $_GET["page"];
if (!$page) $page = "main";

a nebyl s tím nikdy problém. Teď se zdá, že ještě budu muset předem prověřovat existenci indexu v poli $_GET, což už mi připadá dost uhozené, protože tím budu muset každé blbé proměnné věnovat 3 řádky kódu. Dá se to nějak snadno poštelovat v konfiguraci, nebo to je prostě tak?
johny_g Johny_G - Relaxační terapie pro lopušáky ZDARMA! 21.4.2008 19:10  2270
To nepotřebuju - tam jsou jen obrázky, a ty stejně přes textarea nepřekreslím :-). Každopádně děkuju moc - proklikal jsem se k tomu od realpath.
huh huh 21.4.2008 19:06  2269
Neni. Akorat nemuzes mit podadresare.
johny_g Johny_G - Relaxační terapie pro lopušáky ZDARMA! 21.4.2008 18:32  2268
Seru na to :-)).
$editfile = basename(trim($_GET["editfile"])); už není napadnutelné, že?
huh huh 21.4.2008 18:20  2267
cesta ke skriptu se da urcite vycist odnekud z $_SERVER, ale ja uz si nepamatuju, ktera presne to je
johny_g Johny_G - Relaxační terapie pro lopušáky ZDARMA! 21.4.2008 18:11  2265
No jo, to jsem docela pitomec - to mě nenapadlo :-). Vtip je v tom, že zatím nevím, kde to bude bydlet... Buď to tedy můžu nechat neošetřené, a opravit to až na serveru, anebo použít jiné řešení. Vyhledat všechna lomítka by asi také nestačilo, že? Dalo by se to nahradit entitami.
huh huh 21.4.2008 18:06  2264
A co treba adresar/../../../../../etc/passwd ? Ja bych to prohnal realpath() a zkontroloval, jestli to zacina spravne
johny_g Johny_G - Relaxační terapie pro lopušáky ZDARMA! 21.4.2008 17:55  2263
Napsal jsem si takové primitivní rozhraní, abych mohl bez přístupu k FTP editovat soubory v určité složce na serveru. Ale chtěl bych mít pro všechny případy ošetřené, aby se nedalo šplhat po adresářovém stromě na nevhodná místa. Postačí, když dám na řetězec s názvem souboru trim, a potom ověřím, zda nezačíná tečkou nebo lomítkem? Nebo se dá po složkách cestovat i nějak rafinovaně?
bredy 18.4.2008 20:35  2262
Tohle přímo od vývojářů Seznamu Neznám nic lepšího.

[ 1845 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  

(c) 2001-2011 Lopuch.cz   
Kontakt