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



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

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

Autor: Joanna Karwowska

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Sesje, ciasteczka, wyjątki. Ciasteczka w PHP. Zastosowanie cookies. Sprawdzanie obecności ciasteczka

Zajęcia 11 wykorzystanie MySQL w PHP

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

5. Współpraca z bazą danych MySQL

Sprawozdanie nr 4. Ewa Wojtanowska

Instalacja MySQL.

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII

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

PHP + MySQL w laboratorium (1)

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

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

Podstawy programowania III WYKŁAD 2

Internetowe bazy danych

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

Aplikacje WWW - laboratorium

Dlaczego PHP? - zalety

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

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

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

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

Aplikacje WWW - laboratorium

Zajęcia 13 wykorzystanie MySQL w PHP cz. 2

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

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Aplikacje WWW - laboratorium

SMS Kod Automatyczny

Aplikacje internetowe - laboratorium

Internetowe bazy danych

Języki programowania wysokiego poziomu. PHP cz.3. Formularze

Projektowani Systemów Inf.

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

Bazy Danych i Usługi Sieciowe

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

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

Przykład programu w PHP. Wykład10.PHP ciągdalszy,str.1

Ćwiczenie: JavaScript Cookies (3x45 minut)

Wprowadzenie do Internetu Zajęcia 5

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

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

Przekazywanie danych. Dane zewnętrzne mogą pochodzić z róŝnych źródeł:

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

Specyfikacja instalacji usługi SMS Premium w Przelewy24.pl

Serwery aplikacji. dr Radosław Matusik. radmat

Sprzeg podstawowy do baz danych w PHP Mateusz Sowa, 2007

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

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

Zmienne i stałe w PHP

Sprawozdanie Laboratorium 4

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

Należy ściągnąć oprogramowanie Apache na platformę

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

Podstawy programowania (PHP/Java)

Dokumentacja interfejsu HTTPD. Platforma BSMS.PL Instrukcja podłączenia po przez http

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Systemy internetowe Wykład 3 PHP

Aplikacje internetowe

Dokumentacja Skryptu Mapy ver.1.1

Wybrane działy Informatyki Stosowanej

Laboratorium 1 Wprowadzenie do PHP

I.Wojnicki, PHP. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Ktedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie.

PHP: bazy danych, SQL, AJAX i JSON

POLITYKA PRYWATNOŚCI ORAZ POLITYKA PLIKÓW COOKIES W Sowa finanse

Sieci Komputerowe i Bazy Danych

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

Zajęcia 10 obsługa formularzy w PHP

Bezpieczeństwo systemów komputerowych

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

Wybrane działy Informatyki Stosowanej

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

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

Nazwa kwalifikacji: Tworzenie aplikacji internetowych i baz danych oraz administrowanie bazami Oznaczenie kwalifikacji: E.14 Numer zadania: 01

Bazy Danych i Usługi Sieciowe

I.Wojnicki, Tech.Inter.

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

Bazy danych i strony WWW

SSK - Techniki Internetowe

Laboratorium nr 4 - Badanie protokołów WWW

Dane - pobieranie, przekazywanie i przechowywanie. dr Beata Kuźmińska-Sołśnia

Nazwa kwalifikacji: Tworzenie aplikacji internetowych i baz danych oraz administrowanie bazami Oznaczenie kwalifikacji: E.14 Numer zadania: 02

Kopiowanie plików. 1. Z sieci wewnętrznej PK. System Windows

EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE Rok 2016 CZĘŚĆ PRAKTYCZNA

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Bazy danych i usługi sieciowe

Administracja bazami danych

Ataki na aplikacje WWW. Łomem, czy wytrychem? Jak dobrać się do aplikacji WWW

Przykładowa integracja systemu Transferuj.pl

ODBC polecenia i funkcje

Komunikacja między klientem, a skryptem PHP, oraz operacje na plikach

FORMULARZE. G. Przęczek

Nazwa kwalifikacji: Tworzenie aplikacji internetowych i baz danych oraz administrowanie bazami Oznaczenie kwalifikacji: E.14 Numer zadania: 01

KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED

Liczniki odwiedzin. Licznik odwiedzin na plikach

Transkrypt:

PHP i bazy danych Paweł Kasprowski pawel@kasprowski.pl

Użycie baz danych Bazy danych używane są w 90% aplikacji PHP Najczęściej jest to MySQL Funkcje dotyczące baz danych używają języka SQL Przydaje się wiedza z przedmiotu Bazy Danych

Nawiązanie połączenia Nawiązanie połączenia mysql_connect(adres_serwera, użytkownik, hasło) np.: $connection = mysql_connect('localhost','root','haslo') Wybór bazy danych mysql_select_db("nazwa_bazy",$connection) Należy także pamiętać o rozłączeniu z bazą mysql_close($connection)

Szybka powtórka z MySQL Uruchamianie serwera jako serwis (mysqld --install) jako niezależna aplikacja (mysqld --console) Użytkowanie mysql u root phaslo Wybór bazy i przesłanie zapytania use moja_baza select * from moja_tabela Obsługa bazy przez WWW myphpadmin

Zapytanie Wykonanie zapytania $res = mysql_query("select * from tablica",$connection) $res - obiekt typu resource z wynikiem Przeglądanie wyników (odczyt jednego wiersza z wyniku) mysql_fetch_row($res) Przegląd wszystkich wierszy while($row = mysql_fetch_row($res) {...}

Przykładowy kod <?php $cn = mysql_connect('localhost','root',''); mysql_select_db('test'); $result = mysql_query('select * from tab',$cn); while($row = mysql_fetch_row($result)) { echo $row[0]." ".$row[1]; echo '<br/>'; } mysql_close($cn);?>

Obsługa błędów Niektóre funkcje zwracają wartość True w przypadku powodzenia False w przypadku niepowodzenia Dla nich możliwe jest użycie operatora OR $connection = mysql_connect('localhost','root','haslo') or die("połączenie nieudane!") Die() uruchomi się gdy pierwsza funkcja zwróci False Die() powoduje natychmiastowe zakończenie skryptu Można przeczytać ostatni błąd za pomocą mysql_error() $connection = mysql_connect('localhost','root','haslo') or die("wystąpił błąd: ".mysql_error())

Obsługa błędów cd Operator kontroli błędów @ ukrywa komunikat o błędzie $connection = @mysql_connect('localhost','root','haslo') or die("wystąpił błąd: ".mysql_error()) Inny sposób na to samo: if(!$connection = @mysql_connect('localhost','root','haslo')) die("wystąpił błąd: ".mysql_error())

Odczytywanie błędów Zmienna globalna $php_errormsg Konieczne ustawienie parametru track_errors=on Zmienna zawiera wartość ostatniego błędu Przykład użycia: if(!$cn = mysql_connect('localhost','root','')) echo "Błąd: ".$php_errormsg;

Przetwarzanie rezultatów $res = mysql_query("select...", $connection) $res zmienna typu resource mysql_fetch_row($res) zwraca jeden wiersz jako tablicę (indeksy od 0) przechodzi do następnego jeśli nie ma już wierszy zwraca false mysql_fetch_asoc($res) zwraca tablicę asocjacyjną z nazwami pól jako kluczami mysql_fetch_array($res) zwraca jedno i drugie

Przykładowy kod z asoc <?php $cn = mysql_connect('localhost','root',''); mysql_select_db('test'); $result = mysql_query('select * from tab',$cn); while($row = mysql_fetch_asoc($result)) { echo $row["nr"]." ".$row["tekst"]; echo '<br/>'; } mysql_close($cn);?>

Analiza rezultatu (resource) mysql_num_fields($res) liczba kolumn mysql_num_rows($res) liczba wierszy w wyniku mysql_field_name($res,$i) nazwa kolumny o podanym numerze mysql_data_seek($res, $nr_wiersza) ustawienie kursora na podanym wierszu mysql_free_result($res) czyści pamięć zajętą przez ten rezultat

Polecenia na skróty mysql_create_db mysql_query("create DATABASE...") mysql_db_name mysql_query("select DATABASE()...") mysql_list_dbs mysql_query("show DATABASES") mysql_list_tables mysql_query("show TABLES")

Nawiązywanie połączenia Problem: to może trwać długo Rozwiązanie: zapamiętywanie połączenia Zamiast: mysql_connect Użyj: mysql_pconnect (od: persistent) pconnect sprawdza najpierw, czy istnieje już połączenie i używa go jeśli jest ono dostępne

Uniwersalny wyświetlacz $res = mysql_query("jakieś zapytanie",$cn); echo "<table><tr>"; $n = mysql_num_fields($res); // ile kolumn for($i=0; $i<$n; $i++) // wyświetl nagłówki echo "<th>".mysql_field_name($res,$i)."</th>"; echo "</tr>"; while($row = mysql_fetch_row($res)) { // wyświetl wiersze echo "<tr>"; for($i=0; $i<$n; $i++) // dla każdej kolumny echo "<td>".$row[$i]."</td>"; echo "</tr>"; } echo "</table>";

Inne serwery baz danych Dla każdego serwera inny zestaw funkcji z innym przedrostkiem Przykładowe funkcje połączeniowe: mssql_connect, ora_login, pg_connect, sybase_connect Pozostałe funkcje i ich sposób działania mogą się różnić! Można także połączyć się z dowolnym źródłem danych ODBC: odbc_connect, odbc_exec, odbc_fetch_row

Utrzymywanie połączenia Problem: protokół HTTP jest bezstanowy Każde połączenie użytkownika z serwerem WWW jest niezależne Jak więc przechować dane o użytkowniku podczas przeładowywania strony? Możliwości: ukryte pola formularza ciasteczka sesja

Ukryte pola formularza Serwer otrzymuje od użytkownika wypełnioną formatkę 1 i wysyła mu następną stronę z formatką 2 Dane z formatki 1, które powinny zostać zapamiętane umieszczane są na formatce 2 w polach hidden <input type=hidden name="login" value="pawel"> Użytkownik wypełnia formatkę 2 (pola widoczne) i przesyła ją na serwer Serwer otrzymuje dane wraz z wartościami w polach ukrytych i dzięki temu ma wszystkie informacje Podstawowe wady rozwiązania: duże formatki, łatwość podejrzenia i zmiany wartości ukrytych

Ciasteczka (cookies) Cookie mały plik zapisywany przez serwer na komputerze klienta Zapis cookie: setcookie("nazwa", "wartość", "czas wygaśnięcia") Funkcja musi być wywołana przed znacznikiem <html>! Odczyt cookie: $_COOKIE["nazwa"] Uwaga! Przeglądarka może mieć wyłączoną obsługę ciasteczek

Przykład ciasteczka if(!isset($_cookie["imie"])) { echo "ustawiam cookie"; setcookie("imie","paweł", time()+60); } else echo "cookie=".$_cookie["imie"];

Tworzenie sesji Sesja zbiór parametrów przechowywanych po stronie serwera Użytkownik przy pierwszym połączeniu otrzymuje identyfikator sesji Przy każdym następnym połączeniu jego dane pobierane są z jego sesji Skąd wiadomo, która sesja jest "jego"? ciasteczko url (np. www.strona.pl?sid=73fd909)

Przykład sesji session_start(); if(!isset($_session["imie"])) { echo "ustawiam parametr w sesji"; $_SESSION["imie"]="paweł"; } else echo "imie=".$_session["imie"];

Ciasteczka a sesje Sesje przechowywane są na serwerze a ciasteczka na komputerze klienta klient nie ma dostępu do wszystkich danych o sobie W sesjach przechowywać można duże obiekty, w ciasteczkach jest to trudniejsze klient może ograniczyć ilość miejsca na ciasteczka Sesje żyją krótko, ciasteczka mogą długo następnego dnia można użyć ciasteczka, sesja wygasa po zakończeniu pracy przez klienta