PHP i bazy danych


PHP. Jak w bezpieczny sposób połączyć się z bazą MySQL?

Do wykonywania jakichkolwiek operacji na bazach danych MySQL potrzebne jest połączenie z daną bazą. Do połączenia z bazą można wykorzystać dosyć prosty i w miarę bezpieczny skrypt PHP.

Mój skrypt połączeniowy wygląda następująco:

<?php #Połącz i wybierz bazę danych

    // Stałe danych podstawowych

    DEFINE ('DB_USER', 'uzytkownik_mysql');
    DEFINE ('DB_PASSWORD', 'moje_haslo');
    DEFINE ('DB_HOST', 'localhost');
    DEFINE ('DB_NAME', 'nazwa_bazy');

    // Połącz i wybierz

    $dbc = @mysql_connect (DB_HOST, DB_USER, DB_PASSWORD)
OR die ('Nie mogłem się połączyć: ' . mysql_error() );
    @mysql_select_db (DB_NAME) OR die ('Nie mogłem wybrać bazy danych: ' . mysql_error() );

?>

Najpierw zdefiniowałem 4 stałe - użytkownika, hasło, host i nazwę bazy danych. Moja baza danych znajduje się na tym samym serwerze co plik, więc jako host wpisałem "localhost".

Następnie posłużyłem się dwiema funkcjami: mysql_connect() i mysql_select_db(). Pierwsza służy do łączenia się z bazą danych, druga zaś do wybierania odpowiedniej bazy danych.

Jako argumenty funkcji mysql_connect() należy podać kolejno: host, użytkownika i hasło. Natomiast jako argument funkcji mysql_select_db() trzeba podać nazwę bazy danych. Obie funkcje poprzedziłem znakiem @, aby nie wyświetlały żadnych komunikatów.

Jeżeli coś pójdzie nie tak (funkcja zwróci błąd) zostanie wyświetlony komunikat zakończony treścią funkcji mysql_error(), która wyświetla komunikat błędu.

Dla bezpieczeństwa plik ze skryptem powinien mieć rozszerzenie *.php, np. db_connection.php. Plik ten powinien być umieszczony w innym katalogu niż katalog główny dla strony WWW, czyli przed katalogiem public_html, czy htdocs (w zależności od serwerów katalogi te mogą mieć różne nazwy jednak chodzi o to, żeby plik nie znajdywał się w katalogu ze stroną i był niedostępny dla innych).

Łączenie z bazą danych

Aby połączyć się z bazą danych należy odwołać się w jakiś sposób do wcześniej utworzonego pliku db_connection.php.

Tutaj proponuję użyć funkcji require_once(). Pozwoli ona zaciągnąć plik z połączeniem do dowolnego skryptu PHP tylko raz (nie podwoi połączenia). Plik z połączeniem musi być umieszczony przed instrukcjami odnoszącymi się do operacji na bazie danych. Jeżeli ujrzysz komunikat "Cannot choose the data base" (lub podobny) oznacza to, że albo w pliku db_connection.php podałeś złą nazwę bazy danych (jednak powinien wyświetlić się wtedy jeszcze komunikat "Nie mogłem wybrać bazy danych" zdefiniowany w tym pliku) albo w ogóle nie zaciągnąłeś tego pliku.

W funkcjach też musisz się jakoś odwołać do tego pliku. Jeżeli używasz połączenia z bazą tylko w funkcjach możesz używać require_once() bezpośrednio w nich. Jeżeli używasz funkcji sporadycznie, a reszta opiera się o połączenie z bazą danych - zalecam użycie zmiennej $dbc z oznaczeniem globlanym (tzn. w danej funkcji wpisz po prostu global $dbc).

Funkcja require_once() anuluje dalsze wykonywanie skryptów PHP jeśli zwróci błąd (np. plik nie istnieje).

Zamykanie połączenia

Do zamykania połączenia z bazą danych służy funkcja mysql_close(), którą pozostawiamy w miejscu, w którym chcemy, aby połączenie zostało zakończone (dodajemy średnik za nią - normalne wywołanie funkcji w PHP).

Przy normalnej konfiguracji serwera, połączenie z bazą danych zostanie zakończone w momencie zakończenia skryptu PHP. Mimo wszystko zaleca się stosowanie funkcji mysql_close().

Dodał: Paweł​Dzedzej
Dział: PHP i bazy danych


 

ComputerSun.pl na FaceBooku
Polecamy lekturę:

Windows 7 PL
# MAGAZYNY

Tańsze e-wydania:

e-prasa: PC World Extra - iPad

Zobacz wszystkie:
e-wydania: Internet i komputery