Programowanie internetowe

Podobne dokumenty
Baza danych do przechowywania użytkowników

Zaawansowane aplikacje internetowe

Rejestracja i Logowania - PHP/MySQL

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

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

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

E.14 Bazy Danych cz. 19 SQL i PHP współpraca przez stronę internetową

Obiektowe bazy danych

Podstawy JavaScript ćwiczenia

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Scenariusz Web Design DHTML na 10 sesji. - Strony statyczne I dynamiczne. - Dodawanie kodu VBScript do strony HTML. Rysunek nie jest potrzebny

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Wykład 03 JavaScript. Michał Drabik

Aplikacje www laboratorium

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

Programowanie internetowe

XML extensible Markup Language. część 5

TECHNOLOGIE SIECI WEB

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Zajęcia 4 - Wprowadzenie do Javascript

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

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

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

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

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

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

Aplikacje WWW - laboratorium

Dynamiczne generowanie pliku PDF

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

Programowanie i projektowanie obiektowe

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

Ćwiczenia 2 IBM DB2 Data Studio

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Programowanie internetowe

Podstawy programowania w języku JavaScript

Funkcje i instrukcje języka JavaScript

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr Prosta obsługa Bazy w PHP

PHP: bazy danych, SQL, AJAX i JSON

Umieszczanie kodu. kod skryptu

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

Internetowe bazy danych

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Aplikacje WWW - laboratorium

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

Michał Bielecki, KNI 'BIOS'

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

Zajęcia 13 wykorzystanie MySQL w PHP cz. 2

Bazy Danych i Usługi Sieciowe

Aplikacje WWW - laboratorium

Aplikacje WWW - laboratorium

WYKŁAD 1 ANGULARJS CZĘŚĆ 1

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

JQuery. $('#pierwszy').css('color','red').hide('slow').show(3000); $(document).ready(function() { //... tutaj nasze skrypty jquery //...

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

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

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 (PHP/Java)

Internetowe bazy danych

Bazy danych w PHP dla początkujących

Obsługa błędów w SQL i transakcje. Obsługa błędów w SQL

Wykład 5. SQL praca z tabelami 2

Instalacja MySQL.

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Struktura bazy danych

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

I.Wojnicki, Tech.Inter.

TECHNOLOGIE INTERNETOWE WYKŁAD 6. JavaScript Funkcje i obiekty

Oracle PL/SQL. Paweł Rajba.

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

Projekt strony internetowej firmy organizującej przyjęcia

PL/SQL. Zaawansowane tematy PL/SQL

AJAX. Wykonał: Marcin Ziółkowski, AGH Kraków, AiR rok 5.

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

DOM (Document Object Model)

Bazy danych i strony WWW

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

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

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

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

Bazy danych i usługi sieciowe

Smarty PHP. Leksykon kieszonkowy

Aplikacje internetowe

Laboratorium 1 Wprowadzenie do PHP

Podstawy programowania III WYKŁAD 2

Aplikacje internetowe - laboratorium

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

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

Zajęcia 11 wykorzystanie MySQL w PHP

Imię i Nazwisko Data Ocena. Laboratorium 7

Czym jest AJAX. AJAX wprowadzenie. Obiekt XMLHttpRequest (XHR) Niezbędne narzędzia. Standardowy XHR. XHR z obsługą baz danych

Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Formularze w PHP dla początkujących

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

akademia androida Składowanie danych część VI

CZYM JEST JAVASCRIPT?

Budowa nowoczesnej aplikacji SPA z wykorzystaniem biblioteki Ember.js

Transkrypt:

Programowanie internetowe Wykład 9 Ajax, PDF, wyjątki, PEAR mgr inż. Michał Wojtera email: mwojtera@dmcs.pl

Plan wykładu Ajax Zasady przejrzystego pisania aplikacji Wyjątki Repozytorium PEAR PDF 2

Ajax Wyjaśnienie skrótu Podwaliny: JavaScript i Document Object Model Czym jest i czym się różni od dotychczasowych działań w PHP? typowy model klient/serwer model Ajax 3

Ajax W praktyce: użytkownik wchodzi na stronę wpisuje coś do formatek, naciska przycisk lub przesuwa coś kursorem cokolwiek jest wykonywane w poprzednim kroku powoduje to żądanie pobrania danych z serwera przez kod JavaScript PHP obsługuje żądanie zwracając jakieś dane JavaScript odbiera te dane i używa ich do uaktualnienia strony, bez przeładowywania jej 4

Ajax Używane technologie: (X)HTML JavaScript DOM (obiektowo zdefiniowana reprezentacja elementów na stronie) PHP może być dodatkowo XML Omówienie przykładu dodawanie nowego użytkownika 5

Ajax Baza danych: CREATE DATABASE IF NOT EXISTS test; USE test; CREATE TABLE IF NOT EXISTS users ( user_id INT UNSIGNED NOT NULL AUTO_INCREMENT, username VARCHAR(20) NOT NULL, userpass CHAR(40) NOT NULL, first_name VARCHAR(20) NOT NULL, last_name VARCHAR(40) NOT NULL, email VARCHAR(60) NOT NULL, PRIMARY KEY (user_id), UNIQUE (username)); INSERT INTO users (username, userpass, first_name, last_name, email) VALUES ('lkowal', SHA('haslokowala'), 'Lukasz', 'Kowalski', 'lkowal@dmcs.pl'), ('sklab', SHA('haslosklab'), 'Slawek', 'Klab', 'sklab@dmcs.pl'); 6

Ajax checkusername.php: <?php if (isset($_get['username'])) { $dbc = @mysqli_connect('127.0.0.1', 'root', 'haslo', 'test') or die ('błąd'); $q = sprintf("select user_id FROM users WHERE username='%s'", mysqli_real_escape_string($dbc, trim($_get['username']))); $r = mysqli_query($dbc, $q); if(mysqli_num_rows($r) == 1) { echo 'Nazwa uzytkownika nie jest dostepna'; else { echo 'Nazwa uzytkownika jest dostepna'; mysqli_close($dbc); else { echo Wpisz proszę nazwę użytkownika';?> 7

Ajax Testujemy skrypt php Kod JavaScript ajax.js var ajax = false; if (window.xmlhttprequest) { ajax = new XMLHttpRequest(); else if (window.activexobject) { try { ajax = new ActiveXObject("Msxml2.XMLHTTP"); catch (e1) { try { ajax = new ActiveXObject("Microsoft.XMLHTTP"); catch (e2) { if (!ajax) { alert('some page functionality is unavailable!'); 8

Ajax Kod JavaScript checkusername.js function check_username(username) { if (ajax) { ajax.open('get', 'checkusername.php? username='+encodeuricomponent(username)); ajax.onreadystatechange = handle_check; ajax.send(null); else { document.getelementbyid('username_label').innerhtml = 'The availability of this username will be confirmed upon form submission.'; function handle_check() { if ((ajax.readystate == 4) && (ajax.status == 200)) { document.getelementbyid('username_label').innerhtml = ajax.responsetext; 9

Ajax Kod HTML register.html <head> <title>registration Form</title> <script src="ajax.js" type="text/javascript" language="javascript"></script> <script src="checkusername.js" type="text/javascript" language="javascript"></script> </head> <body> <form name="myform" action="register.php" method="post"> <fieldset> <legend>registration Form</legend> <p>username: <input name="username" type="text" size="20" maxlength="20" onchange="check_username(this.form.username.value)" /> <span id="username_label"> </span></p> <p>password: <input name="pass1" type="password" /></p> <p>confirm Password: <input name="pass2" type="password" /></p> <p>first Name: <input name="first_name" type="text" size="20" maxlength="20" /></p> <p>last Name: <input name="last_name" type="text" size="20" maxlength="20" /></p> <p>email Address: <input name="email" type="text" size="20" maxlength="60" /></p> <input name="submit" type="submit" value="register" /> </form> </fieldset> </body> </html> 10

Zasady przejrzystego pisania aplikacji Dokumentuj kod na początku pliku umieszczaj informacje kto napisał, kiedy, jakiego serwisu jest częścią zapisuj powiązania, od czego dany skrypt zależy, jakich wymaga dodatków itd. opisuj każdą funkcję jeśli nie wynika to z nazwy opisuj przeznaczenie zmiennych wyjaśniaj, za co odpowiedzialne są konkretne fragmenty kodu wyjaśniaj cel zastosowania instrukcji warunkowej 11

Zasady przejrzystego pisania aplikacji Dokumentuj kod oznaczaj końcowe klamry złożonych fragmentów kodu koniec funkcji some_name() uaktualniaj komentarze jeśli zmieniasz kod Styl kodowania i struktura zasady: bądź konsekwentny/a i spraw by twój kod był łatwy w czytaniu używaj klamry jeśli nawet nie ma takiej konieczności wynikającej ze składni używaj wcięć używaj pustych linii dla oddzielenia sekcji kodu 12

Zasady przejrzystego pisania aplikacji Styl kodowania i struktura umieszczaj spacje między słowami, argumentami funkcji, operatorami jeśli to możliwe umieszczaj funkcje na początku skryptu lub w osobnym pliku najlepiej używać pełnych znaczników dla fragmentów kodu PHP ze względu na przenośność dobrze używać domyślnych rozszerzeń plików 13

Zasady przejrzystego pisania aplikacji Budowa modułowa podział strony na moduły dołączane do pliku głównego na podstawie informacji przekazywanych w URL zamiast definiowania osobnych, pełnych stron używanie plików konfiguracyjnych dla stałych i parametrów używanych w całym serwisie parametry połączenia z bazą danych, a także funkcje odpowiedzialne za wymianę danych zdefiniowane w osobnym pliku 14

Zasady przejrzystego pisania aplikacji Rozdzielenie części statycznej od dynamicznej zdefiniowanie wzorca układu strony i zawartości statycznej zdefiniowanie modułów z zawartością dynamiczną Używanie framework-ów Zend Framework CakePHP 15

Wyjątki Podstawowa składnia try { // Do something. // Throw an exception on error. catch (exception) { // Do whatever now. co jest bardziej wyszukaną wersją if (/* Do something. */) { else { /* Do whatever because a problem occurred. */ 16

Wyjątki Przykład <?php $file = 'data.txt'; $data = "This is a line of data.\n ; try { if (!$fp = @fopen($file, 'w')) { throw new Exception('could not open the file.'); if (!@fwrite($fp, $data)) { throw new Exception('could not write to the file.'); if (!@fclose($fp)) { throw new Exception('could not close the file.'); echo '<p>the data has been written.</p>';?> catch (Exception $e) { echo '<p>the process could not be completed because the script '.$e->getmessage(). '</p>'; echo '<p>this is the end of the script.</p>'; 17

Rozszerzenie PEAR PHP Extension and Application Repository Składowe analiza czasowa Timer.php tworzenie formularzy HTML_QuickForm wsparcie Ajax HTML_Ajax email Mail_Mime szyfrowanie web serwisy... i dużo więcej 18

Generowanie PDF Rozszerzenia umożliwiające tworzenie lub modyfikację plików PDF (Portable Document Format): PDFlib - http://www.pdflib.com/ ClibPDF - http://www.fastio.com/ R&OS - http://www.ros.co.nz/pdf/ FPDF - http://www.fpdf.org/ PDF4PHP - http://www.gnuvox.com/pdf4php/ phppdflib - http://www.potentialtech.com/cms/ node/6 Panda - https://savannah.nongnu.org/projects/ panda/ 19

PDFlib Biblioteka komercyjna, ale podzbiór funkcji dostępny za darmo Instalacja dodanie rozszerzenia do php.ini Praca z biblioteką w sposób proceduralny lub obiektowy 20

PDFlib Przykład: <?php $p = PDF_new(); if (PDF_begin_document($p, "", "") == 0) { die("error: ". PDF_get_errmsg($p)); PDF_set_info($p, "Creator", "hello.php"); PDF_set_info($p, "Author", "Slawek Klab"); PDF_set_info($p, "Title", "Hello world (PHP)!"); 21

PDFlib Przykład c.d.: PDF_begin_page_ext($p, 595, 842, ""); $font = PDF_load_font($p, "Tahoma", auto", ""); PDF_setfont($p, $font, 24.0); PDF_set_text_pos($p, 50, 700); PDF_show($p, "ąśćźżęłó!"); PDF_continue_text($p, "(mówi PHP)"); PDF_end_page_ext($p, ""); PDF_end_document($p, ""); 22

PDFlib Przykład c.d.: $buf = PDF_get_buffer($p); $len = strlen($buf); header("content-type: application/pdf"); header("content-length: $len"); header("content-disposition: inline; filename=hello.pdf"); print $buf;?> PDF_delete($p); 23