Diskuze: Pomoc
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 20 zpráv z 20.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
používáš někde proměnou s indexem 'email', kterej neexistuje. Nejlepší bude když sem dáš kód
Spíš to ale bude index v nějakym poli, ne přímo proměná, takže něco jako $pole['email'].. Projdi si kód a zkontroluj jestli to máš někde inicializovaný nebo to vyřeš tak, jak psal kolega
Prostě používáš proměnné, které jsi ještě nevytvořil. Tedy aby ti to neříkalo, že nemáš nadefinované proměnné, musíš je nadefinovat. Stačí úvodem vložit nulovou hodnotu. Třeba
$email = ""; $pass = "";
Nevím zda se to bere jako chyba, že tohle web ukazuje, osobně můj web "ukazuje to samé" a je to samozřejmě přesně tím jak je výše napsáno. Ale je běžné mít tyhle notifikace/chyby úplně vypnuté už jen kvůli bezpečnosti. Pakliže se nepletu. Vypnutí se dá provést běžně v php.ini a nebo přímo v htaccess.
Osobně by mě zajímalo zda je to brané jako něco špatně, nebo zda je to běžná věc. Přijde mi hloupost proměnnou naplnit jen kvůli notifikaci, která není chybou nýbrž jen informací, že by se mohlo jednat o zbytečnou proměnnou.
A nepřijde ti také jako hloupost používat proměnou, která vlastně
vůbec neexistuje či nebyla zatím vytvořena?
Podle mě je chyba používat něco co vlastně není.
Hloupost mi to nepřijde v případě, že se na naplnění teprve čeká např. když jde o session. Nebo v případě propojení a využívání stejných proměnných v případě propojení napříč projektem, tak ne vždy musí dojít k naplnění. A zbytečné to jen kvůli notifikaci naplňovat.
Ano i za pomocí PHP to může jít nastavit.
http://php.net/…eporting.php
Je hloupé to neošetřovat v případě, když vím, že existuje možnost, že se proměnná nemusí naplnit..
V tomto případě by notifikace nemusela vůbec vzniknout.
To souhlasím, že je lepší to ošetřit, ale asi mi to v některých případech přijde zbytečné a někdy kod na víc. Právě proto, že vedlejší účinek mít může jak inicial../neiniciali... Nebo aspoň nenapadá mě jediný příklad kde by to byl opravdu problém a byla by to chyba,nebo by tím zanikala bezpečnost.
premennu netreba vzdy naplnovat, hlavne u formularoch sa to deje, ked
prvykrat si otvoris stranku, udaje nie su este vyplnene, premenne nie su este
inicializovane, cize ani naplnene, ale po odoslani formulara uz dojde k
inicializacii a naplneni premien, tu staci podmienka if (isset ($var1,
$var2,...)) {...}
cize ak pri spracovani skriptu narazi na tuto podmienku, tak sa otestuje, ze ci
su nastavene (definovane) premenne $var1 a $var2, pripadne aj dalsie, ak nie su,
tak sa nevykona kod v zlozenych zatvorkach a bude sa pokracovat dalsim riadkom,
ale akonahle uz su tie premenne definovane, tak sa automaticky vykona kod v
zlozenych zatvorkach
Já však nezastával názor, že proměnnou vždy naplnit pokud není definovaná.
ani definovat premenu nie je treba - vid napr. osetrenie pomocou isset, kde sa testuje, ze ci je premenna nastavena, cize existuje
Kód by měl vypadat tak, aby i při zapnutém debugu nehodil žádnou chybu
či upozornění. Stále nevím co na tom nechápete.
Funkce isset neexistuje jen tak, když je možnost ji použít
proč ji nepoužít?
Argumentace, že kód bude delší či nepřehledný je blbost..
Řešení NouF k tomuto tématu je nejideálnější.
Zobrazeno 20 zpráv z 20.