Nowoczesne i bezpieczne połączenia z bazami danych za pomocą PHP

Spisie treści
Jeśli jest coś, co może uszkodzić aplikację, to wtedy, gdy nie wykorzystujemy odpowiednich zasobów, aby uczynić ją szybszą i bezpieczniejszą, jest wiele sposobów na poprawę szybkości i bezpieczeństwa aplikacji, może to być zastosowanie lepszych wzorców programistycznych, stosowanie większego bezpieczeństwa na serwerach itp.
Jednak jest punkt, w którym wiele razy nie zatrzymujemy się na myślenie, a to jest wtedy, gdy narzędzie, które daje nam język, jest najlepsze dla wykonywanej przez nas pracy. Dzieje się to często w PHP Pomimo tego, że od wielu lat pojawia się ostrzeżenie, aby nie korzystać z funkcji mysql_connect () nawiązać linki do Bazy danych, wielu programistów wydaje się nie zdawać sobie sprawy z dużego błędu, jaki popełniają podczas korzystania z niego.
PHP ma natywne wsparcie dla dużej liczby silników Bazy danych które istnieją na rynku, jednak ich integracja z MySQL jest to niemal obowiązkowy punkt wyjścia dla większości użytkowników.
mysql_connect ()Od wersji 5.5 z PHP klasyczna funkcja mysql_connect () jest w stanie przestarzałe, co oznacza, że ​​jest przestarzały i zdecydowanie zaleca się, aby go nie używać, ponieważ nie zostanie uwzględniony w przyszłych wersjach języka.
Alternatywą, aby połączenie przechodziło przez dwa elementy, pierwszym jest użycie tej samej struktury językowej do tworzenia połączeń lub użycie nowej biblioteki do połączenia MySQL. Tutaj może pojawić się pierwsze pytanie, po co tylko myśleć MySQL? Cóż, odpowiedź jest prosta, to początek, to najprostsza i najbardziej użyteczna rzecz, którą możemy wytłumaczyć na początku, jeśli znamy tę bazę, możemy ją ekstrapolować na inne silniki i sterowniki.
Pierwsza alternatywa połączenia z Baza danych jest użycie własnego obiektu danych języka o nazwie Obiekt danych PHP lub jego skrót ChNP. To nic innego jak duże pisemne rozszerzenie w języku C co pozwala nam nawiązywać połączenia z różnymi typami silników Bazy danych oraz że posiada standardowe metody, które dają nam możliwość pisania aplikacji wieloplatformowych, czyli nie musimy zmieniać składni, jeśli zmieniamy silnik bazy danych.
Na początku powiedzieliśmy, że skupimy się na MySQL, jednak jeśli nawiążemy połączenie przez ChNP to, co robimy, możemy zastosować do innych silników. W tym celu musimy tylko aktywować lub włączyć sterowniki tych silników i aktywować je w pliku php.ini z serwera.
Aby połączyć się z Baza danych wystarczy nawiązać połączenie za pomocą odpowiedniej metody, w ChNP połączenie uzyskuje się za pomocą trzech podstawowych parametrów, nazwy serwera bazy danych, nazwy użytkownika i hasła.
Jedynym parametrem z tych trzech, który wymaga wyjaśnienia, jest serwer bazy danych, w przeszłości musieliśmy wybrać Baza danych Poprzez konkretną funkcję po nawiązaniu połączenia, w tym przypadku zrobimy to w tym samym ciągu, więc nasz ciąg nazwy serwera będzie wyglądał tak:
mysql: host = nazwa hosta; nazwa_bazy = nazwa_bazy

Widzimy, że początkowo określamy silnik, w tym przypadku mysql wtedy z hostem powiemy ci, który jest serwer, tutaj może być IP lub Lokalny Gospodarz jeśli serwer jest lokalny, w końcu z nazwa_bazy podajemy nazwę bazy danych, z którą chcemy się połączyć. Na poniższym obrazku będziemy obserwować, jak kod ma się łączyć za pomocą ChNP:

POWIĘKSZAĆ

Skoro znamy pierwszy krok, czyli jak się połączyć, teraz musimy nauczyć się, jak możemy wykonywać zapytania, zwykle w przeszłości bezpośrednio wykonywaliśmy zapytanie z jego parametrami, ta praktyka nie jest wcale bezpieczna, ponieważ sprawia, że ​​jesteśmy podatni na ataki tego typu Wstrzyknięcie SQL, ChNP pozwala nam na korzystanie z tzw Przygotowane Wyciągi co jest niczym innym jak wykonaniem zapytania w sposób sparametryzowany, dzięki czemu sama biblioteka wykonuje zadanie debugowania i jest mniej podatna na ataki. Zobaczmy dalej, jak wykonać proste zapytanie, a następnie jego odpowiednik za pomocą Przygotowane oświadczenie.
W tym prostym zapytaniu założymy, że mamy tabelę w naszym Baza danych połączenie Autor który otrzymuje kod autorski, a następnie jego nazwę, oczywiście demonstracyjnie nie jest to przykład dobrej tabeli, interesuje nas tylko to, jak działa połączenie z ChNP.
Na obrazku widzimy, że nazywamy metodę o nazwie zapytanie () z obiektu utworzonego z ciągiem połączenia PDO, wtedy bez większego problemu piszemy nasze zapytanie:

POWIĘKSZAĆ

Problem polega na tym, że otrzymujemy wartości bezpośrednio, więc nie ma możliwości ich ulepszenia i ponownego wykorzystania, zamiast tego, jeśli dokonamy Przygotowane oświadczenie, zobaczymy, że najpierw wskazujemy jakie zapytanie ma zostać wykonane, następnie inną metodą realizujemy je i przekazujemy do niego niezbędne wartości. W ten sposób uruchamiany jest mechanizm debugowania parametrów. ChNP dając w ten sposób dodatkowy poziom ochrony. Zobaczmy na poniższym obrazku, jak wyglądałby poprzedni przykład przy użyciu Przygotowane Wyciągi teraz.

POWIĘKSZAĆ

Na pierwszy rzut oka może się to wydawać nieco skomplikowane i nieoptymalne, jednak analizując, widzimy, że najpierw ustalamy zapytanie do wykonania, a następnie tworzymy tablicę z parametrami, które otrzyma nasze zapytanie, w przypadku przykładu, który otrzymujemy kod autora i jego nazwę, na koniec wykonujemy zapytanie i przekazujemy mu tablicę parametrów.
Jeśli chcemy się raz skonsultować, wstawiliśmy już pewne wartości w naszym Baza danych to bardzo proste, po prostu musimy to zrobić za pomocą zapytania WYBIERZ, pozwoli nam to sprowadzić rekordy, w przeszłości zależało nam na funkcjach takich jak mysql_fetch_array () lub mysql_fetch_assoc () który raz skonsumowany, sprawił, że nie byliśmy w stanie ponownie zarządzać jego wynikami.
Z ChNP Zamierzamy pozyskać dane bezpośrednio z obiektu, więc zawsze będziemy mieć je pod ręką podczas realizacji, zobaczmy na poniższym przykładzie, jak by to było zrobione:

Widzimy, jak początkowo robimy a Przygotowane oświadczenie, w tym przypadku robimy proste zapytanie, a następnie pętlę podczas () pozyskamy każdy z zapisów i dokonamy ich druku, jeśli zauważymy, że się nie odwołujemy MySQL w dowolnym miejscu naszego kodu, więc jeśli zmienimy parametry połączenia i użyjemy innego silnika, który ma tabelę i a Baza danych o tej samej nazwie i strukturze będziemy mogli uzyskać Twoje dane bez konieczności zmiany naszego kodu.
Co MySQL jest najpopularniejszym silnikiem bazodanowym do integracji PHP, jest też alternatywa i jest MySQLi który jest niczym innym jak interfejsem obiektowym. Jego sposób działania jest bardzo podobny do tego z ChNPJednak zmienia się to, że jest to tylko dla tego popularnego silnika bazy danych, więc konwersja między platformami nie byłaby możliwa.
Jego ciąg połączenia jest nieco mniej złożony, ponieważ dzieli nazwę serwera w hoście i Bazę danych na dwa różne parametry, oprócz nazwy i hasła użytkownika, zobaczmy, jak to wygląda:
$ objConex = new mysqli (nazwa hosta, użytkownik, hasło, nazwa bazy danych);

Zobaczmy w poniższym przykładzie, jak nawiązujemy połączenie za pomocą MySQLi i jak możemy wykonać proste wstawianie danych:

POWIĘKSZAĆ

Zauważamy, że istnieje podobieństwo z ChNP mając metodę zapytanie () również, jednak będzie to działać tylko w przypadku MySQL.
Teraz będziemy otrzymywać i iterować dane, które możemy uzyskać z zapytania, w tym celu użyjemy tej samej metody zapytanie () a następnie metoda pobierz_skojarzenie () aby uzyskać wyniki:

Najciekawszą rzeczą, jaką zauważyliśmy, jest to, że używamy tej metody blisko (), to co robi to zamyka bieżące połączenie i czyści bufor w taki sposób, aby zoptymalizować wykorzystanie zasobów serwera.
WażnyMusimy pamiętać, że jeśli mamy system wykonany w starej wersji PHP i nie będziemy migrować do nowych wersji, może zmienimy parametry połączenia na Baza danych a metody zapytań mogą nie być dobrym pomysłem dla pracy, którą reprezentuje. Jeśli jednak chcemy tworzyć nowe aplikacje i systemy, najlepiej zacząć od solidnych podstaw wykorzystując te nowe biblioteki z obsługą w przyszłych wersjach PHP.
Na tym kończymy ten samouczek, widzieliśmy, że nowe alternatywy są znacznie czystsze i bezpieczniejsze, a ich łatwość użycia sprawia, że ​​są odpowiednie na obecne czasy.Podobał Ci się i pomógł ten samouczek?Możesz nagrodzić autora, naciskając ten przycisk, aby dać mu pozytywny punkt
wave wave wave wave wave