Autor Zpráva
esemeska
Profil
Ahoj!
Muj apache mi hlasi:
Notice: Undefined index: heslo in i:\r-bravo\html\html\php\easyphp1-8\www\oa\index.php on line 6

a radek 6 je:
if(!isset($_GET["jmeno"])) $_GET["jmeno"]="host";

pak to pouzivam zde:
if($_GET["jmeno"] == "host" && $_GET["heslo"] == "host")


...jak mam teda tu promennou jinak definovat?
Hugo
Profil
esemeska

Rve kvuli prvku $_GET['heslo'] a ten jeho existenci neoverujes. Takze se to da resit takto:

if(!isset($_GET["heslo"])) $_GET["heslo"]="hesloProHosta";
finc
Profil
Mrkněte se do php.ini, kde se nastavují zobrazování chybových hlášení. Ne úplně všechno musíte mít zobrazené.
Hugo
Profil
finc

Pro odladovani je lepsi mit zaple zobrazovani vsech chyb, vc. NOTICE. Da to trochu vic prace, ale iho se to vyplati.
finc
Profil
to Hugo: Spíše než používat zobrazení všech chyb doporučuji používat schopný editor, který základní chyby odhalí sám.

Např. phpeclipse dokáže kontrolovat tyto chyby při psaní. Nemusím poté zkoušet F5 v prohlížeči, jestli je vše OK.
Hugo
Profil
PHPEclipse neznam, ale radsi se spoleham na sebe, nez na nejake funkce editoru, ktere nikdy nefunguji na 100 %. Zvlast pokud jde o bezpecnost aplikace.
finc
Profil
Tak to nevím. Bezpečnost aplikace nelze zajistit výpisem chybových hlášení. Je to spíše o testování a praxi. Navíc se v phpeclipse dá použít debugger.

Nechápu, co myslíte tím, že nefungují na 100%.
Hugo
Profil
finc

Pokud nedostanes upozorneni, ze pouzivas napr. neinicializovane promenne, tak muzes prehlednout potencionalni bezpecnosti diru, proto mam na pracovnim compu zobrazovani hlasek naplno a na serveru to ukladam do logu.

Nevim jak ten editor upozornuje na chyby, ale pochybuju, ze dokaze najit jakoukoliv chybu. Pokud hlasi jen syntakticke chyby, tak je to uzitecne, ale rozhodne to nestaci pro dobre odladeni aplikace.
finc
Profil
to: Hugo

neinicializovane promenne to samozřejmě odhaluje také ;)

Najde stejné chyby jako při zapnutí vypisování všech chyb a upozornění v php.ini.

Ono možná by bylo lepší specifikovat, to, že pokud to nepíšete objektově, tak to samozřejmě vše neodhalí. Při dodržování pravidel pro OOP se mi nestane, aby se mi objevila nedefinovaná promenná. Je škoda, že PHP nemá typovou kontrolu jako např. Java, ale vše se dá s trochou snahy ošetřit.

Osobně se nespoléhám na výpis hlášení typu "Undefined index". Raději svůj kod budu koncipovat tak, aby k tomuto nemohlo dojít :) Navíc to k odladění vůbec nepomůže. Představte si 10MB projekt v PHP. Logické chyby nemůžu vázat na výpis zapnutého hlášení chyb v php.
Hugo
Profil
finc

OOP se da pouzivat az od php5, v php4 a nize je jen parodie na OOP.

Samozrejme u vetsich projektu uz je potreba provadet kontrolu jinak. Ono taky pouzit php na 10MB projekt je sebevrazda (pokud netvori 8MB komentare).

Smaozrejme je vhodne psat tak, aby tyto chyby nemohli nastat, ale na tomto foru se pohybuje hodne zacatecniku, proto je lepsi jim doporucit zapnout pro ladeni zobrazovani vsech chyb.
rabbit
Profil
IMHO OOP se samozřejmě dá používat i v php4. Pokud bychom srovnávali možnosti/vlastnosti OOP v Javě a v php, tak se najdou lidé, kteří budou mluvit o parodii na OOP i u php5.

S phpeclipse zkušenost nemám, ale v Zendu je debugger celkem dobrým pomocníkem. To však nebrání tomu, abych na vývojovém serveru měl nastaveno error_reporting(E_ALL).

Dobrou vizitkou (profi) programátora je, že v normálním provozu/stavu aplikace nehází ani warningy.
finc
Profil
Je pravda, že PHP není na velké projekty stavěno, ale než budu schopen své znalosti, které nyní mám v PHP stejně dobře aplikovat v Javě, tak to ještě chvíli potrvá :)

PHP 5 je na OOP vcelku už použitelné, i když, když vidím ten rozdíl oproti Javě, tak musím uznat, že je to nebe a dudy.

Ale i tak, prozatím se s PHP dá vyžít, i když přechod na vyšší prog. jazyk je zde vcelku jasný.

Jinak s těmi warningy, se asi neshodneme, i když je mám zaplé taktéž, za poslední půl roku se mi nestalo, že by mi vyhodili nějakou hlášku, takže k čemu to? :)

Ale cose týče začátečníků, v tom máte nejspíše pravdu.
esemeska
Profil
kdo psal, ze to tu mate rozebirat:)
Toto téma je uzamčeno. Odpověď nelze zaslat.