Moderní a zabezpečené připojení k databázím pomocí PHP

Obsah
Pokud existuje něco, co může poškodit aplikaci, pak když nepoužíváme adekvátní prostředky k tomu, aby byla rychlejší a bezpečnější, existuje mnoho způsobů, jak zlepšit rychlost a zabezpečení aplikací, může to být pomocí lepších vývojových vzorců, použití vyššího zabezpečení na serverech atd.
Existuje však bod, kdy mnohokrát nepřestaneme myslet, a to je, pokud nástroj, který nám jazyk dává, je nejlepší pro práci, kterou děláme. To se hodně děje v PHP Nehledě na to, že již mnoho let existuje upozornění, že funkci nepoužívat mysql_connect () vytvořit odkazy na DatabázeZdá se, že mnoho vývojářů si neuvědomuje velkou chybu, kterou při používání dělají.
PHP má nativní podporu pro velký počet motorů Databáze které na trhu existují, bez ohledu na jeho integraci s MySQL je to téměř povinný výchozí bod pro většinu uživatelů.
mysql_connect ()Z verze 5.5 z PHP klasická funkce mysql_connect () je ve stavu zastaralé, to znamená, že je zastaralý a důrazně se doporučuje jej nepoužívat, protože nebude zahrnut v budoucích verzích jazyka.
Alternativou k navázání spojení je procházení dvěma prvky, prvním je použití stejné jazykové struktury pro navázání spojení nebo použití nové knihovny pro připojení MySQL. Zde může přijít první otázka, proč prostě přemýšlet MySQL? Odpověď je jednoduchá, je to začátek, je to nejjednodušší a nejužitečnější věc, kterou můžeme zpočátku vysvětlit, pokud známe tuto základnu, můžeme extrapolovat na jiné motory a ovladače.
První alternativa připojení k Databáze je použít vlastní datový objekt jazyka s názvem Datový objekt PHP nebo její zkratka PDO. Nejde o nic jiného než o velkou písemnou příponu v jazyce C to nám umožňuje navázat spojení s různými typy motorů Databáze a že má standardní metody, které nám dávají možnost psaní aplikací napříč platformami, to znamená, že pokud změníme databázový stroj, nemusíme měnit syntaxi.
Nejprve jsme si řekli, že se budeme soustředit MySQLPokud však navážeme spojení prostřednictvím PDO to, co děláme, můžeme aplikovat na jiné motory. K tomu musíme pouze aktivovat nebo začlenit ovladače pro uvedené motory a aktivovat je v souboru php.ini ze serveru.
Chcete -li se připojit k a Databáze musíme pouze vytvořit odkaz pomocí příslušné metody, v PDO připojení je dosaženo třemi základními parametry, názvem databázového serveru, uživatelským jménem a jeho heslem.
Jediným parametrem těchto tří, který potřebuje vysvětlení, je databázový server, v minulosti jsme museli vybrat Databáze Prostřednictvím konkrétní funkce po navázání připojení to v tomto případě uděláme ve stejném řetězci, takže náš řetězec názvu serveru bude vypadat takto:
mysql: host = název hostitele; dbname = název db

Vidíme, že v tomto případě zpočátku specifikujeme motor mysql pak s hostitelem vám řekneme, který je server, zde to může být IP nebo localhost pokud je server lokální, nakonec pomocí dbname předáme název databáze, ke které se chceme připojit. Na následujícím obrázku budeme sledovat, jak se má kód připojit pomocí PDO:

ZVĚTŠIT

Vzhledem k tomu, že známe počáteční krok, kterým je připojení, musíme se nyní naučit, jak můžeme spouštět dotazy, obvykle jsme v minulosti používali k přímému spouštění dotazu s jeho parametry, tato praxe není vůbec bezpečná, protože nás činí náchylnými útoky tohoto typu SQL Injection, PDO nám umožňuje používat tzv Připravené Stámy což není nic jiného než provádění dotazu parametrizovaným způsobem, takže knihovna sama provádí ladění a je méně náchylná k útokům. Podívejme se dále, jak provést jednoduchý dotaz a pak jeho ekvivalent s Připravený Stament.
V tomto jednoduchém dotazu budeme předpokládat, že máme tabulku v našem Databáze volání Autor který obdrží autorský kód a poté jeho název, samozřejmě jako demonstrační to není příklad dobré tabulky, zajímá nás pouze to, jak spojení funguje PDO.
Na obrázku vidíme, že voláme metodu s názvem dotaz () z objektu vytvořeného pomocí připojovacího řetězce PDO pak napíšeme náš dotaz bez větších problémů:

ZVĚTŠIT

Problém je v tom, že hodnoty přijímáme přímo, takže neexistuje způsob, jak to zlepšit a znovu použít, místo toho, pokud uděláme a Připravený Stament, uvidíme, že nejprve určíme, který dotaz má být proveden, pak pomocí jiné metody zefektivníme a předáme mu potřebné hodnoty. Tím se do hry dostává modul ladění parametrů. PDO což poskytuje další úroveň ochrany. Podívejme se na následujícím obrázku, jak by předchozí příklad vypadal pomocí Připravené Stámy Nyní.

ZVĚTŠIT

Na první pohled se to může zdát poněkud složité a ne optimální, ale pokud analyzujeme, vidíme, že nejprve vytvoříme dotaz, který má být proveden, pak vytvoříme pole s parametry, které náš dotaz obdrží, v případě příkladu, který obdržíme autorský kód a jeho jméno, nakonec provedeme dotaz a předáme mu řadu parametrů.
Pokud se chceme jednou poradit, již jsme do našich hodnot vložili nějaké hodnoty Databáze je to velmi jednoduché, musíme to udělat pomocí dotazu VYBRAT, to nám umožní přinést záznamy, v minulosti jsme záviseli na funkcích, jako je mysql_fetch_array () nebo mysql_fetch_assoc () že když jsme to jednou spotřebovali, nemohli jsme znovu spravovat jeho výsledky.
S PDO Data získáme přímo z objektu, takže je budeme mít vždy k dispozici během provádění, podívejme se v následujícím příkladu, jak by to bylo provedeno:

Vidíme, jak jsme zpočátku vytvořili a Připravený Stament, v tomto případě uděláme jednoduchý dotaz a poté se smyčkou zatímco () získáme každý ze záznamů a provedeme jejich tisk, pokud si všimneme, že se na ně nevztahujeme MySQL kdekoli v našem kódu, takže pokud změníme připojovací řetězec a použijeme jiný modul, který má tabulku a Databáze se stejným názvem a strukturou, budeme moci získat vaše data, aniž bychom museli měnit náš kód.
Co MySQL je nejoblíbenější databázový stroj, se kterým se lze integrovat PHP, existuje také alternativa a je MySQLi což není nic jiného než objektově orientované rozhraní. Jeho způsob práce je velmi podobný tomu z PDOCo se však mění, je to pouze pro tento populární databázový stroj, takže konverze napříč platformami by nebyla možná.
Připojovací řetězec je o něco méně složitý, protože rozděluje název serveru v hostiteli a databázi, která má být použita ve dvou různých parametrech, kromě jména a hesla uživatele se podívejme, jak vypadá:
$ objConex = new mysqli (HostName, user, password, DatabaseName);

Podívejme se v následujícím příkladu, jak navazujeme připojení pomocí MySQLi a jak můžeme provést jednoduché vložení dat:

ZVĚTŠIT

Poznamenáváme, že existuje podobnost s PDO metodou dotaz () také to však bude fungovat pouze pro MySQL.
Nyní budeme přijímat a opakovat data, která můžeme získat z dotazu, proto použijeme stejnou metodu dotaz () a potom metoda fetch_assoc () získat výsledky:

Nejzajímavější věcí, které jsme si všimli, je, že tuto metodu používáme zavřít (), to, co dělá, je zavřít aktuální připojení a vyčistit vyrovnávací paměť takovým způsobem, aby se optimalizovalo využití prostředků serveru.
DůležitéMusíme mít na paměti, že pokud máme systém vytvořený ve staré verzi PHP a nebudeme migrovat na nové verze, možná změníme připojovací řetězce na Databáze a metody dotazů nemusí být dobrý nápad pro práci, kterou představuje. Pokud však chceme vytvářet nové aplikace a systémy, je nejlepší začít s pevným základem pomocí těchto nových knihoven s podporou v budoucích verzích PHP.
Tím tento tutoriál dokončujeme, viděli jsme, že nové alternativy jsou mnohem čistší a bezpečnější a díky jejich snadnému použití jsou vhodné pro aktuální časy.Líbil se vám tento návod a pomohl mu?Autora můžete odměnit stisknutím tohoto tlačítka, čímž mu dáte kladný bod
wave wave wave wave wave