PHP je výkonný jazyk na tvorbu webových aplikácií, no aj skúsení programátori sa v ňom môžu dopustiť chýb. Niektoré chyby spôsobujú nefunkčnosť aplikácie, iné môžu viesť k bezpečnostným problémom. V tomto článku sa pozrieme na najčastejšie chyby v PHP a ukážeme si, ako sa im efektívne vyhnúť.
Chyby v PHP môžu vzniknúť v dôsledku nesprávnej syntaxe, logických omylov, nesprávneho spracovania údajov alebo nedostatočného zabezpečenia aplikácie.
Riešenie týchto chýb je dôležité pre:
;PHP vyžaduje, aby každý príkaz končil bodkočiarkou. Ak na to zabudnete, spôsobíte syntax error.
<?php echo "Ahoj, svet!" echo "Druhá veta"; ?>
Riešenie: Uistite sa, že každý príkaz končí bodkočiarkou.
<?php echo "Ahoj, svet!"; echo "Druhá veta"; ?>
Ak sa pokúsite použiť premennú, ktorú ste nedefinovali, PHP vypíše upozornenie.
<?php echo $meno; ?>
Riešenie: Pred použitím premennej sa uistite, že existuje.
<?php $meno = "Peter"; echo $meno; ?>
PHP umožňuje voľné porovnávanie (==) aj striktné porovnávanie (===).
<?php
$cislo = "5";
if ($cislo == 5) {
echo "Hodnoty sú rovnaké"; // Pravda
}
if ($cislo === 5) {
echo "Hodnoty a typy sú rovnaké"; // Nepravda
}
?>
Riešenie: Používajte ===, ak potrebujete porovnať aj dátový typ.
Nepoužitie správnych metód na ochranu pred SQL injection môže viesť k útokom hackerov.
<?php
$conn = new mysqli("localhost", "root", "", "databaza");
$meno = $_GET["meno"];
$sql = "SELECT * FROM uzivatelia WHERE meno = '$meno'";
$result = $conn->query($sql);
?>
Riešenie: Používajte pripravené SQL dotazy.
<?php
$stmt = $conn->prepare("SELECT * FROM uzivatelia WHERE meno = ?");
$stmt->bind_param("s", $meno);
$stmt->execute();
?>
Niektorí vývojári zakazujú zobrazovanie chýb, čo sťažuje debugovanie.
<?php error_reporting(0); ?>
Riešenie: Na vývojovom prostredí zobrazujte všetky chyby.
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>
Používajte error_reporting(E_ALL); a logovanie chýb.
Používajte pripravené SQL dotazy (prepare() a bind_param()).
Premennú ste nepoužili pred jej inicializáciou. Použite isset() na kontrolu.
set_error_handler().Ak máte záujem o prezenčné alebo online školenie programovania v PHP, pozrite si našu ponuku na www.like-it.sk. Naše kurzy vedú skúsení odborníci, ktorí vám pomôžu zvládnuť základy aj pokročilé koncepty programovania.
Viac informacií preberáme na kurze:
Kurz PHPMYSQLAJAX - Tvorba webových stránok od základov v PHP a MySQL
Marián Knězek