PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Podobne dokumenty
Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

Podstawy programowania III WYKŁAD 2

Wykład 5: PHP: praca z bazą danych MySQL

Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

Autor: Joanna Karwowska

5. Współpraca z bazą danych MySQL

PHP: bazy danych, SQL, AJAX i JSON

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

BAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech

Zagadnienia. Konstrukcja bibliotek mysql i mysqli w PHP. Dynamiczne generowanie stron. Połączenie, zapytanie i sesja

Internetowe bazy danych

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Systemy internetowe. Wykład 4 mysql. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Internetowe bazy danych

Sprzeg podstawowy do baz danych w PHP Mateusz Sowa, 2007

Żeby korzystać z opisywanego modułu, należy go włączyć do kompilowanej wersji interpretatora PHP:

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

PHP i MySQL dla każdego / Marcin Lis. Wyd. 3. Gliwice, cop Spis treści

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

PHP + MySQL w laboratorium (1)

Bazy Danych i Usługi Sieciowe

Bazy danych w PHP dla początkujących

Spis treści. Wstęp 5 Rozdział 1. Praca z AJAX-em 9. Rozdział 2. Współpraca ze skryptami PHP 55. Rozdział 3. Obsługa formularzy 81

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel

Programowanie w Ruby

PODSTAWY BAZ DANYCH 13. PL/SQL

Zajęcia 13 wykorzystanie MySQL w PHP cz. 2

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Aplikacje WWW - laboratorium

Zagrożenia trywialne. Zagrożenia bezpieczeństwa aplikacji internetowych. Parametry ukryte. Modyfikowanie parametrów wywołania

Database Connectivity

Wprowadzenie do Doctrine ORM

Internetowe bazy danych

Podstawy programowania (PHP/Java)

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

STWORZENIE BIBLIOTEKI SŁUŻĄCEJ DO WCZYTYWANIA

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

6. Bezpieczeństwo przy współpracy z bazami danych

Projektowanie systemów baz danych

Funkcje i instrukcje języka JavaScript

Wykład 6: PHP: praca z bazą danych MySQL, cz.2

Wprowadzenie. Rozdział 23 PDO. Podstawowe kroki aplikacji. Źródło danych

Dokumentacja interfejsu MySQL. Platforma BSMS.PL Instrukcja podłączenia po przez mysql

SQL 4 Structured Query Lenguage

Oracle11g: Wprowadzenie do SQL

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

0.1 Logowanie do serwisu

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

INFORMATOR TECHNICZNY WONDERWARE. Ograniczenie wyświetlania listy zmiennych w przeglądarce zmiennych ActiveFactory

Instalacja MySQL.

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Aplikacje internetowe

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Rejestracja i Logowania - PHP/MySQL

Baza danych do przechowywania użytkowników

Składowane procedury i funkcje

Zajęcia 11 wykorzystanie MySQL w PHP

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu):

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

CREATE USER

Język PHP. Studium Podyplomowe Sieci Komputerowe i Aplikacje Internetowe. v1.7, 2007/11/23

Oracle PL/SQL. Paweł Rajba.

Typy tabel serwera MySQL

Wykład 5. SQL praca z tabelami 2

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Umieszczanie kodu. kod skryptu

Dlaczego PHP? - zalety

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

SQL injection. Metody włamań do systemów komputerowych p. 1/13. Bogusław Kluge, Karina Łuksza, Ewa Makosa

Bloki anonimowe w PL/SQL

Język SQL, zajęcia nr 1

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Języki programowania wysokiego poziomu. Forum, Blog, Sample DB - wskazówki

Gerard Frankowski, Zespół Bezpieczeństwa PCSS. Nowoczesne technologie bliżej nas Poznań,

Currenda EPO Instrukcja Konfiguracji. Wersja dokumentu: 1.3

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

Programowanie w SQL. definicja bloku instrukcji BEGIN...END, warunkowe wykonanie instrukcji IF...ELSE, wyrażenie CASE,

Projektowani Systemów Inf.

PHP. Tematyka wykładów: Język PHP PHP i bazy danych Rozszerzenia PHP

Aplikacje WWW - laboratorium

Bazy danych w PHP. PHPMyAdmin

Języki programowania wysokiego poziomu. PHP cz.1.

Serwer WWW Apache. Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, , zakończony projekt

Obiektowe bazy danych

Podstawowe wykorzystanie Hibernate

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

INFORMATYKA MÓJ SPOSÓB NA POZNANIE I OPISANIE ŚWIATA PROGRAM NAUCZANIA INFORMATYKI Z ELEMENTAMI PRZEDMIOTÓW MATEMATYCZNO-PRZYRODNICZYCH

Oracle PL/SQL. Paweł Rajba.

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Tworzenie serwisów WWW. Pierwsza pomoc

Transkrypt:

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł mysqli ma dwa interfejsy: proceduralny i obiektowy) PostgreSQL Oracle MS SQL Server Istnieją również rozszerzenia (biblioteki), zapewniające wspólny interfejs dostępu do baz danych, niezależnie od ich typu. Dla PHP jest to biblioteka PEAR

Przebieg czynności podczas korzystania z bazy danych Nawiązanie połączenia z serwerem baz danych Wybór bazy danych oraz uwierzytelnienie użytkownika tej bazy danych Ustawienie zestawu znaków dla połączenia z serwerem bazy danych Wykonanie operacji na bazie danych Wykorzystanie wyników zwróconych z bazy danych Zamknięcie połączenia W przypadku MySQL i modułu mysqli, większość czynności wykonuje obiekt mysqli, tworzony w pierwszym kroku

Nawiązanie połączenia, wybór bazy danych oraz uwierzytelnienie Potrzebne dane: - Nazwa lub adres IP serwera baz danych (w praktyce, ze względów bezpieczeństwa na ogół localhost)\ - Nazwa i hasło użytkownika bazy danych - Nazwa bazy danych (użytkownik musi mieć uprawnienia do tej bazy danych) Dane te najlepiej zapisać w postaci definicji stałych języka PHP: <?php define (DBUSER, "pik"); define (DBPASS, "kernel"); define (DBNAME, "pik_webapp");

Nawiązanie połączenia, wybór bazy danych oraz uwierzytelnienie Wszystkie potrzebne czynności wykonuje konstruktor obiektu mysqli. $conn = new mysqli (<host>, <użytkownik>, <hasło>, <baza-danych>); $conn = new mysqli ("localhost", "pik", " ", "pik_webapp");

Nawiązanie połączenia, wybór bazy danych oraz uwierzytelnienie Do sprawdzenia powodzenia tej operacji służy funkcja mysqli_connect_errno(), zaś funkcja mysqli_connect_error(), zwraca komunikat o błędzie: $conn = new mysqli ("localhost", "pik", " ", "pik_webapp"); if (mysqli_connect_errno()!=0) { $msg = mysqli_connect_error(); echo "Wystąpił błąd: $msg"; } else

Wykonanie operacji na bazie danych Do wykonywania wszelkich operacji na bazie danych służy metoda query() obiektu mysqli: $sql = "<zapytanie-sql>"; $res = $conn->query ($sql); Metoda ta zwraca jeden z trzech możliwych rezultatów: - FALSE jeżeli wystąpi błąd, - TRUE jeżeli operacja kończy się powodzeniem, ale nie zwraca rezultatu (np. DELETE, UPDATE) - Obiekt mysqli_result, z którego można pobierać wyniki, np. przy pomocy funkcji fetch_assoc() z tego względu do sprawdzania wyniku metody query() należy używać operatora identyczności (===) a nie równości (==).

Ustawienie zestawu znaków Zestaw znaków dla połączenia z serwerem bazy danych ustawia zapytanie SQL SET: $sql = "SET NAMES 'utf8'"; $res = $conn->query ($sql); Ustawienie tego samego zestawu znaków do komunikacji serwer bazy danych PHP oraz PHP przeglądarka gwarantuje prawidłowe zapisywanie i odczytywanie danych.

Wykorzystanie wyników zwróconych z bazy danych Jeżeli zapytanie SQL np. SELECT zwraca wynik, to ma on postać obiektu mysqli_result. Kolejne wiersze można odczytywać funkcją fetch_assoc(), najlepiej w pętli while: $sql = "SELECT * FROM Users"; $res = $conn->query ($sql); if ($res===false) // obsługa błędu else { while (($row=$res->fetch_assoc())!==null) // korzystamy z tabeli $row }

Wykorzystanie wyników zwróconych z bazy danych Każdy taki wiersz odczytany przez fetch_assoc() jest tablicą asocjacyjną <kolumna> -> <wartość>: echo "<table>"; echo "<tr> <th>nazwa <th>hasło"; while (($row=$res->fetch_assoc())!== NULL) { $name = $row["name"]; $pass = $row["pass"]; echo "<tr> <td>$name <td>$pass"; } echo "</table>;

Zamknięcie połączenia Połączenie z bazą danych zamyka metoda close() obiektu mysqli utworzonego podczas nawiązywania połączenia: $conn = new mysqli( ); // dostęp do bazy danych $conn->close(); Niepotrzebne połączenie należy zamknąć, aby zwolnić wykorzystywane przez nie zasoby.

Podsumowując : $conn = new mysqli ("localhost", " ", " ", " "); if (mysqli_connect_errno()!=0) { $msg = mysqli_connect_error(); echo "Wystąpił błąd: $msg"; } else { $sql = "SELECT * FROM Users"; $res = $conn->query ($sql); while (($row=$res->fetch_assoc())!==null) { $name = $row["name"]; echo "<tr> <td>$name <td> "; } $conn->close(); }

Względy bezpieczeństwa Wprowadzanie danych użytkownika do zapytać SQL może otworzyć drogę dla ataków tzw. wstrzykiwania SQL (SQL injection). Przykładowe zapytanie (sprawdzenie nazwy i hasła): SELECT * FROM Users WHERE name='$n' Jeżeli w formularzu haker wpisze "xxx'; DELETE * FROM Users", to zapytanie: SELECT * FROM Users WHERE name='xxx'; DELETE * FROM Users drastycznie zmniejszy liczbę zdefiniowanych użytkowników

Względy bezpieczeństwa Wniosek: dane należy weryfikować - dane liczbowe przez konwersję: $x = (int) $_POST["x"]; łańcuchy znaków przez konwersję na html: $s = mysqli::real_escape_string($_post["s"]);