NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Pomoc

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Michael
Člen
Avatar
Michael:11.8.2016 13:21

Zdravím, po nahozeni webu mi to píše toto, nevíte co stím?

Notice: Undefined index: email in C:\xampp\htdoc­s\index.php on line 47

Notice: Undefined index: email in C:\xampp\htdoc­s\index.php on line 47

Notice: Undefined index: pass in C:\xampp\htdoc­s\index.php on line 48

Notice: Undefined index: pass in C:\xampp\htdoc­s\index.php on line 48

 
Odpovědět
11.8.2016 13:21
Avatar
Petr Langer
Člen
Avatar
Petr Langer:11.8.2016 13:33

používáš někde proměnou s indexem 'email', kterej neexistuje. Nejlepší bude když sem dáš kód

 
Nahoru Odpovědět
11.8.2016 13:33
Avatar
Michael
Člen
Avatar
Michael:11.8.2016 19:05

a jak to mám vyřešit? chci se stím poprat :D

 
Nahoru Odpovědět
11.8.2016 19:05
Avatar
NouF
Člen
Avatar
NouF:11.8.2016 19:16

if(isset($email)) { ..tvuj kod...}

Editováno 11.8.2016 19:17
 
Nahoru Odpovědět
11.8.2016 19:16
Avatar
Petr Langer
Člen
Avatar
Petr Langer:11.8.2016 19:40

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

 
Nahoru Odpovědět
11.8.2016 19:40
Avatar
Michael
Člen
Avatar
Michael:14.8.2016 14:46

if(isset($_POS­T['submit'])) {

 
Nahoru Odpovědět
14.8.2016 14:46
Avatar
David Hynek
Tvůrce
Avatar
Odpovídá na Michael
David Hynek:15.8.2016 10:42

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 = "";
Nahoru Odpovědět
15.8.2016 10:42
Čím víc vím, tím víc věcí nevím.
Avatar
katrincsak
Člen
Avatar
katrincsak:15.8.2016 16:04

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.

 
Nahoru Odpovědět
15.8.2016 16:04
Avatar
Odpovídá na katrincsak
Uživatel sítě :15.8.2016 21:32

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í.

Editováno 15.8.2016 21:32
Nahoru Odpovědět
15.8.2016 21:32
Chybami se člověk učí, běžte se učit jinam!
Avatar
mkub
Tvůrce
Avatar
Odpovídá na katrincsak
mkub:16.8.2016 10:25

myslim, ze by sa to mohlo dat nastavit aj v php kode

 
Nahoru Odpovědět
16.8.2016 10:25
Avatar
katrincsak
Člen
Avatar
Odpovídá na Uživatel sítě
katrincsak:16.8.2016 17:29

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.

Editováno 16.8.2016 17:31
 
Nahoru Odpovědět
16.8.2016 17:29
Avatar
katrincsak
Člen
Avatar
Odpovídá na mkub
katrincsak:16.8.2016 17:36

Ano i za pomocí PHP to může jít nastavit.
http://php.net/…eporting.php

Editováno 16.8.2016 17:36
 
Nahoru Odpovědět
16.8.2016 17:36
Avatar
Odpovídá na katrincsak
Uživatel sítě :16.8.2016 20:47

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.

Nahoru Odpovědět
16.8.2016 20:47
Chybami se člověk učí, běžte se učit jinam!
Avatar
katrincsak
Člen
Avatar
Odpovídá na Uživatel sítě
katrincsak:16.8.2016 21:04

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../nei­niciali... 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.

 
Nahoru Odpovědět
16.8.2016 21:04
Avatar
mkub
Tvůrce
Avatar
Odpovídá na Uživatel sítě
mkub:17.8.2016 1:36

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

 
Nahoru Odpovědět
17.8.2016 1:36
Avatar
Odpovídá na mkub
Uživatel sítě :17.8.2016 11:53

Já však nezastával názor, že proměnnou vždy naplnit pokud není definovaná.

Nahoru Odpovědět
17.8.2016 11:53
Chybami se člověk učí, běžte se učit jinam!
Avatar
00
Člen
Avatar
00:17.8.2016 12:07

Pokud web funguje, vypnout noticy.

(Proč název POMOC?)

 
Nahoru Odpovědět
17.8.2016 12:07
Avatar
mkub
Tvůrce
Avatar
Odpovídá na Uživatel sítě
mkub:17.8.2016 14:11

ani definovat premenu nie je treba - vid napr. osetrenie pomocou isset, kde sa testuje, ze ci je premenna nastavena, cize existuje

 
Nahoru Odpovědět
17.8.2016 14:11
Avatar
Richard
Člen
Avatar
Richard:17.8.2016 14:54

Jak isset tak deklarování proměnný je správná volba, isset trochu správnější.
Pouhý vypnutí vypisování noticů je samozřejmě obrovská chyba, protože tím stále plníš error log.

Nahoru Odpovědět
17.8.2016 14:54
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Uživatel sítě :17.8.2016 17:31

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ší.

Nahoru Odpovědět
17.8.2016 17:31
Chybami se člověk učí, běžte se učit jinam!
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 20 zpráv z 20.