Internetowe Bazy Danych. dr inż. Roman Ptak Katedra Informatyki Technicznej roman.ptak@pwr.edu.pl



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

Internetowe bazy danych

Instalacja MySQL.

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

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

Autor: Joanna Karwowska

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

SQL 4 Structured Query Lenguage

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

Projektowanie systemów baz danych

Internetowe bazy danych

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Bazy danych i usługi sieciowe

Bazy Danych i Usługi Sieciowe

Zaawansowane bazy danych i hurtownie danych

Internetowe Bazy Danych. dr inż. Roman Ptak Katedra Informatyki Technicznej

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

Podstawy programowania III WYKŁAD 2

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

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

Dokumentacja smsapi wersja 1.4

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

Sprzeg podstawowy do baz danych w PHP Mateusz Sowa, 2007

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Projektowani Systemów Inf.

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Bezpieczeństwo w sieci I. a raczej: zabezpieczenia wiarygodnosć, uwierzytelnianie itp.

PHP + MySQL w laboratorium (1)

Wykład 5. SQL praca z tabelami 2

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

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

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

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

Wykład 4. Metody uwierzytelniania - Bezpieczeństwo (3) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

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

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

Baza danych do przechowywania użytkowników

Bazy Danych i Usługi Sieciowe

PODSTAWY BAZ DANYCH 13. PL/SQL

Internetowe Bazy Danych. dr inż. Roman Ptak Katedra Informatyki Technicznej

5. Współpraca z bazą danych MySQL

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

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

Aplikacje internetowe

Kurs WWW. Paweł Rajba.

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Internetowe Bazy Danych. dr inż. Roman Ptak Katedra Informatyki Technicznej

Składowane procedury i funkcje

Kowalski Marcin Wrocław, dn Jaśkiewicz Kamil Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami

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

PHP: bazy danych, SQL, AJAX i JSON

Wdrożenie modułu płatności eservice. dla systemu Gekosale 1.4

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

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

Wdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x

Programowanie w języku Java. Bazy danych SQLite w Javie

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Umieszczanie kodu. kod skryptu

Ćwiczenia 2 IBM DB2 Data Studio

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Tuning SQL Server dla serwerów WWW

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

WorkshopIT Komputer narzędziem w rękach prawnika

Wdrożenie modułu płatności eservice. dla systemu Magento

Hurtownia Świętego Mikołaja projekt bazy danych

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Wprowadzenie do kryptografii i bezpieczeństwa. Po raz czwarty

Paweł Cieśla. Dokumentacja projektu

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Bazy danych 7. SQL podstawy

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Podstawowe wykorzystanie Hibernate

mysql> UPDATE user SET Password=PASSWORD('pass') WHERE user='root'; Query OK, 2 rows affected (0.05 sec) Rows matched: 2 Changed: 2 Warnings: 0

Zarządzanie systemami informatycznymi. Bezpieczeństwo przesyłu danych

Szyfrowanie danych w SZBD

Bazy danych. Polecenia SQL

Internetowe Bazy Danych. dr inż. Roman Ptak Katedra Informatyki Technicznej

Paweł Rajba

Post-relacyjne bazy danych

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Administracja bazami danych

Język SQL, zajęcia nr 1

Wykład 8. SQL praca z tabelami 5

Internetowe Bazy Danych. dr inż. Roman Ptak Katedra Informatyki Technicznej

Podstawy programowania (PHP/Java)

Cele. Definiowanie wyzwalaczy

Systemowe aspekty baz danych

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Bloki anonimowe w PL/SQL

Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory.

Materiały dydaktyczne: Maciej Krzymowski. Biometryka

Politechnika Częstochowska. Projektowanie systemów użytkowych II

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Database Connectivity

Transkrypt:

Internetowe Bazy Danych dr inż. Roman Ptak Katedra Informatyki Technicznej roman.ptak@pwr.edu.pl

Plan wykładu 4. Uwierzytelnienie, autoryzacja Uwierzytelnienie i bezpieczeństwo w kontekście PHP i baz danych Bezpieczeństwo transakcji podpis cyfrowy, SSL PHP PHP i BD 2

UWIERZYTELNIENIE I AUTORYZACJA 3

Uwierzytelnienie i autoryzacja 4 Uwierzytelnienie proces mający na celu identyfikację klientów aplikacji, np. użytkowników końcowych, usług, procesów lub komputerów Autoryzacja proces mający na celu ustalenie, które zasoby i operacje powinny być dostępne danemu uwierzytelnionemu klientowi. Dotyczy to zasobów takich jak pliki, bazy danych, zasoby systemowe.

Uwierzytelnienie Jednokierunkowe Dwukierunkowe Z udziałem zaufanej trzeciej strony 5

Uwierzytelnianie typy metod 1. WIEM = coś, co wiesz (ang. something you know) 2. MAM = coś, co masz (ang. somthing you own) 3. Biometryczne (ang. something you are) 6

Biometria Analiza DNA Rozpoznawanie twarzy Analiza tęczówki Rozpoznawanie podpisu Analiza głosu Zjawiska fizyczne Zachowania Karty elektronicznej Zmienne hasła 7 Przedmioty

Uwierzytelnianie WIEM Hasła najprostsza i najczęściej wykorzystywana metoda typu WIEM ciąg znaków alfanumerycznych (czasem tylko liczby, np. PIN) 8

Metody nielegalnego pozyskiwania haseł: 9 Wykradnięcie hasła z bazy (zabezpieczenie: szyfrowanie jednokierunkowe haseł, szyfrowanie danych na dysku) Przechwycenie podsłuchanie transmisji (zabezpieczenie: np. techniki związane z bezpieczną transmisją, odpowiednie technologie trudne do podsłuchu, np. światłowody) Metoda siłowa (zabezpieczenie: wymuszenie odpowiedniego doboru haseł, okresów ważności itp. Metody socjotechniczne (zabezpieczenie: szkolenie pracowników, kontrole, audyty)

Przykłady zaleceń odnośnie haseł: minimalna liczba dni między zmianami: 0 maksymalna liczba dni między zmianami: 40 sugerowany okres stosowania: 30 minimalna długość: 8 rozmiar alfabetu: 36 niepowtarzalność: TAK 10

Hasła uwagi Zbyt trudne hasła konieczność zapisywania, najczęściej karteczka naklejona na monitorze Zbyt częsta konieczność zmiany taka sama nazwa jak wcześniej z kolejną cyferką na końcu Wiedzę zawsze można z człowieka wydobyć 11

Uwierzytelnianie MAM Do uwierzytelnienia wykorzystujemy przedmiot będący w posiadaniu uprawnionej osoby W procesie weryfikacji wykorzystujemy informację zapisaną lub generowaną w przedmiocie (dodatkowo może być wymagana zapamiętana informacja WIEM ) 12

Uwierzytelnianie MAM 13 Cechy metod tego rodzaju: przedmiot powinien być wygodny w noszeniu i trudny do wykradzenia, zapisana informacja nie powinna być dostępna do uzyskania inaczej, jak tylko w procesie autoryzacji, w przypadku zagubienia lub kradzieży istotna jest możliwość jak najszybszego unieważnienia dostępu z wykorzystaniem zagubionego przedmiotu.

Uwierzytelnianie MAM Rodzaje przedmiotów karty z tworzywa sztucznego, tokeny, listy haseł jednorazowych, inne rozwiązania 14

Uwierzytelnianie MAM Identyfikacja na kartach z tworzywa sztucznego Standardowa karta, np. bankowa, służąca do kontroli dostępu, identyfikacji, określona normami ISO 7810 i 7811 ma wymiary 53,98 mm x 85,60 mm i grubość 0,76 mm z nadrukowanym kodem paskowym (ang. bare code), magnetyczne, stykowe (mikroprocesorowe, pamięciowe) 15

Uwierzytelnianie MAM Karty z kodem paskowym: tanie rozwiązanie, karta posiada najczęściej nazwę osoby lub firmy oraz kod kreskowy przykłady: obsługa klientów w sieci MACRO, identyfikacja uczniów w placówkach szkolnych, biblioteka główna PWr 16

Uwierzytelnianie MAM Karty magnetyczne: LOCO (low coercivity) niska koercja (koercja = natężenie powściągające, mówi o tym, jakie pole zewnętrzne trzeba przyłożyć, by zlikwidować zapis ), tzw. współczynnik koercji rzędzu 300-400 erstedów (jednostka natężenia pola magnetycznego 1 Oe = ok. 79,5 A/m w układzie SI) MECO (medioum coercivity) średniej koercji, do 3000 erstedów, HICO (high coercivity) wysokiej koercji, do 4000 erstedów. 17

Uwierzytelnianie MAM Karty magnetyczne (cd.): zapis w trzech ścieżkach, odpowiednio po 76, 37, 105 znaków alfanumerycznych. Przechowują zazwyczaj: numer konta, imię i nazwisko, hasło, datę ważnośći. 18

Uwierzytelnianie MAM Karty stykowe pamięciowe od 256 B do ok. 512 kb 100 tyś. cykli zapis/odczyt trwałość zapisu ok. 10 lat budowa: interfejs + EPROM procesorowe 19

Uwierzytelnianie MAM Inne rozwiązania listy haseł jednorazowych identyfikatory zbliżeniowe tokeny 20

Identyfikatory zbliżeniowe Karty zbliżeniowe (komunikacja przez wbudowany interfejs radiowy) Identyfikatory zbliżeniowe (np. w pierścionku, torebce, portfelu, breloczku) Układy mogą być aktywne (działają do wyczerpania baterii, zasięg np. 2 m) lub pasywne NFC (ang. Near Field Communication) - komunikacja bliskiego zasięgu

Tokeny Funkcja jak lista haseł jednorazowych, np. generuje hasło na podstawie bierzącego czasu Użycie wymaga PINu Wygląd: jak kalkulator ; rozebranie niszczy urządzenie

Uwierzytelnienie metody biometryczne Metody oparte o pomiary unikalnych cech fizjologicznych, sposób zachowania itp. Każdy ma identyfikator od urodzenia i nie trzeba go generować. 23

Typowe metody biometryczne Pomiar geometrii dłoni Identyfikacja daktyloskopijna Analiza obrazu tęczówki Skanowanie siatkówki oka Weryfikacja głosu Rozpoznawanie popisu Inne 24

Pomiar geometrii dłoni: 25 Pomiar długości, grubości i szerokości palców, powierzchni oraz grubości kostek, Autoryzacja polega na porównaniu opisu zawartego w bazie danych z danymi pobranymi od osoby, Producent urządzenia dostarcza stosowne oprogramowanie, Uwaga: dłoń już po kilku sekundach od odcięcia traci swoje właściwości, ale problemy np. z pierścionkami, opuchlizną itp.

Przykład urządzenia 26 źródło: http://us.allegion.com/products/biometrics/handkey2/pages/default.aspx

Analiza obrazu tęczówki Kształtowana w ciągu dwóch pierwszych lat życia (cecha fenotypowa możliwość rozpoznania bliźniaków) Niezmienność (naturalna ochrona przed uszkodzeniem) Dodatkowe możliwości np. pomiar reakcji na zmianę natężenia światła, pomiar odbicia światła, Koszt typowych urządzeń: 1000$-3000$ Zastosowania: uwierzytelnianie w obszarach o wysokim stopniu zabezpieczenia, np. lotniska, obszary przechowujące tajne dokumenty 27

Przykład urządzenia System: IrisAccess 2200 Lotnisko Heathrow Zastosowanie: odprawa paszportowa 28

Analiza obrazu siatkówki Bazuje na analizie układu naczyń krwionośnych położonych na siatkówce, Długi czas pomiaru (nawet kilkadziesiąt sekund) Lepsza weryfikacja niż poprzednia metoda, ale wyższy koszt urządzeń Zastosowanie: obszary wymagające bardzo wysokiego stopnia zabezpieczenia 29

Weryfikacja głosu Analiza takich parametrów jak: częstotliwość, poziom sygnału, rezonans Zalety możliwość wykonania autoryzacji przez telefon, niedrogi koszt urządzenia (np. tylko mikrofony) Wada mała stabilność tego bioparametru 30

Rozpoznawanie podpisu 31 Analiza podpisu i dynamiki jego składana: rytm, szybkość pisania, nacisk długopisu (on-line) Zalety: łatwe do zastosowania w Internecie przy zastosowaniu digitalizerów, odporne na kradzieże i zagubienie Zastosowania: systemy bankowe Przykład: www.cybersign.com

Inne metody biometryczne Pomiar dynamiki pisania na klawiaturze Pomiar wyściółki pod paznokciem Skanowanie twarzy 32

UWIERZYTELNIENIE PHP + BAZY DANYCH

Wybrane aspekty związane z bezpieczeństwem 34 Zmienne globalne (register_globals) wyłączone W przeciwnym razie wszystkie zmienne wysyłane do skryptu tworzone będą jako globalne, co może spowodować nadpisywanie wcześniej ustalonych wartości zmiennych o takich samych nazwach. Tym samym możliwe staje się na przykład oszukiwanie mechanizmów autoryzacji. Przy wyłączonej opcji register_globals do przekazywanej zmiennej należy się odwoływać za pomocą specjalnych tablic: $HTTP_POST_VARS['zmienna'] i $HTTP_GET_VARS['zmienna'] lub w skróconej formie: $_POST['zmienna'] i $_GET['zmienna'].

Wybrane aspekty związane z bezpieczeństwem zabezpieczenie dostępu do baz danych, serwerów itp. kontrola wprowadzanych danych, przechowywanie haseł, inne zagadnienia. Rozdział o bezpieczeństwie: http://php.net/manual/pl/security.php 35

Kontrola wprowadzonych danych: użytkownicy mogą wpisywać w pola z danymi skrypty, zapytania do bazy, polecenia wykonania operacji itp. przykład nazwiska w księdze gości: <SCRIPT LANGUAGE="JavaScript"> window.location="http://www.costam.pl"</script> rozwiązanie: $nazwisko=$_post[ nazwisko ]; $popr_nazw=htmlspecialchars($nazwisko); 36

Kontrola wprowadzonych danych: problemy związane z udostępnieniem plików przykład miało być: http://nasz.pl/bajki.php?plik=jas.html jest: http://nasz.pl/bajki.php?plik=/etc/passwd przykładowe rozwiązanie: porównać nazwę pliku z listą w bazie danych, jeśli inna to coś z tym zrobić 37

Kontrola wprowadzonych danych: uruchomienie programów z nieoczekiwanymi danymi przykład: <?php system( finger", $nazwa_uzyt);?> podana nazwa: "); vi /etc/passwd 38 rozwiązanie: użyć funkcji escapeshellcmd() unieszkodliwia znaki specjalne w łańcuchu wykonywalnym takie jak średnik Napisać własną funkcję do weryfikacji danych Inne przypadki

Szyfrowanie haseł 39 Jeśli nastąpi włamanie na serwer BD, to jest to podstawowa metoda zabezpieczenia przed uzyskaniem dostępu z kont użytkowników Przykład: użycie szyfrowania: użycie szyfrowania w bazie danych MySQL (funkcja password(): select count(*) from pracownicy where login= $login and haslo = password( $haslo );

Example #1 Using hashed password field <?php // storing password hash $query = sprintf("insert INTO users(name,pwd) VALUES('%s','%s');", addslashes($username), md5($password)); $result = pg_query($connection, $query); // querying if user submitted the right password $query = sprintf("select 1 FROM users WHERE name='%s' AND pwd='%s';", addslashes($username), md5($password)); $result = pg_query($connection, $query); if (pg_num_rows($result) > 0) { echo 'Welcome, $username!'; } else { echo 'Authentication failed for $username.'; }?> 40 źródło: http://algorytmy.pl/doc/php/security.database.storage.php

Podstawy szyfrowania Szyfrowanie z kluczem prywatnym Szyfrowanie z kluczem publicznym Podpis cyfrowy Certyfikaty cyfrowe 41

Szyfrowanie kluczem publicznym mamy parę kluczy P publiczny (np. dostępny w prasie), T prywatny (tajny) oraz W wiadomość niech P(W) oznacza tłumaczenie wiadomości z użyciem klucza publicznego, analogicznie T(W) P(T(W))=T(P(W))=W 42

SSL (Secure Sockets Layer) 43 Wykorzystuje szyfrowanie kluczem publicznym do ustalenia i wymiany klucza prywatnego, Przesyłanie danych z wykorzystaniem klucza prywatnego Model warstwowy HTTP SSL TCP/UDP IP warstwa fizyczna

Algorytmy szyfrowania Symetryczne jeden tajny klucz u nadawcy i odbiorcy: DES, BLOWFISH, 3DES, PGP, GPG Asymetryczne z użyciem klucza publicznego i prywatnego: RSA, DSA 44

Urzędy certyfikacji (CA, certificate authority) 45 Podmiot, który wystawia certyfikaty cyfrowe Certyfikat potwierdza właściciela klucza publicznego Narodowe Centrum Certyfikacji Urzędy: Krajowa Izba Rozliczeniowa Polska Wytwórnia Papierów Wartościowych Unizeto Technologies (CERTUM) Safe Technologies Enigma Systemy Ochrony Informacji

Podsumowanie 46 Bezpieczeństwo rozpatrujemy w kontekście: sieci komputerowej serwera WWW serwera bazy danych sprzętu Za bezpieczeństwo odpowiada najsłabsze ogniwo, należy pamiętać o włączeniu pracowników do systemu ochrony (uprawnienia, polityka haseł itp. Kompromis pomiędzy kosztem a zabezpieczeniem

PHP PHP Hypertext Preprocessor

PHP Powstanie: 1995 r. Aktualna wersja: 5.6.2 Składnia wywodzi się z PERLa, skryptów powłoki Duże podobieństwo do C Model obiektowy wzoruje się na językach C++ i Java 48

PHP dla programistów C/C++ PHP jako interpretowane C Podobieństwa składania operatory, struktury sterujące i funkcje Różnice brak typów zmiennych zmienne poprzedzone znakiem $ 49

Różnice pomiędzy PHP a C PHP słabe typowanie Typy numeryczne: integer, double Ciągi: apostrofy 'Dowolny tekst' cudzysłowia "Inny tekst $zm" "Inny {$zm}tekst" 50 składnia heredoc $my_string = <<<ETYKIETA tekst operator dla ciągów: kropka (.) funkcje operujące na ciągach Typ boolen (wartości TRUE lub FALSE_

Różnice pomiędzy PHP a C Konwersja typów Tablice w PHP są tablicami asocjacyjnymi lub wartościami mieszanymi Brak struktur w PHP Brak wskaźników w PHP Brak prototypów w PHP 51

Tworzenie tablic Tablice indeksowane liczbami $tecza = array("czerwony", "pomarańczowy", $tecza[2] = "żółty"; $tecza[3] = "zielony"; Tablice asocjacyjne $osoba['nazwisko']= "Kowalski"; $osoba['imie'] = "Jan"; 52

Klasy i obiekty <?php class MojaKlasa { public private $zm_publiczna; //definiowanie pola publicznego $zm_prywatna; //definiowanie pola prywatnego protected $zm_chroniona; //definiowanie pola chronionego const STALA = 124; //definiowanie stałej, stała musi zostać określona (jeśli nie - błąd składni) ( ) }?>

Klasy i obiekty <?php class MojaKlasa { ( ) public function construct() { echo 'Jestem konstruktorem klasy MojaKlasa. Za każdym razem gdy powołasz mój obiekt do życia, wykonam operacje zawarte w tej metodzie.<br />'; } public function zrob_cos() { echo 'Właśnie wykonywana jest funkcja zrob_cos()<br />'; } }?> public function destruct() { echo 'Jestem destruktorem klasy MojaKlasa. Za każdym razem gdy usuniesz mój obiekt, wykonam operacje zawarte w tej metodzie.<br />'; }

Klasy i obiekty <?php ( ) $mojobiekt = new MojaKlasa(); //powoła do życia obiekt i wykona operacje zawarte w funkcji construct() $mojobiekt -> zrob_cos(); // Wydrukuje komunikat //kończąc kod PHP, wszystkie zmienne są usuwane, wywoływana jest funkcja destruct()?>

Funkcje MySQL http://php.net/manual/en/ref.mysql.php 56

Funkcje MySQL (1) 57 mysql_affected_rows Get number of affected rows in previous MySQL operation mysql_client_encoding Returns the name of the character set mysql_close Close MySQL connection mysql_connect Open a connection to a MySQL Server mysql_create_db Create a MySQL database mysql_data_seek Move internal result pointer mysql_db_name Retrieves database name from the call to mysql_list_dbs mysql_db_query Selects a database and executes a query on it mysql_drop_db Drop (delete) a MySQL database mysql_errno Returns the numerical value of the error message from previous MySQL operation

Funkcje MySQL (2) 58 mysql_error Returns the text of the error message from previous MySQL operation mysql_escape_string Escapes a string for use in a mysql_query mysql_fetch_array Fetch a result row as an associative array, a numeric array, or both mysql_fetch_assoc Fetch a result row as an associative array mysql_fetch_field Get column information from a result and return as an object mysql_fetch_lengths Get the length of each output in a result mysql_fetch_object Fetch a result row as an object mysql_fetch_row Get a result row as an enumerated array mysql_field_flags Get the flags associated with the specified field in a result mysql_field_len Returns the length of the specified field

Funkcje MySQL (3) mysql_field_name Get the name of the specified field in a result mysql_field_seek Set result pointer to a specified field offset mysql_field_table Get name of the table the specified field is in mysql_field_type Get the type of the specified field in a result mysql_free_result Free result memory mysql_get_client_info Get MySQL client info mysql_get_host_info Get MySQL host info mysql_get_proto_info Get MySQL protocol info mysql_get_server_info Get MySQL server info mysql_info Get information about the most recent query 59

Funkcje MySQL (4) mysql_insert_id Get the ID generated in the last query mysql_list_dbs List databases available on a MySQL server mysql_list_fields List MySQL table fields mysql_list_processes List MySQL processes mysql_list_tables List tables in a MySQL database mysql_num_fields Get number of fields in result mysql_num_rows Get number of rows in result mysql_pconnect Open a persistent connection to a MySQL server mysql_ping Ping a server connection or reconnect if there is no connection mysql_query Send a MySQL query 60

Funkcje MySQL (5) mysql_real_escape_string Escapes special characters in a string for use in an SQL statement mysql_result Get result data mysql_select_db Select a MySQL database mysql_set_charset Sets the client character set mysql_stat Get current system status mysql_tablename Get table name of field mysql_thread_id Return the current thread ID mysql_unbuffered_query Send an SQL query to MySQL without fetching and buffering the result rows. 61

Łączenie z serwerem i bazą danych 62 <?php // nawiazujemy polaczenie $connection = @mysql_connect('localhost', 'uzytkownik', 'haslo') // w przypadku niepowodznie wyświetlamy komunikat or die('brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error()); // połączenie nawiązane ;-) echo "Udało się połączyć z serwerem!<br />"; // nawiązujemy połączenie z bazą danych $db = @mysql_select_db('nazwa_bazy', $connection) // w przypadku niepowodzenia wyświetlamy komunikat or die('nie mogę połączyć się z bazą danych<br />Błąd: '.mysql_error()); // połączenie nawiązane ;-) echo "Udało się połączyć z bazą danych!"; // zamykamy połączenie mysql_close($connection);?>

Tworzenie bazy danych <?php // otwiera połączenie $polaczenie = mysql_connect("localhost", "juzer", "samopas"); // wybiera bazę mysql_select_db("test",$polaczenie); // tworzy instrukcję SQL $sql = "CREATE TABLE tabelaprobna (id int not null primary key auto_increment, poleprobne varchar (75))"; // wykonuje instrukcję SQL $wynik = mysql_query($sql, $polaczenie) or die(mysql_error()); // wyświetla identyfikator wyniku echo $wynik;?> 63

Wstawianie danych do bazy 64 <?php // otwiera połączenie $polaczenie = mysql_connect("localhost", "juzer", "samopas"); // wybiera bazę mysql_select_db("test",$polaczenie); // tworzy instrukcję SQL $sql = "INSERT INTO tabelaprobna values ('', 'jakaś wartość')"; // wykonuje instrukcję SQL $wynik = mysql_query($sql, $polaczenie) or die(mysql_error()); // wyświetla identyfikator wyniku echo $wynik;?>

Pobieranie danych z bazy 65 <?php // otwiera połączenie $polaczenie = mysql_connect("localhost", "juzer", "samopas"); // wybiera bazę mysql_select_db("test",$polaczenie); // tworzy instrukcję SQL $sql = "SELECT * FROM tabelaprobna"; // wykonuje instrukcję SQL $wynik = mysql_query($sql, $polaczenie) or die(mysql_error()); //przechodzi przez każdy wiersz zbioru wyników i wyświetla dane while ($nowatablica = mysql_fetch_array($wynik)) { // nadaje polom nazwy $id = $nowatablica['id']; $poleprobne = $nowatablica['poleprobne']; //wyświetla rezulaty na ekranie echo "Identyfikator to $id a tekst w polu to $poleprobne <br>"; }?>

DZIĘKUJĘ ZA UWAGĘ