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

Podobne dokumenty
I.Wojnicki, JiTW. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie.

Bazy Danych i Usługi Sieciowe

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

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

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

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

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

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

Aplikacje WWW - laboratorium

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

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

Bazy Danych i Usługi Sieciowe

Laboratorium 1 Wprowadzenie do PHP

Systemy internetowe Wykład 3 PHP

Aplikacje internetowe

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

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

Podstawy programowania III WYKŁAD 2

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

Wprowadzenie do Internetu Zajęcia 5

Aplikacje WWW - laboratorium

I.Wojnicki, Tech.Inter.

Sprzeg podstawowy do baz danych w PHP Mateusz Sowa, 2007

Dlaczego PHP? - zalety

INSTALACJA I KONFIGURACJA SERWERA PHP.

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

Internetowe bazy danych

Podstawy JavaScript ćwiczenia

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

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

SIECI KOMPUTEROWE I BAZY DANYCH

Internetowe bazy danych

NoSQL Not Only SQL, CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Igor Wojnicki

Obiektowe bazy danych

Programowanie internetowe

Lekcja 1. Składnia języka zmienne i podstawowe instrukcje PHP. Do wyświetlania tekstu służy instrukcja echo echo Hello world ;

Aplikacje WWW - laboratorium

Umieszczanie kodu. kod skryptu

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

Zajęcia 13 wykorzystanie MySQL w PHP cz. 2

Aplikacje WWW - laboratorium

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

Szablon główny (plik guestbook.php) będzie miał postać:

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

Zaawansowane bazy danych i hurtownie danych

SIECI KOMPUTEROWE I BAZY DANYCH

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

I.Wojnicki, PHP. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Katedra Automatyki Akademia Górniczo-Hutnicza w Krakowie. 20 października 2013

15. Funkcje i procedury składowane PL/SQL

Przykładowa integracja systemu tpay.com KIP S.A. ul. Św. Marcin 73/ Poznań.

Bazy danych. dr Radosław Matusik. radmat

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

Podstawy programowania (PHP/Java)

SSK - Techniki Internetowe

Programy CGI dla baz danych

Na początku utworzymy formularz w czystym języku HTML i przetestujemy go za pomocą przeglądarki WWW.

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

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Wykład 03 JavaScript. Michał Drabik

Bazy danych i strony WWW

I.Wojnicki, PHP. Smarty. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie. 28 marca 2014

Autor: Joanna Karwowska

Zajęcia 11 wykorzystanie MySQL w PHP

Języki skryptowe - PHP. Podstawy PHP. Paweł Kasprowski. pawel@kasprowski.pl. vl07

Podstawowe wykorzystanie Hibernate

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

Przykładowa integracja systemu Transferuj.pl

Składowane procedury i funkcje

NoSQL Not Only SQL: CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Przetwarzanie dokumentów i widoków.

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

spis treści wprowadzenie 9 1. tworzenie bazy danych przeglądanie pracowników przeglądanie z wykorzystaniem technologii ajax 45

Aplikacje WWW - laboratorium

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

Aplikacje internetowe - laboratorium

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

Internetowe bazy danych

PHP: bazy danych, SQL, AJAX i JSON

Baza danych do przechowywania użytkowników

PHP + MySQL w laboratorium (1)

Tworzenie serwisów WWW. Pierwsza pomoc

PHP: bloki kodu, tablice, obiekty i formularze

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

Formularze w PHP dla początkujących

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

Personal Home Page PHP: Hypertext Preprocessor

Dodatek Technologie internetowe 1. UTF-8 wg 2. Adresy URL

Aplikacje WWW - laboratorium PHP + bazy danych

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

Specyfikacja instalacji usługi SMS Premium w Przelewy24.pl

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

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

MVC w praktyce tworzymy system artykułów. cz. 2

Zarządzanie systemami informatycznymi. Pojęcie systemu informatycznego Tworzenie interaktywnego oprogramowania internetowego w PHP

Wysyłanie pliku na serwer. Plik na serwerze.

Database Connectivity

Specyfikacja implementacyjna aplikacji serwerowej

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Transkrypt:

Igor Wojnicki (AGH, KIS) 1 / 29 Hypertext Preprocessor Igor Wojnicki Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie

Igor Wojnicki (AGH, KIS) 2 / 29 Spis Treści I 1 Optymalizacja Przesyłanie plików Współpraca z Bazami Danych

Igor Wojnicki (AGH, KIS) 3 / 29 Spis Treści Optymalizacja 1 Optymalizacja Przesyłanie plików Współpraca z Bazami Danych

Igor Wojnicki (AGH, KIS) 4 / 29 Debugging Optymalizacja http://www.php-debugger.com/dbg/ Wymaga zainstalowania modułu dla serwera HTTP. http://www.xdebug.org/ WYmaga odpowiedniej konfiguracji interpretera i instalacji oprogramowania na serwerze. FireBug + Fire (przesyłanie komunikatów do konsoli FireBug) Śledzenie wartości zmiennych: var_dump() print_r() lepiej var_dump() bardziej opisowe, pokazuje NULL, FALSE

Igor Wojnicki (AGH, KIS) 5 / 29 Optymalizacja Skryptów I Optymalizacja FireBug Pomiar wydajności w. function get_microtime() { list($usec, $sec) = explode(' ', microtime()); return ((float) $usec + (float)$sec); } microtime(true) - wartość jako liczba rzeczywista. 0.31258300 1382259058 vs. 1382259058.3126 Profiler: http://www.php-debugger.com/dbg/

Igor Wojnicki (AGH, KIS) 6 / 29 Optymalizacja Optymalizacja Skryptów II Cytowanie zamiana podwójnych cudzysłowów na apostrofy daje kilka procent zysku. $zmienna1 = "$a $b $c"; //wolne // szybsze o kilka procent: $zmienna2 = $a. ' '. $b. ' '. $c;

Optymalizacja Optymalizacja Skryptów III Wyświetlanie (generacja standardowego wyjścia) Uzywaj echo przewaga nad wychodzeniem z trybu znacznikiem?> i ponownym wchodzeniem w ten tryb jest niewielka. cudzysłów vs. apostrof cytowanie zmiennej powoduje znaczne obniżenie wydajności. printf() jest znacznie mniej wydajna, bogate możliwości formatowania napisów, używaj tylko wtedy gdy jest to konieczne. Igor Wojnicki (AGH, KIS) 7 / 29

Igor Wojnicki (AGH, KIS) 8 / 29 Optymalizacja Optymalizacja Skryptów IV Niepotrzebne zmienne Niepotrzebne funkcje Niepotrzebne wywołania funkcji $arr = array(1,2,3,4,5,6,7,8,9,10); //count() przy każady przebiegu! for ($i=0; $i<count($arr); $i++) { echo $arr[$i]; }

Igor Wojnicki (AGH, KIS) 9 / 29 Optymalizacja Optymalizacja Skryptów V Programowanie obiektowe (od 5.1.0 znacznie lepiej)

Igor Wojnicki (AGH, KIS) 10 / 29 Optymalizacja Optymalizacja Skryptów VI Operacje na plikach Wczytanie całego pliku do tablicy zabiera dużo pamięci. $plik = file('nazwa'); $druga_linia = $plik[1]; Lepiej zrobić to tak: $fd = fopen('plik', 'r'); fgets($fd); // 1-sza linia do kosza $druga_linia = fgets($fd); fclose($fd); Takie coś też jest kuszace: $dane = implode ('', file('plik'));

Igor Wojnicki (AGH, KIS) 11 / 29 Optymalizacja Optymalizacja Skryptów VII Zapytania SQL Let Others Do Pętla w pętli vs. bardziej złożone zapytanie SQL.

Igor Wojnicki (AGH, KIS) 12 / 29 Spis Treści Przesyłanie plików 1 Optymalizacja Przesyłanie plików Współpraca z Bazami Danych

Przesyłanie plików, XHTML Przesyłanie plików <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> </head> <body> <form action="file.php" method="post" enctype="multipart/form-data"> <p> <input type="file" name="plik_pierwszy" /> <input type="file" name="plik_drugi" /> <input type="submit" value="wyślij" /> </p> </form> </body> </html> Igor Wojnicki (AGH, KIS) 13 / 29

Igor Wojnicki (AGH, KIS) 14 / 29 Przesyłanie plików Obsługa przesyłanych plików, <?php header('content-type: text/plain'); var_dump($_files); if (move_uploaded_file( $_FILES['plik_pierwszy']['tmp_name'], 'nazwa_pliku_po_przeslaniu')) echo 'ok'; else echo 'err';?> move_uploaded_file() dodatkowo sprawdza czy plik został przesłany przez HTTP POST.

Igor Wojnicki (AGH, KIS) 15 / 29 Rezultat I Przesyłanie plików array(2) { ["plik_pierwszy"]=> array(5) { ["name"]=> string(10) "files.html" ["type"]=> string(9) "text/html" ["tmp_name"]=> string(14) "/tmp/php3sbkza" ["error"]=> int(0) ["size"]=> int(570) }

Igor Wojnicki (AGH, KIS) 16 / 29 Rezultat II Przesyłanie plików ["plik_drugi"]=> array(5) { ["name"]=> string(25) "qr-wojnicki-agh-email.png" ["type"]=> string(9) "image/png" ["tmp_name"]=> string(14) "/tmp/php4f9qrw" ["error"]=> int(0) ["size"]=> int(353) } } ok

Igor Wojnicki (AGH, KIS) 17 / 29 Inne wartości w $_FILES Przesyłanie plików $_FILES['nazwa_pola']['name'] $_FILES['nazwa_pola']['type'] $_FILES['nazwa_pola']['size'] $_FILES['nazwa_pola']['tmp_name'] $_FILES['nazwa_pola']['error'] Informacje w $_FILES przesyłane sa zawsze nawet, gdy nie jest przesłany żadny plik (informacja o błędzie: http://www.php.net/ manual/en/features.file-upload.errors.php).

Igor Wojnicki (AGH, KIS) 18 / 29 Przesyłanie plików Pliki na serwerze Przy przesyłaniu plików można je przenieść w dowolna lokalizację w systemie plików serwera. Właściciel przesłanego pliku, w zależności od konfiguracji: właściciel skryptu, właściciel interpretera. Konfigurowalny limit max wielkości przesyłanego pliku! Konfigurowalny limit max czasu wykonywania skryptu!

Igor Wojnicki (AGH, KIS) 19 / 29 Code/Script Injection Przesyłanie plików Należy uniemożliwić: przesyłanie plików w sposób umożliwiajacy trafienie do innego katalogu (użycie separatorów nazw katalogów w nazwie pliku) basename() przesłanie kodu do uruchomienia (np. skryptu ) odpowiednia lokalizacja docelowego katalogu, bez możliwości wykonywania kodu (w przypadku bez dostępu dla serwera WWW)

Igor Wojnicki (AGH, KIS) 20 / 29 Spis Treści Współpraca z Bazami Danych 1 Optymalizacja Przesyłanie plików Współpraca z Bazami Danych

Igor Wojnicki (AGH, KIS) 21 / 29 Systemy Baz Danych i Połaczenia Współpraca z Bazami Danych Obsługiwane Systemy Baz Danych: PostgreSQL MySQL ODBC Oracle SQLite msql (minisql) Microsoft SQL Sybase Informix Połaczenia Stałe (persistent) vs. Tymczasowe (temporary) w zależności od RDBMS możliwy zysk wydajności.

Igor Wojnicki (AGH, KIS) 22 / 29 Połaczenia z bazami danych Współpraca z Bazami Danych BerkleyDB. Natywne (sterowniki/funkcje dla konkretnych baz danych), dbx abstrakcyjny interfejs oparty o funkcje (nie jest częścia podstawowej dystrybucji poczawszy od 5.1.0). PDO j.w. ale obiektowy.

Igor Wojnicki (AGH, KIS) 23 / 29 Połaczenie z MySQL I Współpraca z Bazami Danych Przykład dla 5, w 7 zmieniły się nazwy funkcji na mysqli oraz kolejność argumentów. $con_id = mysql_connect('localhost', 'root'); mysql_select_db('test',$con_id); $query ='SELECT * FROM Pracownicy'; $result = mysql_query($query, $con_id); #wygeneruj otrzymane wyniki w postaci tabeli echo "<table border=1 align=center>\n"; echo "<tr>\n"; echo "<td>id</td>\n"; echo "<td>nazwisko</td>\n"; echo "<td>imię</td>\n"; echo "<td>data urodzenia</td>\n"; echo "<td>stanowisko</td>\n";

Igor Wojnicki (AGH, KIS) 24 / 29 Połaczenie z MySQL II Współpraca z Bazami Danych #wypisz wszystkie rekordy while ($myrow = mysql_fetch_row($result)){ printf("<tr><td>%s</td><td>%s</td> <td>%s</td><td>%s</td> <td>%s</td></tr>\n", $myrow[1], $myrow[2], $myrow[3], $myrow[4], $myrow[5]); } mysql_free_result($result); mysql_close($con_id); echo "</table>\n";

Igor Wojnicki (AGH, KIS) 25 / 29 Współpraca z Bazami Danych Przykład obsługi takiej samej bazy danych ODBC I $con_id = odbc_connect("test", "tlogin", "tpassword"); $query = 'SELECT * FROM Pracownicy'; $result = odbc_exec($con_id, $query); #wygeneruj otrzymane wyniki w postaci tabeli echo "<table border=1 align=center>\n"; echo "<tr>\n"; echo "<td>id</td>\n"; echo "<td>nazwisko</td>\n"; echo "<td>imię</td>\n"; echo "<td>data urodzenia</td>\n"; echo "<td>stanowisko</td>\n"; #wypisz wszystkie rekordy while (odbc_fetch_row($result)) {

Igor Wojnicki (AGH, KIS) 26 / 29 Współpraca z Bazami Danych Przykład obsługi takiej samej bazy danych ODBC II printf("<tr><td>%s</td><td>%s</td> <td>%s</td><td>%s</td> <td>%s</td></tr>\n", odbc_result($result, 'ID'), odbc_result($result, 2), odbc_result($result, 'Imie'), odbc_result($result, 4), odbc_result($result, 'Stanowisko')); } odbc_free_result($query); odbc_close($con_id); echo "</table>\n";

Igor Wojnicki (AGH, KIS) 27 / 29 Połaczenie z PostgreSQL I Współpraca z Bazami Danych <?php $database="verlag"; $db_conn=pg_connect("host=localhost port=5432 dbname=$database user=me password=blah"); if (!$db_conn):?> <H1>Błąd przy połączeniu z bazą postgres <?php echo $database?></h1> <?php exit; endif; $qu = pg_query ($db_conn, "SELECT * FROM verlag ORDER BY autor"); $row = 0;

Igor Wojnicki (AGH, KIS) 28 / 29 Połaczenie z PostgreSQL II Współpraca z Bazami Danych while ($data = pg_fetch_object ($qu, $row)) { echo $data->autor." ("; echo $data->jahr."): "; echo $data->titel."<br>"; $row++; } pg_free_result ($qu); pg_close ($db_conn);

Igor Wojnicki (AGH, KIS) 29 / 29 SQL Injection Współpraca z Bazami Danych Kuszace jest przesyłanie (częsci/całości) kodu SQL do wykonania jako wartości atrybutów za pomoca HTTP GET/POST np. frgment dot. sposobu sortowania danych, całość zapytania bezpośrednio budowana na podstawie wartości w formularzu. Potencjalnie może to być wykorzystane do uruchamiania dowolnych zapytań na bazie danych. Należy weryfikować wszystkie dane, które maja być użyte w zapytaniach.