pawel.rajba@gmail.com, http://kursy24.eu/



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

Technologie internetowe ASP.NET Core. Paweł Rajba

PHP 5 język obiektowy

Podstawy technologii WWW

Laboratorium 7 Blog: dodawanie i edycja wpisów

Oracle PL/SQL. Paweł Rajba.

EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails

0.1 Logowanie do serwisu


Java Server Faces narzędzie do implementacji w wy prezentacji

Program szkolenia: Symfony, nowoczesny framework PHP

Backend Administratora

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

Laboratorium 6 Tworzenie bloga w Zend Framework

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Internetowe bazy danych

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

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

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

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Komponent Formularz. Rys. 1. Strona programu Joomla - Rys. 2. Instalacja komponentu

TIN Techniki Internetowe zima

Administracja i programowanie pod Microsoft SQL Server 2000

Szkolenie. IBM Lotus - Podstawy projektowania aplikacji w Domino Designer 8.5. Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

Ajax. 1. Wprowadzenie. 2. Aplikacja serwerowa

Informatyzacja Przedsiębiorstw

Ustalanie dostępu do plików - Windows XP Home/Professional

xmlns:prism= c. <ContentControl prism:regionmanager.regionname="mainregion" />

Oracle PL/SQL. Paweł Rajba.

LABORATORIUM 2 WSTĘP DO SIECI TELEINFORMATYCZNYCH TABELE I FORMULARZE

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

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

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Informatyzacja Przedsiębiorstw

HTML ciąg dalszy. Listy, formularze

Programowanie w Ruby

Programowanie obiektowe

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Programowanie w Ruby

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

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

Konfiguracja serwera DNS w systemie Windows Server 2008 /2008 R2

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

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Plan. Raport. Tworzenie raportu z kreatora (1/3)

Kurs rozszerzony języka Python

MVVM Light Toolkit. Julita Borkowska

ANALYSIS SERVICES. 1. Tworzymy połączenie ze źródłem danych. 2. Tworzymy nowy widok dla źródła danych

Szczegółowy opis zamówienia:

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

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

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

Bazy Danych i Usługi Sieciowe

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

onfiguracja serwera DNS w systemie Windows Server 2008 /2008 R2

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

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

MCSA: SQL Server 2012

APLIKACJA SHAREPOINT

Aplikacje www laboratorium

E-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL.

FORMULARZE. G. Przęczek

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

Ruby i Ruby on Rails. Mateusz Drożdżyński

Tworzenie raportów XML Publisher przy użyciu Data Templates

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

Administracja i programowanie pod Microsoft SQL Server 2000

Szkolenie wycofane z oferty

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Programowanie w Ruby

Podstawy wzorca MVC MODEL KON- TROLER WIDOK. Odpowiada za wyświetlenie danych użytkownikowi. Zawiera dane aplikacji oraz jej logikę.

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

Zmienne i stałe w PHP

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Zarządzanie kontami użytkowników w i uprawnieniami

CREATE USER

Zaawansowany kurs języka Python

PHP: bloki kodu, tablice, obiekty i formularze

ASP.NET MVC. Grzegorz Caban 20 stycznia 2009

REFERAT O PRACY DYPLOMOWEJ

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Oracle Application Express

Programowanie MorphX Ax

Spring Web MVC, Spring DI

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

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

media Blitz wydajne sytemy szablonów

Baza danych sql. 1. Wprowadzenie

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

4 Web Forms i ASP.NET Web Forms Programowanie Web Forms Możliwości Web Forms Przetwarzanie Web Forms...152

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Projektowani Systemów Inf.

PROJEKTOWANIE APLIKACJI INTERNETOWYCH

Obsługa przesyłek InPost w aplikacji Komornik SQL

Systemy baz danych Prowadzący: Adam Czyszczoń. Systemy baz danych. 1. Import bazy z MS Access do MS SQL Server 2012:

Budowa aplikacji ASP.NET współpracującej z bazą dany do przeprowadzania ankiet internetowych

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

Transkrypt:

pawel.rajba@gmail.com, http://kursy24.eu/

Zend Framework Wprowadzenie Funkcjonalności Adresy i nawigacja Obiekty request i response Ciastka Layout, kontroler, widok Sesje Formularze Uwierzytelnianie i autoryzacja Dostęp do danych

Dostęp za free Rozwijany przez firmę Zend Wspiera tworzenie aplikacji w wielu aspektach: Sesje Formularze wraz z walidacją Filtry Uwierzytelnianie i autoryzacja Obsługa danych Tworzenie aplikacji wspiera Zend Studio

Struktura plików Przykład: Structure

Zanim przejdziemy dalej W pliku /public/.htaccess możemy wpisać wiersz SetEnv APPLICATION_ENV development określi on sposób zachowania podczas uruchomienia i prezentacji w przeglądarce dostępne opcje: production, development, testing zachowanie w każdym przypadku jest w określone w pliku /application/configs/application.ini powyższe można także ustawić w pliku /public/index.php

Zanim przejdziemy dalej W opublikowanej aplikacji nie jest dobrze, jeśli w przypadku błędu pojawiają się jakieś blue screeny Należy utworzyć ErrorController oraz odpowiedni widok i tam sformatować stronę w przypadku błędu Tworząc projekt w Zend Studio powyższe tworzone jest automatycznie

Omówione zostaną następujące możliwości: Adresy i nawigacja Obiekty request i response Ciastka Tworzenie layoutu, kontrolera i widoków Helpery do kontrolera Helpery do widoków i mechanizm widoków częściowych Sesje Formularze i ich walidacja Uwierzytelnianie i autoryzacja Dostęp do danych Wbudowany mechanizm Zend Framework Integracja z Doctrine

Domyślny schemat adresowania: Controller/Action/Var1/Val1/Var2/Val2/ ten domyślny schemat można zmienić tworząc routes więcej: http://framework.zend.com/manual/en/zend.controller.router.html Tworząc linki pomiędzy stronami należy korzystać z odpowiednich helperów

Po stronie kontrollera mamy przekierowania: $this->_helper->redirector(akcja,kontroler,moduł,parametry) $this->_redirect(url,opcje) $this->_forward(akcja,kontroler,moduł,parametry) Nie trzeba podawać wszystkich parametrów, przykład $this->_helper->redirector("login","auth"); Kwestia różnicy między redirect a forward Po stronie widoku mamy tworzenie adresu: $this->url(urloptions,name,reset,encode) Przykład: $this->url(array('controller'=>'index','action'=>'edit','id'=>$x->id))

Obiekt request Instancja obiektu: Zend_Controller_Request_Http Dostępna w kontrolerze: $this->getrequest() lub $this->_request Szereg metod związanych z żądaniem: getmodulename(), getcontrollername(), getactionname() getparams(), getparam() isget(), ispost(), isput(), isdelete(), ishead(), isoptions() getpost('var'), getquery(), getheader() Dla większości metod getx jest odpowiednik setx Więcej: http://framework.zend.com/manual/en/zend.controller.request.html

Obiekt response Instancja obiektu Dostępna w kontrolerze: $this->getresponse() $this->_response Szereg metod związanych z odpowiedzią Nagłówki: cansendheaders(), setheader(), setredirect(), getheaders(), clearheaders(), setrawheader(), getrawheaders(), clearrawheaders(), clearallheaders() Manipulacja segmentami: setbody(), appendbody(), prepend(), append(), insert(), clearbody(), getbody() Więcej: http://framework.zend.com/manual/en/zend.controller.response.html

Dwie operacje: Pobranie: $this->getrequest()->getcookie('foo') Ustawienie: $client->setcookie($cookie) Bezpośrednio w PHP przez setcookie Do poczytania: http://framework.zend.com/manual/en/zend.http.cookies.html http://framework.zend.com/manual/en/zend.http.client.advanced.html

Kontroler Zawiera zbiór akcji Steruje logiką aplikacji Kontrolery są domyślnie w application/controllers Mamy możliwość tworzenia helperów dla kontrolerów: Najprościej utworzyć z poziomu Zend Studio Domyślnie są w application/controllers/helpers

Kontroler c.d. Aby mieć dostępne helpery dla kontrolerów, trzeba zrobić jedną z dwóch rzeczy: W index.php dopisać Zend_Controller_Action_HelperBroker::addPath(APPLICATION_ PATH.'/controllers/helpers'); Trzeba wcześniej pamiętać o załadowaniu klasy Zend_Controller_Action_HelperBroker W pliku application.ini za rejestrować klasę helpera, np.: resources.frontcontroller.actionhelperpaths.potegahelper = APPLICATION_PATH "/controllers/helpers

Zbudowanie struktury opartej na layoucie sprowadza się do wykonania: Tworzymy plik layoutu Sugerowane foldery: application/views/layouts application/layouts/scripts (wskazywany przez Zend Studio) W miejscach, gdzie ma się pojawić zawartość piszemy $this->layout()->header [przykładowo dla header] Główny skrypt widoku będzie w miejcu $this->layout()->content

Budowa c.d. Następnie musimy wskazać, że chcemy korzystać z layoutu. Mamy dwa sposoby: W pliku public/index.php dopisujemy wiersz Zend_Layout::startMvc(array('layoutPath' => dirname( FILE ).'/../application/views/layouts')); W pliku application/configs/application.ini dopisujemy resources.layout.layoutpath = APPLICATION_PATH "/layouts/scripts" (to jest bardziej eleganckie)

Budowa c.d. Przygotowujemy składowe widoki, np. header.phtml, footer.phtml, menu.phtml W metodzie init() pliku kontrolera dopisujemy dla każdego składowego widoku (przykładowo): $this->_response->insert( "header", $this->view->render( "header.phtml" ) ); I gotowe Uwaga: trzeba zadbać, aby w pliku index.php wczytać odpowiednie klasy, np. Zend_Layout

Przydatnym mechanizmem są helpery do widoków Tworzymy jest w folderze application/views/helpers Najprościej jest tworzyć ja jako ZendFrameworkItem w ZendStudio Jeśli utworzymy helper MyHelper, to wewnątrz widoku mamy metodę $this->myhelper() I ZendStudio je podpowiada

Kolejnym przydatnym mechanizmem jest tworzenie podwidoków Zakładamy folder application/view/scripts/partials Tworzymy skrypt, np. gentable Wewnątrz skryptu możemy tworzyć kontrukcję $this->atrybut ($this to będzie obiekt, tablica, zmienna przekazane do podwidoku jako model) Osadzamy podwidok za pomocą kontrukcji: echo $this->partial( "partials/gentable.phtml", $table);

A jak chcemy inny layout lub w ogóle go nie chcemy? Ustawienie w akcji innego layoutu: $this->_helper->layout->setlayout('innylayout'); Wyłączenie layoutu: $this->_helper->layout->disablelayout();

Przykład SimpleStart SimpleStart2 Więcej o layoutach: http://framework.zend.com/manual/en/zend.layo ut.quickstart.html

Aby skorzystać z sesji, tworzymy obiekt $session = new Zend_Session_Namespace() [możemy przekazać nazwę, wtedy będziemy mieć sesję nazwaną] Dostęp do zmiennych to po prostu $session->zmienna Można tworzyć dowolną liczbę nazwanych sesji (i jedną domyślną)

Przykład SessionSample

Klasa formularza to Zend_Form Możemy jej ustawić szereg standardowych parametrów Action, Method, Name, itp. Zend_Form ma kolekcję kontrolek metodę valid() metodę populate($dane)

Do budowania formularzy mamy Kontrolki Dekoratory Walidatory Filtry Dostępne są predefiniowane elementy z każdej grupy Można jednak tworzyć własne implementacje poprzez dziedziczenie z odpowiednich klas

Kontrolki Utworzyć można większość typów kontrolek Dostępne są w przestrzeni Zend_Form_Element_* Przykładowe Button, Captcha, Checkbox, Exception, File, Hash, Hidden, Image, MultiCheckbox, Multiselect, Password, Radio, Reset, Select, Submit, Text, TextArea

Dekoratory Służą do określenia sposobu prezentacji Można je łączyć (nakładać wiele na raz) Dostępne są w przestrzeni Zend_Form_Decorator_* Przykładowe Callback, DtDdWrapper (domyślny), Errors, Fieldset, HtmlTag, Label, Tooltip, ViewHelper, ViewScript

Walidatory Służą do weryfikacji poprawności formularzy Pozwalają także na określenie komunikatów błędów Dostępne w przestrzeni Zend_Validate_* Przykładowe Callback, Alnum, Alpha, CreditCard, Date, Digits, EmailAddress, File_*,Iban, Isbn, NotEmpty, Regex

Filtry Pozwalają modyfikować dane wysłane z formularza Dostępne w przestrzeni Zend_Filter_* Przykładowe Boolean, Callback, Compress, Encrypt, HtmlEntities, PregReplace, StringToLower, StringToUpper, StringTrim, StripTags, Word_SeparatorToCamelCase

Przykłady FormSample FormSample2

Uwierzytelnianie Do uwierzytelniania jest podsystem Zend_Auth Out of the box mamy wsparcie dla uwierzytelniania opartego o: Tabele SQL Digest HTTP LDAP OpenID Więcej: http://framework.zend.com/manual/en/zend.auth.html

Uwierzytelnianie Po wybraniu adaptera (np. opartego o tabele SQL) Ustawiamy: $authadapter >setidentity($user)->setcredential($pass); I robimy: $authresult = Zend_Auth::getInstance()->authenticate($authAdapter); A następnie sprawdzamy: $authresult->isvalid() Mamy też metody: Zend_Auth::getInstance()->hasIdentity() Zend_Auth::getInstance()->clearIdentity();

Uwierzytelnianie Można też tworzyć własny adapter Trzeba zaimplementować interfejs Zend_Auth_Adapter_Interface czyli metodę authenticate Więcej: http://zendgeek.blogspot.com/2009/07/zendframework-sign-up-and.html

Autoryzacja jest realizowana przez Zend_Acl Terminologia Zasób (resource) Myślimy jak o kontrolerze Rola (role) rola chce uzyskać dostęp do zasobu można określić operacje, które rola może wykonać na zasobie myślimy o nich jak o akcjach kontrolera

Zasób Implementuje interfejs Zend_Acl_Resource_Interface Jest tylko jedna metoda: getresourceid() Domyślna implementacja: Zend_Acl_Resource Dany zasób może mieć parenta (dokładnie jednego) czyli zasoby można organizować w drzewa, co pozwala na dziedziczenie uprawnień Zend_Acl ma także mechanizm uprawnień na zasobach, np. create, read, update, delete O zasobie możemy myśleć w kontekście kontrolera

Rola Implementuje interfejs Zend_Acl_Role_Interface Jest tylko jedna metoda: getroleid() Domyślna implementacja: Zend_Acl_Role Dana rola może dziedzić jednej lub wielu ról czyli ponownie mamy drzewo, które pozwala na dziedziczenie uprawnień w przypadku konfliktów są reguły ich rozwiązywania przykład wielodziedziczenia i konfliktów: http://framework.zend.com/manual/en/zend.acl.introduction.html

Utworzenie Access Control List Najpierw tworzymy obiekt $acl = new Zend_Acl(); Rejestrujemy role, ewentualnie wskazując parentów $parents = array('guest', 'member'); $acl->addrole(new Zend_Acl_Role('admin'), $parents); Rejestracja zasobu $acl->add(new Zend_Acl_Resource('articles'); Ustalamy prawa $acl->deny('guest', 'articles'); $acl->allow('member', 'articles'); Na końcu możemy odpytać echo $acl->isallowed('member', 'articles')? 'allowed' :'denied';

Ostatecznie tworzymy plugin Acl (np. Plugin_Acl) Dziedziczy po klasie Zend_Controller_Plugin_Abstract W application/configs/application.ini dodajemy resources.frontcontroller.plugins.acl = "Plugin_Acl" Na końcu w index.php dodajemy Zend_Controller_Front::getInstance() ->registerplugin(new Plugin_Acl())

Autoryzacja Więcej: http://framework.zend.com/manual/en/zend.acl.html http://zendguru.wordpress.com/2008/11/05/zendframework-acl-with-example/ http://devzone.zend.com/article/1665

Przykład Auth