Autor | Zpráva | ||
---|---|---|---|
Musilda Profil |
#1 · Zasláno: 20. 3. 2009, 12:35:17
Dobrý den
asi to bude začátečnická otázka, ale co znamená symbol @ před funkcemi? Nárážím na to v různých skriptech, ale nevím co to znamená. Děkuji za radu |
||
HamStet Profil * |
#2 · Zasláno: 20. 3. 2009, 12:43:24
Potlačení chybové hlášky.
|
||
Musilda Profil |
#3 · Zasláno: 20. 3. 2009, 13:11:00
Mohu někoho poprosit o bližší vysvětlení, nebo o odkaz na nějaký článek.
|
||
TFSi Profil |
#4 · Zasláno: 20. 3. 2009, 13:16:28 · Upravil/a: TFSi
Musilda
Pokud máš na serveru nastavené zobrazování chyb, tak ti echo $undefined_variable; zobrazí chybu "Notice: Undefined variable: undefined_variable in ...." Pokud ale před tu proměnnou dáš zavináč; tedy: echo @$undefined_variable; tak se chybová hláška nezobrazí. U funkcí je to stejné. Ovšem pokud můžu, tak nedoporučuju používat. Potom to dělá strašnej bordel při hledání chyb. |
||
Musilda Profil |
#5 · Zasláno: 20. 3. 2009, 13:18:44
TFSi
Děkuji, také v tom nevidím smysl. Je ale zvláštní, že se to dost často objevuje. |
||
r0me0 Profil |
#6 · Zasláno: 20. 3. 2009, 14:05:01
Musilda
Objevuje se to až v odladěných aplikacích. Protože při chybové hlášce by se potencionální útočník mohl dozvědět název tabulky, sloupce, porměnné atd. a tím se mu usnadní napadnutí webu. |
||
Jake Cooney Profil |
#7 · Zasláno: 20. 3. 2009, 14:58:09
r0me0
Tak na frontendu snad potlačim všechny chyby ne? |
||
Joker Profil |
#8 · Zasláno: 20. 3. 2009, 15:19:41
Jake Cooney
Tak na frontendu snad potlačim všechny chyby ne? No... někdo ne :-) a pak přichází ke slovu ten @ |
||
srigi Profil |
#9 · Zasláno: 20. 3. 2009, 16:18:43
Dost casto som to pouzival pri komunikacii s databazou, aby som si mohol prisposobit chybove hlasky:
$db_handler = @mysql_connect(bla bla bla); if (!$db_handler) { die('Pripojenie k DB zlyhalo'); } |
||
mila Profil |
#10 · Zasláno: 20. 3. 2009, 16:20:00
r0me0
„Objevuje se to až v odladěných aplikacích. Protože při chybové hlášce by se potencionální útočník mohl dozvědět název tabulky, sloupce, porměnné atd. a tím se mu usnadní napadnutí webu.“ V ostrém provozu nastavíš display_errors na off a log_errors na on. Takže chyby které by se zobrazovali uživateli jdou do logu, určitě není dobré dopisovat do kódu zavináče. Tuto konstrukci můžeš použít, pokud počítáš s chybou, která ti nevadí. Obecně to ale není dobrá kontrukce, protože pokud se na tom místě cokoli pokazí, tak není prakticky možné chybu dohledat. |
||
AM_ Profil |
#11 · Zasláno: 20. 3. 2009, 18:38:41
Typickým dalším příkladem je např.
$promenna = @$_GET['promenna']; místo zdlouhavějšího $promenna = isset($_GET['promenna']) ? $_GET['promenna'] : ''; Zkrátka v místech, kde jsme si vědomi, že může dojít k chybě (je dobré mít odladěný skript i tak, aby nezobrazoval ani E_NOTICE, pro případ, že jej jednoho dne umístíme na server, kde budou E_NOTICE zobrazeny), a víme, k jaké chybě, a jednodušší než psát ošetření je prostě jen hlášku potlačit, je podle mě použití zcela na místě. Samozřejmě psát zavináč před každou funkci, která může hodit chybu, není nic víc než hloupé. |
||
Časová prodleva: 2 měsíce
|
|||
hhh Profil * |
#12 · Zasláno: 29. 5. 2009, 07:48:30
jak udelam na pc zavinač
|
||
panther Profil |
#13 · Zasláno: 29. 5. 2009, 07:58:49
hhh
„jak udelam na pc zavinač“ myslíš, že to souvisí s původním dotazem? Příště si založ vlastní vlákno. Na anglické klávesnici je to „Shift + 2“, jinak „alt + 64“ nebo „alt gr + V“ |
||
SwimX Profil |
#14 · Zasláno: 29. 5. 2009, 08:00:56
hhh
česká klávesnice: ALT GR + V, ALT + 64 anglická klávesnice: SHIFT + 2 (nad dvoojitym W) ..... |
||
Mastodont Profil |
#15 · Zasláno: 29. 5. 2009, 08:01:48
AM_
Zdlouhavější je to akorát pro programátora, z hlediska rychlosti kódu bych se vsadil, že varianta s @ je pomalejší, protože přepnutí error_reporting nějakou dobu trvá. |
||
AM_ Profil |
#16 · Zasláno: 29. 5. 2009, 09:28:56
„Zdlouhavější je to akorát pro programátora“
To souhlasím, jinak jsem to ani nemyslel. hhh přijde ti normální vytahovat kdovíjak staré téma v diskusi o programování, aby ses mohl zeptat, jak se používá klávesnice? |
||
Časová prodleva: 15 let
|
0