Autor Zpráva
Musilda
Profil
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 *
Potlačení chybové hlášky.
Musilda
Profil
Mohu někoho poprosit o bližší vysvětlení, nebo o odkaz na nějaký článek.
TFSi
Profil
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
TFSi
Děkuji, také v tom nevidím smysl. Je ale zvláštní, že se to dost často objevuje.
r0me0
Profil
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
r0me0
Tak na frontendu snad potlačim všechny chyby ne?
Joker
Profil
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
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
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
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é.
hhh
Profil *
jak udelam na pc zavinač
panther
Profil
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
hhh
česká klávesnice: ALT GR + V, ALT + 64
anglická klávesnice: SHIFT + 2 (nad dvoojitym W) .....
Mastodont
Profil
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
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?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: