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, Komentarze

Aktualności IT:
aktualności IT, rss

# MAGAZYNY
Tańsze e-wydania:
e-prasa: Raport Computerworld TOP 200
Zobacz wszystkie:
e-wydania: Internet i komputery

 

package 50%
 

Statystyki:
Aktualności: 273
Artykułów: 118
Książek: 801
Narzędzi: 6
Kursów: 7

Książki:
literatura informatyczna

# ARTYKUŁY
Najnowsze:
Content - słów kilka
Webmastering, 2007-02-09, odsłon: 7266
Dlaczego niektóre strony cieszą się sporą popularnością? Co sprawia, że są coraz chętniej odwiedzane? Dlaczego niektóre strony nie potrafią przekroczyć  [...]
Jak projektować strony?
Webmastering, 2007-02-08, odsłon: 10783
Jak powinna wyglądać witryna?
Webmastering, 2007-02-08, odsłon: 10194
PHP. Redirect 301 Moved Permanently
PHP i bazy danych, 2007-02-04, odsłon: 14434
PHP. Losujemy przy pomocy funkcji rand()
PHP i bazy danych, 2007-02-04, odsłon: 15868
Mysia krytyka
Hardware, 2006-11-26, odsłon: 9300
 
Najczęściej czytane:
Jak wejść do BIOS-u?
2006-08-31, odsłon: 154633
- Bios
Instalacja programów
2006-08-18, odsłon: 143137
- Linux
Jak złamać hasło BIOS-u?
2006-08-30, odsłon: 98460
- Bios
Instalacja Windows 98 (se)
2005-12-01, odsłon: 86583
- Windows
Spis opcji - Award BIOS
2005-12-03, odsłon: 73663
- Bios
 
Najrzadziej czytane:
Szybkość czy wygląd?
2005-12-03, odsłon: 3912
- Windows
Mozilla Firefox
2005-11-14, odsłon: 3914
- Internet
Systemy chłodzące
2005-11-06, odsłon: 3914
- Hardware
Sztuczna inteligencja sterowana potrzebami
2006-07-24, odsłon: 3914
- Programowanie
Bezpieczny PC - czy to tylko abstrakcja?
2005-11-14, odsłon: 3915
- Internet
PHP i bazy danych:
Polecamy lekturę:

MacPodręcznik
      Tutaj jesteś: » Portal komputerowy » PHP i bazy danych » MySQL » PHP. Jak w bezpieczny sposób połączyć się z bazą MySQL? «
» Aktualności IT :: Artykuły :: ECDL :: Książki :: Ebooki :: Kursy :: Narzędzia «                  
      Jest wtorek, 7 września 2010
Kontakt :: O nas :: Reklama      
Newsletter:
Imię:  
Email:
Wiadomości w HTML?
Tak, akceptuję Politykę Prywatności

X
Imię:  
Email:
Wiadomości w HTML?
Tak, akceptuję Polityka Prywatności