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



Podobne dokumenty
Internetowe bazy danych

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

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

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

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

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

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

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

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

Protokół HTTP. 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

Internetowe bazy danych

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

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

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

Bazy Danych i Usługi Sieciowe

Podstawy programowania III WYKŁAD 2

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

Plan wykładu. 1. Protokół FTP. 2. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

Wprowadzenie do Internetu Zajęcia 5

Systemy internetowe Wykład 3 PHP

Programowanie w Internecie

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

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

Aplikacje internetowe - laboratorium

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

Wybrane działy Informatyki Stosowanej

Zajęcia 10 obsługa formularzy w PHP

Systemy internetowe. Wykład 5 Architektura WWW. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Autor: Joanna Karwowska

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

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

Technologie internetowe

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne

Wprowadzenie do Doctrine ORM

Aplikacje WWW - laboratorium

SMS Kod Automatyczny

Programowanie w Internecie

Projektowani Systemów Inf.

Oracle PL/SQL. Paweł Rajba.

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

Aplikacje WWW - laboratorium

Gatesms.eu Mobilne Rozwiązania dla biznesu

1.1 Podłączenie Montaż Biurko Montaż naścienny... 4

Database Connectivity

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

11. Autoryzacja użytkowników

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

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Umieszczanie kodu. kod skryptu

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

Bazy danych i strony WWW

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

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

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

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

Programowanie CGI. Jolanta Bachan Informatyka

akademia androida Składowanie danych część VI

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Aktualizacja SMSFall v Data publikacji:

Wykład 03 JavaScript. Michał Drabik

PHP: bloki kodu, tablice, obiekty i formularze

Aplikacje WWW - laboratorium

Specyfikacja HTTP API. Wersja 1.6

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

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

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

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

Programowanie w Sieci Internet Python - c. d. Kraków, 28 listopada 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Podstawy programowania w języku JavaScript

Format HTML. Wybrane działy Informatyki Stosowanej. Definicja i przeznaczenie Struktura dokumentu Znaczniki Formularze i komponenty

Źródła. cript/1.5/reference/ Ruby on Rails: AJAX: ssays/archives/

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Podręcznik Integracji

Zaawansowany kurs języka Python

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

Sieci komputerowe. Wykład 8: Warstwa zastosowań: FTP i HTTP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Laboratorium 7 Blog: dodawanie i edycja wpisów

Technologie sieciowe Sprawozdanie z labolatorium. Lista 5

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

INSTRUKCJA INSTALACJI I KONFIGURACJI APLIKACJI WEBSOFT CEIDG MONITOR

Internetowe bazy danych

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

INSTRUKCJA INSTALACJI I KONFIGURACJI APLIKACJI WEBSOFT SITE ANALYZER 2.7.1

SZYBKI START. Tworzenie nowego połączenia w celu zaszyfrowania/odszyfrowania danych lub tekstu 2. Szyfrowanie/odszyfrowanie danych 4

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

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Administracja bazami danych

HTTP W 5-CIU PYTANIACH MICHAŁ KOPACZ

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

0.1 Logowanie do serwisu

Aplikacje WWW - laboratorium

Dokumentacja smsapi wersja 1.4

OPIS TECHNICZNY SYSTEM HOSTED SMS

Instalacja MySQL.

Perl a XML. Narzędzia informatyczne w językoznawstwie. Generowanie danych XML - Przykład. Generowanie danych XML. Perl - Przetwarzanie XML

Protokół HTTP 1.1 *) Wprowadzenie. Jarek Durak. rfc2616 źródło

Transkrypt:

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

PHP i bazy danych Plan wykładu: Wprowadzenie Buforowanie stron Uwierzytelnianie Sesje Baza danych COM, DLL XML Podsumowanie

Wprowadzenie Połączenie PHP i baz danych: Korzyści: Różna zawartość tej samej strony Udostępnianie danych na zewnątrz Zdalna modyfikacja danych Trudności: Serwery proxy, itp. Tworzenie sesji użytkownika Czas trwania operacji (ustalić timeout)

Buforowanie stron Poziomy buforowania: Serwer proxy Cache przeglądarki Rozwiązanie: Uzupełnienie zwracanej strony o informacje dotyczące czasu jej ważności

Buforowanie stron (2) Przykład metody GET: GET /test.php?user=ala&pass=kotek HTTP/1.1 Host: przyklad.serwer.com Przykład metody POST: POST /test.php HTTP/1.1 Host: przyklad.serwer.com user=ala&pass=kotek

Buforowanie stron (3) Przykład odpowiedzi serwera: HTTP/1.0 200 OK Date: Sat, 20-May-95 03:25:12 GMT Content-type: text/html Last-modified: Wed, 14-Mar-95 18:15:23 GMT <html> <head><title>to jest test</title></head> <body>test</body> </html>

Buforowanie stron (4) Modyfikacja nagłówka: <?php // data w przeszłości header("expires: Mon, 26 Jul 1997 05:00:00 GMT"); // zawsze zmodyfikowany header("last-modified: ". gmdate("d, d M Y H:i:s")." GMT"); // dla HTTP/1.1 header( Cache-Control: no-store, no-cache,. must-revalidate ); header("cache-control: post-check=0, pre-check=0", false); // dla HTTP/1.0 header("pragma: no-cache");?>

Buforowanie stron (5) Uwagi: Funkcji header należy użyć przed wysłaniem jakiegokolwiek znaku do przeglądarki Można wykorzystać inkludowanie plików

Przekierowywanie <?php header("location: http://www.x.com/"); exit;?>

Uwierzytelnianie Wysłanie żądania uwierzytelnienia: header( WWW-Authenticate: BASIC. realm= Test ); header("http/1.0 401 Unauthorized"); Pobranie wyników: $_SERVER['PHP_AUTH_USER'] $_SERVER['PHP_AUTH_PW']

Uwierzytelnianie (2) Uwagi: Nie obsługiwane przez niektóre przeglądarki Dane nie są szyfrowane IIS problemy z podmianą nagłówka header('status: 401 Unauthorized');

Cel: Sesje Zachowanie ciągłości w komunikacji z użytkownikiem Trudności: HTTP protokół bezpołączeniowy Adres IP i port komputera użytkownika za mało Rozwiązanie: Przekazywanie ID sesji przez mechanizm cookies adres URL Nie zaleca się przechowywania zmiennych sesyjnych na lokalnym komputerze

Sesje (2) Przekazywanie ID sesji problemy: cookies można wyłączyć adres URL widoczne ID sesji należy samemu pilnować odnośniki (php.ini: session.use_trans_sid=0) Sesje są automatycznie obsługiwane od PHP 4.0

Sesje (3) Funkcje do obsługi sesji: Inicjalizacja (na każdej stronie, albo ustawiony parametr php.ini: session.auto_start=1) session_start(); Zamknięcie sesji (logout) session_destroy();

Sesje (4) Zmienne sesyjne (session.bug_compat_42=on): Rejestracja zmiennych sesyjnych (jednorazowo) session_register( nazwa1, ); Używanie zmiennych sesyjnych $nazwa1= ala ma kotka ; $zdanie= Zdanie:.$nazwa1; if(isset($nazwa1))... Usuwanie zmiennych sesyjnych session_unregister( nazwa1, );

Sesje (5) Zmienne sesyjne (session.bug_compat_42=off): Rejestracja i używanie zmiennych sesyjnych if (!isset($_session['count'])) $_SESSION['count']=0; else $_SESSION['count']++; Usuwanie zmiennych sesyjnych unset($_session['count']);

Sesje (6) Zmiany dla kompatybilności 4.2.0 -> 4.3.0: Zmienne sesyjne rejestrowane w globalnym obszarze session.bug_compat_42 = 1 Generowanie ostrzeżenia session.bug_compat_warn = 1

Sesje (7) Przekazywanie ID sesji przez URL: Linki <a href= www.x.pl/test.php?<?=sid?> > Formularze z metodą GET <form action= www.x.pl/test.php?<?=sid?> > Formularze z metodą POST <input type= hidden name=<?=session_name()?> value=<?=session_id()?> >

Sesje (8) Uwagi: Przełącznik kompilacji --enable-trans-sid ustawiony od 4.2.0 // w nowej wersji po session_start() define( SID, session_name(). =. session_id());

Sesje (9) Sposób pamiętania sesji: W odpowiednim pliku (domyślnie) jeden plik na sesję w katalogu /tmp (php.ini: session.save_path) zmienne są zachowane przez serialize Ręcznie można przechowywać w bazie danych, należy wtedy stworzyć odpowiednie procedury (session_set_save_handler())

Sesje (10) Problemy: Odświeżanie strony Strona poprzednia (przycisk wstecz )

Baza danych Dostępny standardowy interfejs: Łączenie z bazą danych (m.in. persistent) Wykonanie zapytania SQL Pobranie wyników Dostęp do dodatkowych informacji Uwagi: Nazwy funkcji są zależne od typu bazy danych

Łączenie z bazą danych: Podstawowe Baza danych (2) <typ>_connect( server, user, password ); Persistent <typ>_pconnect( server, user, password ); Uwagi: W wyniku zwraca uchwyt połączenia Typy: odbc, mysql, pg, Dla ODBC musi być dobrze skonfigurowany DSN Połączenie podstawowe jest automatycznie zamykane

Baza danych (3) Wykonanie zapytania: Ogólnie: $exe_id=<typ>_query($conn_id, sql ); ODBC: $exe_id=odbc_exec($conn_id, sql ); $stmt=odbc_prepare($conn_id, sql ); $exe_id=odbc_execute($stmt);

Pobranie wyników: Baza danych (4) Pojedyncze pole (czasem tabl. asoc.): <typ>_fetch_row($exe_id); <typ>_result($exe_id, <nr/nazwa pola>); Tablica asocjacyjna+indeksowana: <typ>_fetch_array($exe_id); Obiekt: <typ>_fetch_object($exe_id); Zwolnienie pamięci: <typ>_free_result($exe_id);

Baza danych (5) Dodatkowe informacje: ID ostatnio dodanego rekordu: pg_last_oid($exe_id); mysql_insert_id($exe_id); Liczba zmienionych wierszy: <typ>_affected_rows($exe_id); Liczba wierszy i kolumn do pobrania: <typ>_num_rows($exe_id); // -1 - nieznane <typ>_num_fields($exe_id); Błędy: <typ>_error($conn_id);

Baza danych (6) $conn_id=odbc_connect("php","",""); $exec_id=odbc_exec($conn_id, "SELECT * From Osoba"); while(odbc_fetch_row($exec_id)) { for($j=1; $j<=odbc_num_fields($exec_id); $j++) { echo odbc_result($exec_id,$j); } }

COM Obiekty COM (tylko Microsoft): Tworzenie: $ob = new COM( nazwa_obiektu [, string server_name [, int codepage]] ); Używanie: $ob-> Zwolnienie: $ob->release(); $ob=null;

COM (2) $baza = new COM("ADODB.Connection"); $plik=dirname ($_SERVER["SCRIPT_FILENAME"])."\\osoby.mdb"; $baza->open( Provider=. Microsoft.Jet.OLEDB.4.0. ;Data Source=.$plik);

COM (3) $wynik = $baza->execute( "SELECT * From Osoba"); // lub foreach od PHP 5.0 while(! $wynik->eof) { for($j=0; $j<$wynik->fields->count; $j++) { echo $wynik->fields[$j]->value; } $wynik->movenext(); } // usunięcie obiektów

COM (4) com_load_typelib('outlook.application'); // after that the code from Purplerain $objapp = new COM("Outlook.Application"); $myitem = $objapp->createitem(olmailitem); $a=$myitem->recipients->add("adres"); $myitem->subject="temat"; $myitem->body="treść listu!"; $myitem->display(); $myitem->send();

Win32 API // Load the extension in dl("php_w32api.dll"); // Register the GetTickCount function from kernel32.dll w32api_register_function("kernel32.dll", "GetTickCount", "long"); // Register the MessageBoxA function from User32.dll w32api_register_function("user32.dll", "MessageBoxA", "long");

Dokument XML: XML format tekstowy (czytelny) dane zamknięte w znaczniki znaczniki parami zamykane jeden korzeń w obrębie znacznika unikalne parametry wartości parametrów w cudzysłowie

XML (2) Dokument XML przykład: <?xml version= 1.0?> <p> <BOLD> t1 </BOLD> <EMPHASIS> t2 </EMPHASIS> <LITERAL> t3 </LITERAL> </p>

XML (3) Dokument XML przykład 2: <?xml version="1.0" encoding="windows-1250"?> <config> <chains> <chain name="morfologia"> <module id="morf_id" /> </chain> </chains> </config>

XML (4) Dokument XML dostęp: XML Parser wywoływanie zdarzeń (callback) tylko do odczytu XMLReader szybki, jednokierunkowy, niebuforowany odczyt xmlwriter szybki, jednokierunkowy, niebuforowany zapis

XML (5) Dokument XML dostęp (2): DOM (Document Object Model) drzewo przechowywane w pamięci skomplikowany interfejs SimpleXML drzewo obiektów PHP

XML (6) Obsługa plików XML (XML Parser): Utworzenie funkcji (handlerów) startelement($parser, $name, $attrs); endelement($parser, $name); characterdata($parser, $data);

XML (7) Obiekt parsera XML: Utworzenie obiektu parsera $xml_parser = xml_parser_create(); xml_set_element_handler( $xml_parser, startelement, endelement ); xml_set_character_data_handler( $xml_parser, characterdata ); Usunięcie obiektu parsera xml_parser_free($xml_parser);

XML (8) Parsowanie: Wysłanie tekstu do parsera xml_parse($xml_parser, $data, [end]); Błędy xml_get_error_code($xml_parser); xml_error_string(<nr_błędu>); xml_get_current_line_number( $xml_parser)

XML (9) Przykład tworzenia pliku XML (DOM): $doc = domxml_new_doc("1.0"); $root = $doc->add_root("html"); $head = $root->new_child("head", ""); $head->new_child("title", "Tytuł"); echo htmlentities($doc->dump_mem());

Podsumowanie Linki: www.php.net strona projektu PHP conf.php.net konferencje o PHP www.mysql.com MySQL www.postgresql.org PostgreSQL msdn.microsoft.com - MSDN Microsoft