Musí zemřít
Právě naopak, nemělo by or die()
vůbec.
PHP je jazyk špatné dědičnosti. Velmi špatná dědičnost. A or die()
přičemž chybová zpráva je jedním z nejhorších základů:
- die zobrazí chybovou zprávu, která potenciálnímu útočníkovi odhalí některé vnitřní části systému
- Je to matoucí nevinné uživatele podivnými zprávami a nenechává jim žádné rozhraní, se kterým by mohli pracovat, takže by pravděpodobně prostě odešli.
- zabije skript uprostřed, takže může způsobit zobrazení roztrhaného designu (nebo vůbec žádného) (tj. neúplné vykreslení stránky, kterou uživatel požadoval)
- nenávratně zabít skript. Zatímco vyhozená výjimka může být zachycena a elegantně zpracována
die()
vám nenapoví místo, kde k chybě došlo . A v relativně velké aplikaci to bude docela těžké najít.
Nikdy tedy nepoužívejte die()
s chybami MySQL, i pro dočasné ladění :Existují lepší způsoby.
Namísto ruční kontroly chyby stačí nakonfigurovat mysqli tak, aby vyvolalo výjimky při chybě přidáním následujícího řádku do kódu připojení
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
a poté stačí napsat každý příkaz mysqli tak, jak je, bez jakéhokoli or die
nebo cokoli jiného:
$result = mysqli_query($link, $sql);
Tento kód vyvolá výjimku v případě chyby, a tak budete vždy informováni o každém problému bez jediného řádku kódu navíc.
Podrobnější vysvětlení, jak zajistit, aby byla produkce hlášení chyb připravena, jednotná a celkově rozumná a zároveň byl váš kód mnohem čistší, najdete v mém článku na Hlášení chyb PHP .