Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)
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
Ormy
Člen
Avatar
Ormy: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  +1 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  +2 11.8.2016 19:16
Avatar
Ormy
Člen
Avatar
Ormy: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  +3 11.8.2016 19:40
Avatar
Michael
Člen
Avatar
Michael:14.8.2016 14:46

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

 
Nahoru Odpovědět  -2 14.8.2016 14:46
Avatar
David Hynek
Redaktor
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  ±0 15.8.2016 16:04
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na katrincsak
Marek Z.: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  +1 15.8.2016 21:32
Chybami se člověk učí, běžte se učit jinam!
Avatar
mkub
Redaktor
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 Marek Z.
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  +1 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
Marek Z.
Redaktor
Avatar
Odpovídá na katrincsak
Marek Z.: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  +2 16.8.2016 20:47
Chybami se člověk učí, běžte se učit jinam!
Avatar
katrincsak
Člen
Avatar
Odpovídá na Marek Z.
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
Redaktor
Avatar
Odpovídá na Marek Z.
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  +1 17.8.2016 1:36
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na mkub
Marek Z.: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  +1 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
Redaktor
Avatar
Odpovídá na Marek Z.
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  +2 17.8.2016 14:54
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Marek Z.
Redaktor
Avatar
Marek Z.: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  +1 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.