Plan prezentacji. Framework CakePHP. CakePHP. Przydatne adresy. Wstęp. Przedmiot: Aplikacje internetowe. Przykłady. Kontroler. Dr inż.
|
|
- Izabela Małek
- 8 lat temu
- Przeglądów:
Transkrypt
1 Plan prezentacji Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie Wstęp Przykłady Kontroler Model Widok Klasy wspomagające Kontrola dostępu (ACL) Programowanie sterowane testami Dr inż. Stanisław Polak 1 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 2 Przedmiot: Aplikacje internetowe Wstęp Charakterystyka Wstęp Przydatne adresy CakePHP PHP MVC Active Record CRUD Formularze HTML, skrypty JavaScript - XML, RSS oraz AJAX ACL Rusztowanie Kontrola i walidacja danych Mechanizmy zabezpieczeń i zarządzania sesjami Szablony Inspirowany Ruby on Rails (RoR) Dr inż. Stanisław Polak Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 4 Przedmiot: Aplikacje internetowe
2 Charakterystyka Wstęp Ranking popularności frameworków webowych Charakterystyka Wstęp CakePHP na tle innych frameworków PHP Źródło: Źródło: Dr inż. Stanisław Polak 5 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 6 Przedmiot: Aplikacje internetowe Charakterystyka Wstęp Struktura Charakterystyka Wstęp Typowe żądanie Przykładowy adres strony: cakes / buy / 1 Kontrolery Widoki Modele Komponenty (Components) Pomocnicy (Helpers) Zachowania (Behaviors) Czarny kolor elementy wymagane. Szary kolor elementy opcjonalne, niebieski kolor funkcje wywołań zwrotnych Dr inż. Stanisław Polak 7 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 8 Przedmiot: Aplikacje internetowe
3 Instalacja i konfiguracja Wstęp Instalacja Instalacja i konfiguracja Wstęp Ogólna struktura katalogu z instalacją CakePHP / Źródła: Wymagania dla serwera Apache Moduł mod rewrite Włączenie obsługi plików.htaccess AllowOverride All tmp $USER httpd 1 cd /tmp / $USER / httpd / htdocs 2 unzip cakephp. zip mv cakephp cakephp Typy instalacji Rozwojowa Produkcyjna DocumentRoot /tmp/twójlogin/httpd/htdocs/cakephp/app/webroot Zaawansowana htdocs cakephp app.htaccess index.php lib plugins README.md vendors Dr inż. Stanisław Polak 9 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 10 Przedmiot: Aplikacje internetowe Instalacja i konfiguracja Wstęp Ogólna struktura katalogu z kodem aplikacji CakePHP Instalacja i konfiguracja Wstęp Ważniejsze pliki konfiguracyjne cakephp app Config Console Controller.htaccess index.php Lib Locale Model Plugin Test tmp app Config bootstrap.php core.php database.php routes.php 2 class DATABASE_CONFIG { public $default = array ( 4 datasource => Database / Mysql, 5 persistent => false, 6 host => localhost, 7 login => user, 8 password => password, 9 database => database_name, 10 prefix =>, 11 // e n c o d i n g => u t f 8, 12 ) ; 1 14 public $test = array ( datasource => Database / Sqlite,... ) ; 15 } 16?> public $usedbconfig = test ; Vendor View webroot Dr inż. Stanisław Polak 11 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 12 Przedmiot: Aplikacje internetowe
4 Konwencje nazewnicze Wstęp Konwencje dla klas i plików Konwencje nazewnicze Wstęp Konwencje dla modeli i BD Nazwa modelu Apple BigAuthor Nazwa tabeli apples big authors Typ Nazwa klasy Nazwa pliku z definicją klasy Kontroler KissesAndHugsController KissesAndHugsController.php Komponent MyHandyComponent MyHandyComponent.php Model OptionValue OptionValue.php Zachowanie EspeciallyFunkableBehavior EspeciallyFunkableBehavior.php Widok SuperSimpleView SuperSimpleView.php Pomocnik BestEverHelper BestEverHelper.php class Apple extends AppModel { } 6?> id producer id name 1 4 Jonatan Tabela : apples app/model/apple.php id name Kowalski Tabela : producers Dr inż. Stanisław Polak 1 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 14 Przedmiot: Aplikacje internetowe Konwencje nazewnicze Wstęp Konwencje dla kontrolerów class ApplesController extends AppController { 4 #Request h t t p : / / l o c a l h o s t :8080/ a p p l e s / 5 function index ( ) {... } 6 7 #Request h t t p : / / l o c a l h o s t :8080/ a p p l e s / getready / 8 function getready ( ) {... } 9 10 #Request h t t p : / / l o c a l h o s t :8080/ a p p l e s / f i n d N e w A p p l e s E r r o r 11 function _findnewapples ( ) {... } 12 1 #Request h t t p : / / l o c a l h o s t :8080/ a p p l e s / l a t e s t e l e m e n t / 14 function latest_element ( ) { 15 $this >_findnewapples ( ) ; 16 } 17 } app/controller/applescontroller.php Konwencje nazewnicze Wstęp Konwencje dla widoków 1 <html> 2 <?php... 4?> 5 </html> app/view/apples/index.ctp class ApplesController extends AppController { 4 #Request http : / / localhost :8080/ apples / 5 function index(){} 6 #Request http : / / localhost :8080/ apples / getready / 7 function getready(){} 8 } class Apple extends AppModel { } 6?> app/model/apple.php 1 <html> 2 <?php... 4?> 5 </html> app/controller/applescontroller.php app/view/apples/get ready.ctp id producer id name Tabela : apples Dr inż. Stanisław Polak 15 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 16 Przedmiot: Aplikacje internetowe
5 Hello World Przykłady Aplikacja Hello World Hello World Przykłady Widok 1 Hello World app/view/hellos/index.ctp Dr inż. Stanisław Polak 17 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 18 Przedmiot: Aplikacje internetowe Hello World Przykłady Model Hello World Przykłady Kontroler 2 App : : uses ( AppModel, Model ) ; 4 class Hello extends AppModel { 5 } 6?> app/model/hello.php 2 App : : uses ( AppController, Controller ) ; 4 class HellosController extends AppController { 5 6 function index ( ) { 7 } 8 } 9?> app/controller/helloscontroller.php Dr inż. Stanisław Polak 19 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 20 Przedmiot: Aplikacje internetowe
6 Lista użytkowników Przykłady Aplikacja Lista użytkowników Lista użytkowników Przykłady Schemat BD Mechanizm rusztowania Wymagane Model Kontroler $scaffold Modyfikowalne listy zawartości Założenia Podstawowe informacje o użytkowniku baza danych Funkcjonalność CRUD mechanizm rusztowania URL: 1 CREATE TABLE users ( 2 id integer PRIMARY KEY, username VARCHAR ( 8 ) NOT NULL UNIQUE, 4 password char (40), 5 imie VARCHAR (20), 6 nazwisko VARCHAR (20), 7 VARCHAR ( 0 ) 8 ) ; Dr inż. Stanisław Polak 21 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 22 Przedmiot: Aplikacje internetowe Lista użytkowników Przykłady Kontroler Lista użytkowników Przykłady Model 2 App : : uses ( AppController, Controller ) ; 4 class UsersController extends AppController { 5 public $scaffold ; 6 } 7?> app/controller/userscontroller.php 2 App : : uses ( AppModel, Model ) ; 4 class User extends AppModel { 5 } 6?> app/model/user.php Dr inż. Stanisław Polak 2 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 24 Przedmiot: Aplikacje internetowe
7 Lista użytkowników Przykłady Aplikacja Generowanie kodu Przykłady Konsola CakePHP Generowanie aplikacji z poziomu linii komend 1 cake bake project /tmp/$user/httpd/htdocs/aplikacja 2 cd /tmp / $USER / httpd / htdocs / aplikacja sqlite BD. sqlite 4 #tworzymy odpowiednie t a b e l e w bazie danych cake bake db config 7 cake bake 8 cake bake model [nazwa modelu] 9 cake bake controller user 10 cake bake controller user --public 11 cake bake controller user --public --admin 12 cake bake view user class UsersController extends AppController { 4 ############################################# 5 #http : / / localhost :8080/ users / 6 public function index ( ) {... } 7 8 #http : / / localhost :8080/ users / view /1 9 public function view ( $id = null ) {... } ############################################# 12 1 #http : / / localhost :8080/ admin / users / 14 public function admin_index ( ) {... } #http : / / localhost :8080/ admin / users / view /1 17 public function admin_view ( $id = null ) {... } public function admin_add ( ) {... } 20 public function admin_edit ( $id = null ) {... } 21 public function admin_delete ( $id = null ) {... } 22 } Controller/UsersController.php 1 Configure : : write ( Routing. prefixes, array ( admin ) ) ; Config/core.php Dr inż. Stanisław Polak 25 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 26 Przedmiot: Aplikacje internetowe Kontroler Kontroler Wybrane atrybuty i metody Aplikacja Hello World Wersja zmodyfikowana class RecipesController extends AppController { 4 public $name = Recipes ; 5 # Katalog z widokami : app / View /$name/ 6 # Nazwa modelu : L i c z b a P o j e d y n c z a ( $name ) 7 8 public $uses = array ( Recipe, User ) ; 9 #p u b l i c $ u s e s = a r r a y ( ) ; 10 #p u b l i c $ u s e s = f a l s e ; 11 public $helpers = array ( Js => array ( Jquery ) ) ; 12 public $components = array ( Auth ) ; 1 14 function akcja ( ) { 15 $this >set( color, pink ) ; # W widoku j e s t dost ępna zmienna $color ; 16 $this >redirect( array ( controller => orders, action => confirm ) ) ; 17 $this >render( $view, $layout ) ; 18 } 19 } Poprzednia wersja class HellosController extends AppController { 4 5 function index ( ) { 6 } 7 } 8?> app/controller/helloscontroller.php 1 Hello World app/view/hellos/index.ctp Nowa wersja class HellosController extends AppController { 4 5 function index ( ) { 6 $this >set ( komunikat, Hello World ) ; 7 } 8 } 9?> app/controller/helloscontroller.php 2 echo $komunikat ;?> app/view/hellos/index.ctp Dr inż. Stanisław Polak 27 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 28 Przedmiot: Aplikacje internetowe
8 Kontroler Wybrane funkcje wywołań zwrotnych (callbacks) Komponenty Kontroler Dostępne komponenty Acl Funkcja beforefilter() beforerender() afterfilter() Auth Session RequestHandler Security Cookie 1 function beforefilter ( ) { 2 $this >Auth >authorize = array ( Controller ) ; 4 $this >Cookie >name = CookieMonster ; 5 $this >Cookie >time = ; // or 1 hour 6 } Kontroler Paginator Dr inż. Stanisław Polak 29 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 0 Przedmiot: Aplikacje internetowe Komponenty Kontroler Komponent Auth Włączenie uwierzytelniania Komponenty Kontroler Komponent Auth Obsługa procedury logowania 2 App : : uses ( Controller, Controller ) ; 4 class AppController extends Controller { 5 public $components = array ( Session, Auth ) ; } app/controller/appcontroller.php CREATE TABLE users ( 2 id integer INTEGER PRIMARY KEY, username varchar (50), 4 password char ( 4 0 ) 5 ) ; SQL 2 class UsersController extends AppController { public $components = array ( Session, Auth ) ; #Je ż e l i app / C o n t r o l l e r / A p p o n t r o l l e r. php n i e z a w i e r a t e j l i n i i 4 5 function login ( ) { 6 if ( $this >request >is ( post ) ) { 7 if ( $this >Auth >login ( ) ) 8 return $this >redirect ( $this >Auth > redirecturl ( ) ) ; 9 else 10 $this >Session >setflash ( Nieprawidłowy login lub has ło, default, array ( ), auth ) ; 11 } 12 } 1 function logout ( ) { 14 $this >redirect ( $this >Auth >logout ( ) ) ; 15 } function beforefilter ( ) { 18 parent : : beforefilter ( ) ; 19 $this >Auth >allow( register ) ; 20 } 21 } app/controller/userscontroller.php 2 echo $this >Session >flash ( auth ) ; echo $this >Form >create ( User, array ( action => login ) ) ; 4 echo $this >Form >input ( username ) ; 5 echo $this >Form >input ( password ) ; 6 echo $this >Form >end ( Login ) ; 7 echo $this >Html >link ( " Rejestracja nowego uż ytkownika ", / users / register ) ; 8?> app/view/users/login.ctp Dr inż. Stanisław Polak 1 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 2 Przedmiot: Aplikacje internetowe
9 Komponenty Kontroler Model Tworzenie własnego komponentu Charakterystyka class MathComponent extends Component { 4 function sum ( $x, $y ){ 5 return $x+$y ; 6 } 7 // c a l l e d before C o n t r o l l e r : : b e f o r e F i l t e r ( ) 8 function initialize(&$controller, $settings = array ( ) ) {... } 9 // c a l l e d a f t e r C o n t r o l l e r : : b e f o r e F i l t e r ( ) 10 function startup(&$controller ) {... } 11 // c a l l e d a f t e r C o n t r o l l e r : : beforerender ( ) 12 function beforerender(&$controller ) {... } 1 // c a l l e d a f t e r C o n t r o l l e r : : r e n d e r ( ) 14 function shutdown(&$controller ) {... } 15 // c a l l e d before C o n t r o l l e r : : r e d i r e c t ( ) 16 function beforeredirect(&$controller, $url, $status=null, $exit=true ) {... } 17 }?> app/controller/component/mathcomponent.php class IndexesController extends AppController{ 4 public $components = array ( Math ) ; 5 function index ( ){ 6 $x = 5 ; 7 $y = 5 ; 8 $sum = $this >Math >sum ($x, $y ) ; 9 } 10 }?> app/controller/indexescontroller.php Dane Tabela BD Pliki Rekordy LDAP Zdarzenia ical Wiersze pliku CVS... Powiązania Dr inż. Stanisław Polak Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 4 Przedmiot: Aplikacje internetowe Model Model Posługiwanie się modelem Pola specjalne 2 App : : uses ( AppModel, Model ) ; 4 class Ingredient extends AppModel { 5 } app/model/ingredient.php 2 App : : uses ( AppController, Controller ) ; 4 class IngredientsController extends AppController { 5 public $uses = array ( Ingredient, User ) ; 6 7 function index ( ) { 8 $ingredients = $this->ingredient >find ( all ) ; 9 $this >set ( ingredients, $ingredients ) ; $users = $this->user >find ( all ) ; 1 1 $this >loadmodel( Group ) ; 14 $groups = $this->group >find ( all ) ; } 17 } app/controller/ingredientscontroller.php title name created modified Dr inż. Stanisław Polak 5 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 6 Przedmiot: Aplikacje internetowe
10 Łączenie modeli Model Łączenie modeli Łączenie modeli Model Przykład jeden do jeden jeden do wielu wiele do jednego wiele do wielu Przykład / Typ asocjacji Użytkownik posiada jeden profil User hasone Profile Użytkownik posiada wiele komentarzy User hasmany Comment Profil należy do użytkownika Profile belongsto User Lekarz posiada i należy do wielu pacjentów Physician hasandbelongstomany Patient Schemat profiles.user id comments.user id profiles.user id patients physicians.id, patients physicians.patient id, patients physicians.physician id class User extends AppModel { 4 public $hasone = Profile ; 5 public $hasmany = array ( 6 Comment => array ( 7 classname => Comment, 8 conditions => array ( Comment.approved => 1 ), 9 order => Comment. created DESC 10 ) 11 ) ; 1 1 $this->comment->jakasfunkcja() ; } 1 $this >User >Comment >jakasfunkcja ( ) ; app/model/user.php app/controller/userscontroller.php Dr inż. Stanisław Polak 7 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 8 Przedmiot: Aplikacje internetowe Łączenie modeli Model Przykład Lista drużyn Pobieranie danych Model Pobieranie danych 1 CREATE TABLE players ( 2 id INTEGER PRIMARY KEY, firstname VARCHAR ( 5 0 ) NOT NULL, 4 lastname VARCHAR ( 5 0 ) NOT NULL, 5 position VARCHAR ( 2 5 ) NOT NULL, 6 team_id INTEGER 7 ) ; 2 App : : uses ( AppModel, Model ) ; 4 class Player extends AppModel { 5 public $belongsto = Team ; 6 } 7?> app/model/player.php 1 CREATE TABLE teams ( 2 id INTEGER PRIMARY KEY, name VARCHAR ( 5 0 ) NOT NULL 4 ) ; 2 App : : uses ( AppModel, Model ) ; 4 class Team extends AppModel { 5 public $hasmany = Player ; 6 public $displayfield = name ; 7 } 8?> app/model/team.php query(string $zapytanie) find($typ, $parametry) $typ [ all, list, neighbors, count, threaded, first ] $parametry tablica: conditions => array( Model.pole => $danawartość), recursive => 1, fields => array( Model.pole1, Model.pole2 ), order => array( Model.created, Model.pole DESC ), group => array( Model.pole ), limit => n, page => n, callbacks => true findallby<nazwapola>(string $wartość) findby<nazwapola>(string $wartość) field(string $nazwa, array $warunki = null, $porządek=null) read($pola, $id) Model::$data Model::$id Dr inż. Stanisław Polak 9 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 40 Przedmiot: Aplikacje internetowe
11 Pobieranie danych Model Przykłady Zapisywanie danych Model Podstawowy format danych 2 $this >Post >find ( list, array ( fields => Post. title ) ) ; $this >Post >id = 2 ; 4 $neighbors = $this >Post >find ( neighbors ) ; 5 $this >Model >find ( all, $condition ) ; 6 $this >User >findallbylastname( Polak ) ; // User. l a s t n a m e = Polak 7 $this >Cake >findbyid (7) ; // Cake. i d = 7 8 $this >Picture >query( " SELECT * FROM pictures LIMIT 2;" ) ; 9 echo $model >field( name, array ( created < => date ( Y-m-d H:i:s ) ), created DESC ) ; 10 $allcategories = $this >Category >find ( threaded ) ; 11 $this >User >id =1; 12 $dane=$this >User >read ( ) ; 1... Kontroler 1 Array ( 2 [ NazwaModelu ] => Array ( [ nazwapola1 ] => wartosc 4 [ nazwapola2 ] => wartosc 5 ) 6 ) 2 if (! empty ($this->request->data) ) { // I f t h e form data can be v a l i d a t e d and s a v e d... 4 if ( $this >Comment >save ($this->request->data) ) { 5 // Set a s e s s i o n f l a s h message and r e d i r e c t. 6 $this >Session >setflash ( " Comment Saved!" ) ; 7 $this >redirect ( / comments ) ; 8 } 9 } Kontroler Dr inż. Stanisław Polak 41 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 42 Przedmiot: Aplikacje internetowe Zapisywanie danych Model Wybrane metody Zapisywanie danych Model Przykład 1 Zapis danych modelu głównego User oraz stowarzyszonego Profile, za pomocą metody save() save(array $dane = null, boolean $walidacja = true, array $listapól = array()) save(array $dane = null, array $parametry = array()) create(array $dane = array()) savefield(string $nazwapola, string $wartośćpola, $walidacja = false) #$this->nazwamodelu->id = $id updateall(array $pola, array $warunki) saveall(array $dane = null, array $opcje = array()) nazwy opcji [validate, atomic, fieldlist] 2 if (! empty ( $this >request >data ) ) { // Możemy zapisa ć dane User s ą one przechowywane w $this >request >data [ User ] 4 $uzytkownik = $this >User >save ( $this >request >data ) ; 5 // Je ż e l i zapisano dane o uż ytkowniku, możemy dodać te informacje i zapisa ć P r o f i l 6 if (! empty ( $uzytkownik ) ) { 7 // I d e n t y f i k a t o r nowo utworzonego u ż y t k o w n i k a z n a j d u j e s i ę w $ t h i s >User >i d 8 $this >request >data [ Profile ] [ user_id ] = $this >User >id ; 9 // Poniewa ż User i P r o f i l e s ą po ł ą czone r e l a c j ą hasone P r o f i l e, możemy u z y s k a ć d o s t ę p do modelu P r o f i l e z poziomu modelu User 10 $this >User >Profile >save ( $this >request >data ) ; 11 } 12 } 1... app/controller/userscontroller.php Dr inż. Stanisław Polak 4 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 44 Przedmiot: Aplikacje internetowe
12 Zapisywanie danych Model Przykład 2 Zapis danych modelu głównego Company oraz stowarzyszonego Account, za pomocą metody saveall() Usuwanie danych Model Dostępne metody 1 echo $this >Form >create ( Company, array ( action => add ) ) ; 2 echo $this >Form >input ( Company. nazwa, array ( label => Nazwa firmy ) ) ; echo $this >Form >input ( Company.opis ) ; 4 echo $this >Form >input ( Company. lokalizacja ) ; 5 echo $this >Form >input ( Account.0. nazwa, array ( label => Nazwa konta ) ) ; 6 echo $this >Form >input ( Account.0. nazwauzytkownika ) ; 7 echo $this >Form >input ( Account.0. ) ; 8 echo $this >Form >end ( Dodaj ) ; app/view/companies/add.ctp delete(int $id = null, boolean $kaskadowo = true) deleteall(mixed $warunki, $kaskadowo = true, $callbacki = false) 1 #: Company hasmany Account function add ( ) { 4 if (! empty ( $this >request >data ) ) { 5 $this >Company >saveall ( $this >request >data, array ( validate => first ) ) ; 6 } 7 } 8... app/controller/companiescontroller.php Dr inż. Stanisław Polak 45 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 46 Przedmiot: Aplikacje internetowe Inne zagadnienia Model Wybrane atrybuty class Example extends AppModel { 4 public $usedbconfig = alternatywna ; 5 public $usetable = false ; // Ten model nie korzysta z t a b e l i BD 6 public $tableprefix = alternate_ ; // bę dzie szuka ł alte rna te ex ampl es 7 public $primarykey = example_id ; // example id j e s t polem w BD 8 public $displayfield = username ; 9 public $recursive = 1 // warto ś ć domyś lna ; 10 public $order = array ( " Example. pole1 " => "asc ", " Example. pole2 " => "DESC " ) ; 11 print_r ( $this >data ) ; 12 public $_schema = array ( 1 imie => array ( 14 type => string, 15 length => 0 16 ), 17 nazwisko => array ( 18 type => string, 19 length => 0 20 ), 21 => array ( 22 type => string, 2 length => 0 24 ), 25 message => array ( type => text ) 26 ) ; 27 public cachequeries = true ; 28 } app/model/example.php Inne zagadnienia Model Funkcje wywołań zwrotnych Funkcja beforefind(array $danezapytania) afterfind(array $wyniki,boolean $pierwotny=false) beforevalidate(array $opcje=array()) beforesave(array $opcje=array()) aftersave($utworzono) beforedelete(boolean $kaskadowo=true) afterdelete() onerror() 2 App : : uses ( AuthComponent, Controller / Component ) ; 4 class User extends AppModel { 5 function beforesave ( $options = array ( ) ) { 6 $this >data [ User ] [ password ] = AuthComponent : : password ( $this >data [ User ] [ password ] ) ; 7 return true ; 8 } 9 } app/model/user.php Dr inż. Stanisław Polak 47 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 48 Przedmiot: Aplikacje internetowe
13 Inne zagadnienia Model Wirtualne pola 2 // Dla SQLite public $virtualfields = array ( 4 // Dla SQLite 5 nazwa => User. imie \ \ User. nazwisko 6 // Dla MySQL 7 // nazwa => CONCAT( User. imie,, User. n a z w i s k o ) 8 ) ; 9... app/model/user.php 2 $results = $this >User >find( first ) ; 4 // wynik zawiera nast ępujące dane 5 array ( 6 User => array ( 7 imie => Stanis ław, 8 nazwisko => Polak, 9 nazwa => Stanisław Polak, 10 // wi ę c e j pó l. 11 ) 12 ) ; 1 14 $this >User >hasfield ( nazwa ) ; // Zwraca false, gdy nie i s t n i e j e konkretne ( fizyczne ) pole o nazwie nazwa 15 $this >User >hasfield ( nazwa, true ) ; // Zwraca true, gdy i s t n i e j e wirtualne pole o nazwie nazwa 16 $this >User >isvirtualfield ( nazwa ) ; // t r u e 17 $this >User >isvirtualfield ( imie ) ; // f a l s e 18 $this >User >getvirtualfield ( nazwa ) ; // dla MySQL zwraca CONCAT( User. imie,, User. nazwisko ) app/controller/userscontroller.php Inne zagadnienia Model Zarządzanie schematem bazy danych oraz migawki 1 cake schema generate 2 cake schema create cake schema update 4 cake schema update -s 2 #app / Config /Schema/ schema 2. php 5 cake schema dump --write dump.sql 1 class AplikacjaSchema extends CakeSchema { public $users = array ( 4 id => array ( type => integer, null => false, length => 11, key => primary ), 5 username => array ( type => string, null => false, length => 8), 6 password => array ( type => string, null => true, length => 40), 7 imie => array ( type => string, null => true, length => 20), 8 nazwisko => array ( type => string, null => true, length => 20), 9 => array ( type => string, null => true, length => 0), 10 indexes => array ( 11 PRIMARY => array ( column => username, unique => 1) 12 ), 1 tableparameters => array ( ) 14 ) ; 15 } app/config/schema/schema.php Dr inż. Stanisław Polak 49 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 50 Przedmiot: Aplikacje internetowe Walidacja Model Reguły proste class User extends AppModel { 4 public $validate = array ( 5 login => alphanumeric, 6 => , 7 dataurodzenia => date 8 ) ; 9 } app/model/user.php Walidacja Model Reguły złożone class User extends AppModel { 4 public $validate = array ( 5 login => array ( 6 alfanumeryczne => array ( 7 rule => alphanumeric, 8 required => true, 9 message => Tylko litery lub cyfry 10 ), 11 pomiedzy => array ( 12 rule => array ( between, 5, 15), 1 message => Od 5 do 15 znak ów 14 ) 15 ), 16 password => array ( 17 rule => array ( minlength, 8 ), 18 message => Mimimum 8 znak ów 19 ), 20 => , 21 dataurodzenia => array ( 22 rule => date, 2 message => Podaj poprawn ą dat ę, 24 allowempty => true 25 ) 26 ) ; 27 } app/model/user.php Dr inż. Stanisław Polak 51 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 52 Przedmiot: Aplikacje internetowe
14 Walidacja Model Definiowanie własnych reguł 2 public $validate = array ( login => array ( 4 rule => /^[a-z0-9]{,} $/i, 5 message => Tylko cyfry lub litery, min. znaki 6 ) 7 ) ; 8... Użycie wyrażenia regularnego class User extends AppModel { 4 public $validate = array ( 5 promotion_code => array ( 6 rule => array ( limitduplicates, 25), 7 message => Przekroczono limit krotno ści uż ycia kodu. 8 ) 9 ) ; 10 function limitduplicates ( $data, $limit ){ 11 $existing_promo_count = $this >find ( count, array ( conditions => $data, recursive => 1) ) ; 12 return $existing_promo_count < $limit ; 1 } 14 } Własna metoda walidująca Zachowania Model Zachowania class Category extends AppModel { 4 public $actsas = array ( 5 Tree => array ( 6 left => left_node, 7 right => right_node 8 ), 9 Translate 10 ) ; 11 } app/model/category.php class CategoriesController extends AppController { 4 5 public function index ( ) { 6 this >Category >id = 4 2 ; 7 kids = $this >Category >children ( ) ; 8 this >Category >Behaviors >unload ( Translate ) ; 9 this >Category >Behaviors >load ( Tree, array ( left => new_left_node ) ) ; 10 } 11 } app/controller/categoriescontroller.php Dr inż. Stanisław Polak 5 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 54 Przedmiot: Aplikacje internetowe Zachowania Model Widok Dostępne zachowania Składniki warstwy widoku ACL Containable Translate Tree Widoki (Views) Układy (Layouts) Elementy (Elements) Pomocnicy (Helpers) Motywy (Themes) app webroot View Themed... NazwaKontrolera NazwaMotywu webroot... NazwaKontrolera Dr inż. Stanisław Polak 55 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 56 Przedmiot: Aplikacje internetowe
15 Składniki warstwy widoku Widok Widoki Składniki warstwy widoku Widok Układy 1 <div class=" logout "><a href="/ users / logout "><img src="/ img / logout. png " width="0" alt="[ logout ]">Wylogowanie</a></div> 2 <aside> <h1>menu</h1> 4 <div> 5 <h2>panele</h2> 6 <ul> 7 <?php echo $this >fetch( panels ) ;?> 8 </ul> 9 </div> 10 </aside> <h2><?php echo $this >fetch( title ) ;?></h2> 1 <?php echo $this >fetch( content ) ;?> 14 <div class=" logout "><a href="/ users / logout "><img src="/ img / logout. png " width="0" alt="[ logout ]">Wylogowanie</a></div> app/view/people/common/main.ctp 2 // Pozosta ł a zawarto ść staje s i ę tre ś ci ą bloku o nazwie c o n t e n t $this >extend( Common/main ) ; 4 $this >assign( title, Panel użytkownika ) ; 5 //Utwó rz blok panels 6 $this >start( panels ) ; 7 echo <li><a href="/notes ">Notek </a></li> ; 8 echo <li ><a href ="/ users "> Administratora </a > </ li > ; 9 $this >end() ;?> // Pozosta ł a zawarto ść staje s i ę tre ś ci ą bloku o nazwie c o n t e n t 12 Treść app/view/people/index.ctp 1 <!DOCTYPE html> 2 <html lang="en"> <head> 4 <?php echo $this >Html >charset ( ) ;?> 5 <title><?php echo $title for layout;?></title> 6 <link rel=" shortcut icon " href=" favicon. ico " type=" image /x- icon "> 7 <?php 8 echo $this->fetch( meta ); 9 echo $this->fetch( css ); 10 echo $this->fetch( script );?> 11 </head> 12 <body> 1 <?php echo $this->fetch( content );?> 14 </body> 15 </html> app/view/layouts/uklad.ctp class PeopleController extends AppController { 4 function index ( ) { // Poniż sze l i n i e można również umieś ci ć w pliku widoku 7 $this->set( title_for_layout, Panel u ż ytkownika ); 8 $this->layout = uklad ; } 11 } app/controller/peoplecontroller.php Dr inż. Stanisław Polak 57 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 58 Przedmiot: Aplikacje internetowe Składniki warstwy widoku Widok Pomocnicy Składniki warstwy widoku Widok Podstawowi pomocnicy class PeopleController extends AppController { 4 public $helpers = array ( Form, Time ) ; function akcja ( ) { 7 $this->helpers[] = Number ; 8 } } Pomocnik Pomocnik Pomocnik Pomocnik Cache Form Html Js Number Paginator Rss Session Text Time app/controller/peoplecontroller.php Dr inż. Stanisław Polak 59 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 60 Przedmiot: Aplikacje internetowe
16 Składniki warstwy widoku Widok Pomocnik Paginator class UsersController extends AppController { 4 public $components=array ( Paginator ) ; 5 public $helpers=array ( Paginator ) ; 6 7 function index ( ) { 8 $this >Paginator >settings = array ( limit => 2, page => 1) ; 9 $this >set ( users, $this >Paginator >paginate ( ) ) ; 10 } 11 } app/controller/userscontroller.php 1 <table cellpadding="0" cellspacing="0"> 2 <tr> <th><?php echo $this >Paginator >sort( id ) ;?></th> </tr> 6 <?php foreach ( $users as $user ) :?> 7 <tr> 8 <td><?php echo $user [ User ] [ id ] ;?></td> </tr> 1 endforeach ;?> 12 </table> 1 <?php 14 echo $this >Paginator >counter ( array ( 15 format => Page {: page } of {: pages }, showing {: current } records out of {: count } total, starting on record {: start }, ending on {: end } 16 ) ) ; 17 echo $this >Paginator >prev( <previous ), array ( ), null, array ( class => prev disabled ) ) ; 18 echo $this >Paginator >numbers(array ( separator => ) ) ; 19 echo $this >Paginator >next( next >, array ( ), null, array ( class => next disabled ) ) ; 20?> app/view/users/index.ctp Składniki warstwy widoku Widok Tworzenie pomocnika Przykład 2 App : : uses ( AppHelper, View / Helper ) ; 4 class LinkHelper extends AppHelper { 5 public $helpers = array ( Html ) ; 6 7 function link ( $create, $title, $url ){ 8 if ( $create ) 9 return $this >Html >link ( $title, $url ) ; 10 else 11 return $title ; 12 } 1 } app/view/helper/linkhelper.php 2 <?php echo $this >Link->link( $notespanel, Notek, / notes )?>... class PeopleController extends AppController { 4 public $helpers = array ( Link ) ; 5 6 public function index ( ){ // Sprawd ź czy i s t n i e j e k o n t r o l e r Notes 9 $notespanel = App : : import ( Controller, Notes ) ; // t r u e, j e ś l i k l a s a jest ju ż w pamię ci lub je ś l i plik z o s t a ł z n a l e z i o n y i za ł adowany ; f a l s e j e ś l i n i e 10 $this >set ( notespanel, $notespanel ) ; 1 12 } 1 } app/view/people/index.ctp app/controllers/peoplecontroller.php Dr inż. Stanisław Polak 61 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 62 Przedmiot: Aplikacje internetowe Składniki warstwy widoku Widok Klasy wspomagające Elementy Funkcjonalności 2 echo $this >element( logout ) ; echo $this >element( logout, 4 array ( 5 "text" => " Wylogowanie " 6 ), 7 array ( 8 "cache" => true, 9 "callbacks" => true #Funkcje zwrotne beforerender oraz afterrender będą uruchamiane 10 ) 11 ) ; Widok 2 $content =! empty ($text)? $text : Wylogowanie ;?> 4 <div class=" logout "><a href="/ users / logout "><img src="/img / logout.png " width="0 " alt="[ logout ]"><?php echo $content ;?></a></div> app/view/elements/logout.ctp Dziennikowanie Buforowanie Umiędzynarodowienie i lokalizacja Operacje tablicowe Operacje łańcuchowe Tworzenie obiektów SimpleXml lub DOMDocument Odmiana wyrazów Gniazda (sockety) HTTP Parsowanie URL Haszowanie i szyfrowanie Oczyszczanie danych Poczta Katalogi i pliki Dostęp do funkcjonalności pomocników Time, Number oraz Text Dr inż. Stanisław Polak 6 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 64 Przedmiot: Aplikacje internetowe
17 Klasy wspomagające Lokalizacja i umiędzynarodowienie Klasy wspomagające Oczyszczanie danych Wyświetlanie tekstu wielojęzycznego 2 App : : uses( Sanitize, Utility ) ;... 4 $badstring = ";: < script ><html >< // >@@#" ; 5 echo Sanitize : : paranoid( $badstring ) ; // na wyj ś c i u : s c r i p t h t m l 6 echo Sanitize : : paranoid( $badstring, array ) ) ; // na wyj ś c i u : s c r i p t h t m 7 $badstring = <font size ="99" color="# FF0000 ">HEY </ font ><script >... </ script > ; 8 echo Sanitize : : html( $badstring ) ; // na wyj ś c i u : & l t ; f o n t s i z e=" ;99& quot ; c o l o r =" ;#FF0000" ;& gt ; HEY& l t ; / f o n t> ;& l t ; s c r i p t> ;... & l t ; / s c r i p t> ; 9 #zak ł adamy, ż e w t a b l i c y $ o p c j e k l u c z remove w s k a z u j e warto ś ć TRUE 10 echo Sanitize : : html( $badstring, $opcje ) ; // na wyj ś c i u : HEY echo Sanitize : : escape( " Stanislaw Polak s page ", default ) ; // na wyj ś ciu : Stanislaw Polak s page 12 Sanitize : : clean( $this >request >data, array ( encode => false ) ) ; 1... Przykłady użycia Pojęcia podstawowe Umiędzynarodowienie (i18n) Lokalizacja (l10n) Globalizacja (g11n) = i18n + l10n Przygotowanie danych 1 msgid " first name " 2 msgstr " First name " msgid " message " 4 msgstr " You belong to a group of %s " app/locale/eng/lc MESSAGES/default.po 1 msgid " first name " 2 msgstr " Imi ę" msgid " message " 4 msgstr " Nale ż ysz do grupy %s " app/locale/pol/lc MESSAGES/default.po Przykład użycia 1 echo ( " first name " ) }; 2 echo ( message, $dane [ Group ] [ name ] ) ; Widok 2 Configure : : write ( Config. language, pol ) ;... Kontroler Dr inż. Stanisław Polak 65 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 66 Przedmiot: Aplikacje internetowe Lokalizacja i umiędzynarodowienie Klasy wspomagające Kontrola dostępu (ACL) Tłumaczenie rekordów bazy danych Podstawowe pojęcia cake i18n 1 CREATE TABLE notes ( 2 id integer PRIMARY KEY, title varchar ( ) default NULL, 4 body text 5 ) ; SQL 2 public $actsas = array ( Translate => array ( title, body ) ) ;... app/model/note.php ACL (Access Control List) określa kto ma dostęp do czego ARO (Access Request Object) reprezentuje kto ACO (Access Control Object) reprezentuje czego 2 function beforefilter ( ) { Configure : : write ( Config. language, pol ) ; 4 } 5... app/controller/notescontroller.php Dr inż. Stanisław Polak 67 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 68 Przedmiot: Aplikacje internetowe
18 Kontrola dostępu (ACL) Tabele z informacjami o użytkownikach Autoryzatory Kontrola dostępu (ACL) Dostępne autoryzatory 1 CREATE TABLE users ( 2 id INTEGER PRIMARY KEY, username CHAR ( 8 ) NOT NULL UNIQUE, 4 password CHAR ( 4 0 ) NOT NULL, 5 group_id TINYINT NOT NULL, ) ; 8 9 CREATE TABLE groups ( 10 id INTEGER PRIMARY KEY, 11 name VARCHAR ( 2 0 ) NOT NULL, 1 1 ) ; ActionsAuthorize CrudAuthorize ControllerAuthorize SQL Dr inż. Stanisław Polak 69 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 70 Przedmiot: Aplikacje internetowe Autoryzatory Kontrola dostępu (ACL) Autoryzator ActionsAuthorize Autoryzatory Kontrola dostępu (ACL) Autoryzator CrudAuthorize 2 class AppController extends Controller {... 4 public $components = array ( 5 Acl, 6 Auth => array ( 7 authorize => array ( Actions => array ( actionpath => controllers / ) ) 8 ), ) ; 1 12 } app/controller/appcontroller.php class AppController extends Controller { 4 public $components = array ( 5 Acl, 6 Auth => array ( 7 authorize => array ( 8 Crud => array ( 9 / 10 i n d e x => r e a d, 11 add => c r e a t e, 12 e d i t => update, 1 view => r e a d, 14 remove => d e l e t e, 15 c r e a t e => c r e a t e, 16 r e a d => r e a d, 17 update => update, 18 d e l e t e => d e l e t e 19 / 20 actionmap => array ( show => read, pokaz => read ) 21 ) 22 ) 2 ) 24 ) ; } app/controller/appcontroller.php 2 function beforefilter ( ) { parent : : beforefilter ( ) ; 4 $this >Auth >mapactions( 5 array ( 6 create => array ( register, dodaj ), 7 read => array ( wyswietl ) 8 ) 9 ) ; 10 } 1 Kontroler Dr inż. Stanisław Polak 71 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 72 Przedmiot: Aplikacje internetowe
19 Autoryzatory Kontrola dostępu (ACL) Autoryzator ControllerAuthorize Implementacje Kontrola dostępu (ACL) Dostępne implementacje ACL 2 class UsersController extends Controller { public $components = array ( 4 Auth => array ( authorize => Controller ), 5 ) ; 6 7 public function isauthorized( $user = null ) { 8 $usergroup = $user [ Group ] [ name ] ; 9 10 // A d m i n i s t r a t o r z y mogą wykonywa ć dowolne a k c j e k o n t r o l e r a Users, p o z o s t a l i ty lk o akcje index oraz view 11 if ( $usergroup == administrators in_array ( $this >action, array ( index, view ) ) ) { 12 return true ; // zezwolenie na dost ęp do zasobu 1 } if ( $usergroup == users ) { 16 return false ; // brak prawa dost ępu do zasobu 17 } 18 return false ; 19 } 20 } app/controller/userscontroller.php IniAcl PhpACl DbAcl Dr inż. Stanisław Polak 7 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 74 Przedmiot: Aplikacje internetowe Implementacje Kontrola dostępu (ACL) Implementacja IniAcl Implementacje Kontrola dostępu (ACL) Implementacja PhpAcl 1 Configure : : write ( Acl. classname, IniAcl ) ; 2 #C o n f i g u r e : : w r i t e ( Acl. d a t a b a s e, d e f a u l t ) ; app/config/core.php 2 class AppController extends Controller { public $components = array ( 4 Acl, 5 Auth => array ( 6 authorize => array ( Actions => array ( actionpath => controllers / ) ) 7 ), ) ; } app/controller/appcontroller.php 1 ; 2 ; Users ; 4 5 [ polak ] 6 groups = administrators 7 allow = 8 deny = 9 10 [ user ] 11 groups = users 12 allow = 1 deny = ; 16 ; Groups 17 ; [ users ] 20 allow = controllers / People / index 21 deny = 22 2 [ administrators ] 24 allow = controllers / People /index, controllers / Users / index, deny = app/config/acl.ini.php 1 Configure : : write ( Acl. classname, PhpAcl ) ; 2 #C o n f i g u r e : : w r i t e ( Acl. d a t a b a s e, d e f a u l t ) ; app/config/core.php 2 class AppController extends Controller { public $components = array ( 4 Acl, 5 Auth => array ( 6 authorize => array ( Actions => array ( actionpath => controllers / ) ) 7 ), ) ; } app/controller/appcontroller.php 1 $config [ map ] = array ( 2 User => User / username, Role => User / group_id, 4 ) ; 5 $config [ alias ] = array ( 6 Role /1 => Role / user, 7 Role /2 => Role / staff, 8 Role / => Role / admin 9 ) ; 10 $config [ roles ] = array ( 11 Role / user => null, 12 Role / staff => null, 1 Role / admin => null, 14 Role / editor => Role /user, Role / staff, 15 User / polak => Role / editor, 16 ) ; 17 $config [ rules ] = array ( 18 allow => array ( 19 * => Role / admin, 20 controllers / Pages / display => Role / default, Role / user, 21 controllers / Users /( index view ) => Role / user, 2 2 ), 24 deny => array ( 25 controllers / Users / delete => Role / editor, ), 28 ) ; app/config/acl.php Dr inż. Stanisław Polak 75 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 76 Przedmiot: Aplikacje internetowe
20 Implementacje Kontrola dostępu (ACL) Implementacja DbAcl 1 Configure : : write ( Acl. classname, DbAcl ) ; 2 Configure : : write ( Acl. database, default ) ; app/config/core.php 2 class AppController extends Controller { public $components = array ( 4 Acl, 5 Auth => array ( 6 authorize => array ( Actions => array ( actionpath => controllers / ) ) 7 ), ) ; } app/controller/appcontroller.php Tworzenie tabel ACL cake acl initdb 1 CREATE TABLE " aros " ( 2 "id" integer primary key autoincrement, " parent_id " integer ( 1 0 ) DEFAULT NULL, 4 " model " varchar ( ) DEFAULT NULL, 5 " foreign_key " integer ( 1 0 ) DEFAULT NULL, 6 " alias " varchar ( ) DEFAULT NULL, 7 " lft " integer ( 1 0 ) DEFAULT NULL, 8 " rght " integer ( 1 0 ) DEFAULT NULL 9 ) ; CREATE TABLE " acos " ( 12 "id" integer primary key autoincrement, 1 " parent_id " integer ( 1 0 ) DEFAULT NULL, 14 " model " varchar ( ) DEFAULT NULL, 15 " foreign_key " integer ( 1 0 ) DEFAULT NULL, 16 " alias " varchar ( ) DEFAULT NULL, 17 " lft " integer ( 1 0 ) DEFAULT NULL, 18 " rght " integer ( 1 0 ) DEFAULT NULL 19 ) ; CREATE TABLE " aros_acos " ( 2 "id" integer primary key autoincrement, 24 " aro_id " integer ( 1 0 ) NOT NULL, 25 " aco_id " integer ( 1 0 ) NOT NULL, 26 " _create " varchar ( 2 ) DEFAULT 0 NOT NULL, 27 " _read " varchar ( 2 ) DEFAULT 0 NOT NULL, 28 " _update " varchar ( 2 ) DEFAULT 0 NOT NULL, 29 " _delete " varchar ( 2 ) DEFAULT 0 NOT NULL 0 ) ; SQL Implementacje Kontrola dostępu (ACL) Implementacja DbAcl Automatyczne dodawanie/usuwanie ARO podczas dodawania/usuwania użytkownika lub grupy class User extends Model { 4 public $belongsto = array ( Group ) ; 5 public $actsas = array ( Acl => array ( type => requester ) ) ; 6 7 function parentnode() { 8 if (! $this >id && empty ( $this >data ) ) { 9 return null ; 10 } 11 if ( isset ( $this >data [ User ] [ group_id ] ) ) { 12 $groupid = $this >data [ User ] [ group_id ] ; 1 } else { 14 $groupid = $this >field ( group_id ) ; 15 } 16 if (! $groupid ) { 17 return null ; 18 } else { 19 return array ( Group => array ( id => $groupid ) ) ; 20 } 21 } 22 } app/model/user.php class Group extends Model { 4 public $hasmany = array ( User ) ; 5 public $actsas = array ( Acl => array ( type => requester ) ) ; 6 7 function parentnode() { 8 return null ; 9 } 10 } app/model/group.php Dr inż. Stanisław Polak 77 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 78 Przedmiot: Aplikacje internetowe Implementacje Kontrola dostępu (ACL) Implementacja DbAcl Tworzenie ARO Implementacje Kontrola dostępu (ACL) Implementacja DbAcl Tworzenie ACO 1 cake acl create aro root Group. 1 2 cake acl create aro root Group. 2 cake acl create aro root Group. 4 5 cake acl create aro Group. 1 User. 6 cake acl create aro Group. 2 User. 2 7 cake acl create aro Group. User. 1 Tworzenie, przy użyciu skryptu cake 1 cake acl view aro 2 Welcome to CakePHP v2.. 4 Console 4 5 App : aplikacja 6 Path : / home / polak / aplikacja / 7 8 Aro tree : 9 10 [ 1 ] Group [ 4 ] User. 12 [ 2 ] Group. 2 1 [ 5 ] User.2 14 [ ] Group. 15 [ 6 ] User.1 16 Wyświetlenie drzewa ARO 1 $aro = $this >Acl >Aro ; 2 $groups = array ( 0 => array ( 4 alias => Group.1, 5 model => Group, 6 foreign_key => 1 # id grupy z t a b e l i groups 7 ), 8 1 =>..., 9 2 => ) ; 11 foreach ( $groups as $data ) { 12 $aro >create ( ) ; 1 $aro >save ( $data ) ; 14 } 15 ############################### 16 $aro = new Aro ( ) ; 17 $users = array ( 18 0 => array ( 19 alias => User., 20 parent_id => 1, # id węz ł a w drzewie ARO, tu ; id węz ł a o nazwie Group.1 21 model => User, 22 foreign_key =>, # id uż ytkownika z tabeli users 2 ), 24 1 =>..., 25 2 => ) ; 27 foreach ( $users as $data ) { 28 $aro >create ( ) ; 29 $aro >save ( $data ) ; 0 } Z poziomu kontrolera 1 cake acl create aco root controllers 2 cake acl create aco controllers Users cake acl create aco controllers / Users create 4... Za pomocą skryptu cake 1 $aco =& $this >Acl >Aco ; 2 $aco >create ( array ( parent_id => null, alias => controllers ) ) ; $root = $aco >save ( ) ; 4 $controllers_id = $root [ Aco ] [ id ] ; 5 $aco >create ( array ( parent_id => $controllers_id, alias => Users ) ) ; 6 $root = $aco >save ( ) ; 7 $users_id = $root [ Aco ] [ id ] ; 8 $aco >create ( array ( parent_id => $users_id, alias => create ) ) ; 9 $aco >save ( ) ; Z poziomu kontrolera Dr inż. Stanisław Polak 79 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 80 Przedmiot: Aplikacje internetowe
21 Implementacje Kontrola dostępu (ACL) Implementacja DbAcl Tworzenie powiązań pomiędzy ARO a ACO Testowanie Rama testująca PHPUnit Programowanie sterowane testami Tworzenie i wykonywanie testów jednostkowych Instalacja 1 cake acl grant Group. controllers all 2 cake acl grant Group. 2 controllers / Notes all cake acl grant Group. 1 controllers / People read Za pomocą skryptu cake 2 $group = $this >User >Group ; //Uż ytkownicy z grupy mogą wykonywać dowolne ( w s z y s t k i e ) a k c j e 4 $group >id = ; 5 $this >Acl >allow ( $group, controllers ) ; 6 7 //Uż ytkownicy z grupy 2 mogą wykonywać dowolne akcje dla k o n t r o l e r a Notes 8 $group >id = 2 ; 9 $this >Acl >deny ( $group, controllers ) ; 10 $this >Acl >allow ( $group, controllers / Notes ) ; //Uż ytkownicy z grupy 1 mogą wykonywać akcje typu r e a d d l a k o n t r o l e r a People 1 $group >id = 1 ; 14 $this >Acl >deny ( $group, controllers ) ; 15 $this >Acl >allow ( $group, controllers / People, read ) ; Z poziomu kontrolera 1 pear upgrade PEAR 2 pear config set auto_discover 1 pear install pear. phpunit. de/ PHPUnit Konfigurowanie CakePHP 1 Configure : : write ( debug, 1) ; #Warto ś ć parametru debug 1 1 public $test = array ( 2 datasource =>...,... 4 ) ; app/config/core.php app/config/database.php Etapy procedury testowania 1. Opcjonalnie, utworzenie osprzętu testowania (fixture) 2. Utworzenie testów. Uruchomienie testów Dr inż. Stanisław Polak 81 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 82 Przedmiot: Aplikacje internetowe Osprzęt testowania Programowanie sterowane testami Tworzenie osprzętu testowania Osprzęt testowania Programowanie sterowane testami Importowanie definicji i rekordów 2 class UserFixture extends CakeTestFixture { public $fields = array ( 4 id => array ( type => integer, null => false, length => 11, key => primary ), 5 username => array ( type => string, null => false, length => 50), 6 password => array ( type => string, null => true, length => 40), 7 group_id => array ( type => integer, null => true ), 8 indexes => array ( PRIMARY => array ( column => username, unique => 1) ), 9 tableparameters => array ( ) 10 ) ; public $records = array ( 1 array ( 14 id => 1, 15 username => admin, 16 password => fc1ca166055a25701d12f14f0fd74ba50, 17 group_id => 1 18 ), 19 array ( 20 id => 2, 21 username => manager, 22 password => 8951 d5c5c26e451a6a76c55e950d65fd2e145, 2 group_id => 2 24 ) 25 ) ; 26 } 2 class UserFixture extends CakeTestFixture { public $import = User ; 4 public $import = array ( model => User, records => true ) ; 5 public $import = array ( table => users ) ; 6 public $import = array ( table => users, records => true ) ; 7 } app/test/fixture/userfixture.php app/test/fixture/userfixture.php Dr inż. Stanisław Polak 8 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 84 Przedmiot: Aplikacje internetowe
22 Testy Programowanie sterowane testami Co można testować Testy Programowanie sterowane testami Reguły dla testów Katalog app/test/case/[typ] Modele Kontrolery Pomocnicy Komponenty Nazwy plików *Test.php Klasy nadrzędne CakeTestCase i ControllerTestCase PHPUnit Framework TestCase Nazwy metod zawierających testy admins() testadmins() Dr inż. Stanisław Polak 85 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 86 Przedmiot: Aplikacje internetowe Testy Programowanie sterowane testami Testowanie modeli class User extends AppModel { 4 function admins( $fields = null ) { 5 $params = array ( 6 conditions => array ( 7 $this >name.. group_id => 8 ), 9 fields => $fields 10 ) ; 11 return $this >find ( all, $params ) ; 12 } 1 } app/model/user.php 2 App : : uses ( User, Model ) ; 4 class UserTestCase extends CakeTestCase { 5 public $fixtures = array ( app. user, app. group, app. profile ) ; 6 7 public function setup() { 8 parent : : setup ( ) ; 9 $this >User = ClassRegistry : : init ( User ) ; 10 } public function teardown() { 1 unset ( $this >User ) ; 14 parent : : teardown ( ) ; 15 } function testadmins() { 18 $result = $this >User > admins( array ( username ) ) ; 19 $expected = array ( 20 array ( User => array ( username => admin1 ) ), 21 array ( User => array ( username => admin2 ) ) 22 ) ; 2 24 $this >assertequals($expected, $result) ; 25 } 26 } app/test/case/model/usertest.php Uruchamianie testów Programowanie sterowane testami Sposoby uruchomienia testów Testowanie przykładowego modelu User Pierwszy sposób 1. DEBUG App / Tests 4. Model / User Drugi sposób cake test app/model/user.php --stderr Dr inż. Stanisław Polak 87 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 88 Przedmiot: Aplikacje internetowe
23 Źródła Źródła Źródła I Źródła II Faheem Abbas. Defining your own components in cakephp. defining-your-own-components-in-cakephp/. the bakery. Dokumentacja CakePHP. Jason Gilmore. Scaffolding with cakephp - managing your fantasy football team. Maciej Grajcarek. L10n i i18n w cakephp 1.2. http: //blog.uplevel.pl/index.php/2008/05/l10n-i-i18n-w-cakephp-12/. Matt Inman. 21 things you must know about cakephp things-you-must-know-about-cakephp.html. Wikipedia. Dr inż. Stanisław Polak 89 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 90 Przedmiot: Aplikacje internetowe
Plan prezentacji. Framework CakePHP. CakePHP. Przydatne adresy. Wstęp. Przedmiot: Aplikacje internetowe. Przykłady. Kontroler. Dr inż.
Plan prezentacji Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie http://artemis.wszib.edu.pl/~polak/ Wstęp Przykłady Kontroler Model Widok Klasy
Bardziej szczegółowoTworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)
Tworzenie witryn internetowych PHP/Java (mgr inż. Marek Downar) Co narzuca MVC? Architekturę aplikacji wykonaną w konwencji Model Widok - Kontroler Model reprezentacja danych i dostępu do nich Widok elementy
Bardziej szczegółowoStudium Podyplomowe Aplikacje i Us ugi Internetowe Tworzenie witryn internetowych 2012/2013. CakePHP część II
1. Dodatkowe elementy aplikacji CakePHP część II Przygotowany w poprzedniej części projekt prezentuje podstawowe elementy aplikacji opartej o CakePHP takie jak: klasy modelu, kontrolery, widoki. W tej
Bardziej szczegółowoProjektowanie aplikacji w modelu MVC opartej o framework CodeIgniter
Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter Konfiguracja i przygotowanie przykładowej aplikacji opartej o model Model-View- Controller Konfiguracja frameworka Zainstaluj na serwerze
Bardziej szczegółowoMVC w praktyce tworzymy system artykułów. cz. 1
MVC w praktyce tworzymy system artykułów. cz. 1 Tworząc różnego rodzaju aplikacje natrafiamy na poważny problem utrzymania dobrej organizacji kodu przejrzystej oraz łatwej w rozbudowie. Z pomocą przychodzą
Bardziej szczegółowoPoznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner 2013-03-11
Poznaj ASP.NET MVC Kamil Cieślak Microsoft Student Partner 2013-03-11 Agenda Czym jest ASP.NET MVC? Wzorzec MVC ASP.NET MVC vs inne frameworki Bazy danych w ASP.NET MVC Jak zacząć? 2 Czym jest ASP.NET
Bardziej szczegółowoProgramowanie w Ruby
Programowanie w Ruby Wykład 11 Marcin Młotkowski 19 grudnia 2012 Plan wykładu Modele danych i bazy danych Modele danych Migracje Bazy danych w Railsach Rusztowania Walidacja modeli Modele danych Definicje
Bardziej szczegółowopawel.rajba@gmail.com, http://kursy24.eu/
pawel.rajba@gmail.com, http://kursy24.eu/ Wprowadzenie, struktura Podstawy Twig Adres i nawigacja Request, Response i parametry Ciasta, sesje i flash messages Model i baza danych Formularze Security Ilustracje
Bardziej szczegółowoProgramowanie w Ruby
Programowanie w Ruby Wykład 11 Marcin Młotkowski 19 grudnia 2014 Plan wykładu 1 Projekt 2 Modele danych 3 4 5 Marcin Młotkowski Programowanie w Ruby 2 / 38 Zasady Projekt Składowe projektu przynajmniej
Bardziej szczegółowoASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3
3 ASP.NET MVC Podstawy 1 1. Cel zajęć Celem zajęć jest zapoznanie się z podstawami ASP.NET MVC 2.0 Framework. 2. Zadanie Proszę zbudować prostą aplikację WWW przy zastosowaniu framework a ASP.NET MVC 2.0
Bardziej szczegółowoLaboratorium 6 Tworzenie bloga w Zend Framework
Laboratorium 6 Tworzenie bloga w Zend Framework Przygotowanie bazy danych 1. Wykonaj skrypt blog.sql, który założy w bazie danych dwie tabele oraz wpisze do nich przykładowe dane. Tabela blog_uzytkownicy
Bardziej szczegółowoWprowadzenie do framework a Symfony
Wprowadzenie do framework a Symfony mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Bazuje na wzorcu projektowym MVC Niezależność od systemu bazodanowego Programowanie zorientowane
Bardziej szczegółowoĆwiczenia laboratoryjne nr 11 Bazy danych i SQL.
Prezentacja Danych i Multimedia II r Socjologia Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Celem ćwiczeń jest poznanie zasad tworzenia baz danych i zastosowania komend SQL. Ćwiczenie I. Logowanie
Bardziej szczegółowoLaboratorium nr 3 Podstawy Ruby on Rails
Laboratorium nr 3 Podstawy Ruby on Rails Elektroniczne Przetwarzanie Informacji Plan prezentacji Utworzenie aplikacji Author Book Końcowe porządki System do obsługi biblioteki Bardzo prosta biblioteka.
Bardziej szczegółowostrukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych
SQL SQL (ang. Structured Query Language): strukturalny język zapytań używany do tworzenia strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych
Bardziej szczegółowoTworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)
Tworzenie witryn internetowych PHP/Java (mgr inż. Marek Downar) Rodzaje zawartości Zawartość statyczna Treść statyczna (np. nagłówek, stopka) Layout, pliki multimedialne, obrazki, elementy typograficzne,
Bardziej szczegółowoTworzenie modułów. Wymagania aplikacji. Tworzenie modułów. Architektura aplikacji. controllers
Tworzenie modułów Wymagania aplikacji Tworzenie modułów Utworzenie katalogu z nazwą modułu oraz wersją (np. blog1) w katalogu modules Utworzenie potrzebnych katalogów takich jak config controllers helpers
Bardziej szczegółowoKurs rozszerzony języka Python
Środowisko Django, cz. 3 19 stycznia 2018 Plan wykładu 1 2 Konstrukcja formularzy Walidacja i zapis 3 Ograniczenie dostępu 4 Plan wykładu 1 2 Konstrukcja formularzy Walidacja i zapis 3 Ograniczenie dostępu
Bardziej szczegółowoInternetowe bazy danych
Wyższa Szkoła Technologii Teleinformatycznych w Świdnicy Internetowe bazy danych wykład 6 dr inż. Jacek Mazurkiewicz e-mail: Jacek.Mazurkiewicz@pwr.wroc.pl Kontrola dostępu
Bardziej szczegółowoBazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8
Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8 Bazowy skrypt PHP do ćwiczeń z bazą MySQL: Utwórz skrypt o nazwie cw7.php zawierający następującą treść (uzupełniając go o właściwą nazwę uŝytkownika
Bardziej szczegółowoAplikacje WWW. Krzysztof Ciebiera. 3 kwietnia 2014
Aplikacje WWW Krzysztof Ciebiera 3 kwietnia 2014 Bezpieczeństwo Clickjacking CSRF Cross site scripting (XSS) Migracje ContentType Tłumaczenia Testowanie - RequestFactory Clickjacking Użytkownik odwiedza
Bardziej szczegółowoWykład 5: PHP: praca z bazą danych MySQL
Wykład 5: PHP: praca z bazą danych MySQL Architektura WWW Podstawowa: dwuwarstwowa - klient (przeglądarka) i serwer WWW Rozszerzona: trzywarstwowa - klient (przeglądarka), serwer WWW, serwer bazy danych
Bardziej szczegółowoWprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.
Bazy Danych i Systemy informacyjne Wykład 2 Piotr Syga 16.10.2017 Dodawanie, usuwanie i zmienianie rekordów Wstawianie rekordu wstawianie do tabeli INSERT INTO A VALUES ( fioletowy, okrągły, słodko-kwaśny
Bardziej szczegółowoJęzyki programowania wysokiego poziomu. PHP cz.4. Bazy danych
Języki programowania wysokiego poziomu PHP cz.4. Bazy danych PHP i bazy danych PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł
Bardziej szczegółowoOPT Open Power Template. System szablonów OPT. Przykładowy skrypt oraz szablon OPT OPT API
OPT Open Power Template System szablonów OPT System szablonów PHP5 Niektóre możliwości: Cache Nagłówki HTTP oraz kompresja Rozszerzalność Struktury kontrolne Wysokopoziomowe struktury Ułatwienia Wysoka
Bardziej szczegółowoProjektowanie systemów baz danych
Projektowanie systemów baz danych Seweryn Dobrzelewski 4. Projektowanie DBMS 1 SQL SQL (ang. Structured Query Language) Język SQL jest strukturalnym językiem zapewniającym możliwość wydawania poleceń do
Bardziej szczegółowoPodstawowe wykorzystanie Hibernate
Podstawowe wykorzystanie Hibernate Cel Wykonanie prostej aplikacji webowej przedstawiającą wykorzystanie biblioteki. Aplikacja sprawdza w zależności od wybranej metody dodaje, nową pozycje do bazy, zmienia
Bardziej szczegółowoBazy danych i usługi sieciowe
Bazy danych i usługi sieciowe Ćwiczenia I Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) BDiUS ćw. I Jesień 2014 1 / 16 Strona wykładu http://bioexploratorium.pl/wiki/ Bazy_danych_i_usługi_sieciowe_-_2014z
Bardziej szczegółowoEPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails
EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails Plan prezentacji Framework Rails Ruby on Rails podstawowe założenia DRY: nie powtarzaj się Ruby on Rails podstawowe założenia DRY: nie powtarzaj
Bardziej szczegółowoRuby i Ruby on Rails. Mateusz Drożdżyński
Ruby i Ruby on Rails Mateusz Drożdżyński Co to Ruby? Dynamiczny, obiektowy język programowania, stworzony przez Yukihiro Matsumoto Pojawił się w tym samym roku co Java (1995) Przejrzysta, prosta i intuicyjna
Bardziej szczegółowoBazy Danych i Usługi Sieciowe
Bazy Danych i Usługi Sieciowe Ćwiczenia I Paweł Daniluk Wydział Fizyki Jesień 2011 P. Daniluk (Wydział Fizyki) BDiUS ćw. I Jesień 2011 1 / 15 Strona wykładu http://bioexploratorium.pl/wiki/ Bazy_Danych_i_Usługi_Sieciowe_-_2011z
Bardziej szczegółowoWprowadzenie do Doctrine ORM
Wprowadzenie do Doctrine ORM Przygotowanie środowiska Do wykonania ćwiczenia konieczne będzie zainstalowanie narzędzia Composer i odpowiednie skonfigurowanie Netbeans (Tools->Options->Framework & Tools->Composer,
Bardziej szczegółowoJęzyk SQL, zajęcia nr 1
Język SQL, zajęcia nr 1 SQL - Structured Query Language Strukturalny język zapytań Login: student Hasło: stmeil14 Baza danych: st https://194.29.155.15/phpmyadmin/index.php Andrzej Grzebielec Najpopularniejsze
Bardziej szczegółowoNoSQL Not Only SQL: CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Przetwarzanie dokumentów i widoków.
Igor Wojnicki (AGH, KIS) PHP 23 października 2016 1 / 29 NoSQL Not Only SQL: CouchDB Apache CouchDB has started. Time to relax. Przetwarzanie dokumentów i widoków. Igor Wojnicki Katedra Informatyki Stosowanej,
Bardziej szczegółowoMVC w praktyce tworzymy system artykułów. cz. 2
MVC w praktyce tworzymy system artykułów. cz. 2 W drugiej części artykułu o wzorcu MVC stworzymy część skryptu, odpowiedzialną za obsługę kategorii. Tworzymy kontroler kategorii Na początek stwórzmy plik
Bardziej szczegółowoWprowadzenie do psql i SQL. Język komend psql. Podstawy instrukcji SELECT
Wprowadzenie do psql i SQL 1 Bazy Danych Wykład p.t. Wprowadzenie do psql i SQL. Język komend psql. Podstawy instrukcji SELECT Antoni Ligęza ligeza@agh.edu.pl http://galaxy.uci.agh.edu.pl/~ligeza Wykorzystano
Bardziej szczegółowoProgramowanie w Ruby
Programowanie w Ruby Wykład 6 Marcin Młotkowski 14 listopada 2012 Plan wykładu Trwałość obiektów Bazy danych DBM Bazy danych SQL Active records Szeregowanie obiektów Obiekt Serializacja @tytul = 'Pan Tadeusz'
Bardziej szczegółowoBazy Danych i Usługi Sieciowe
Bazy Danych i Usługi Sieciowe Język PHP Paweł Witkowski Wydział Matematyki, Informatyki i Mechaniki Jesień 2011 P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 1 /
Bardziej szczegółowoProgramowanie w Ruby
Programowanie w Ruby Wykład 13 Marcin Młotkowski 16 stycznia 2013 Plan wykładu Testowanie aplikacji w Ruby on Rails Testowanie modeli Testy funkcjonalne: testowanie kontrolerów Testy integracyjne Testowanie
Bardziej szczegółowoMeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty
MeetingHelper Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania Instrukcja obsługi dla programisty W tej części został zawarty opis uruchamiania projektu programistycznego,
Bardziej szczegółowoTemat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych
PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W ELBLĄGU INSTYTUT INFORMATYKI STOSOWANEJ Sprawozdanie z Seminarium Dyplomowego Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych
Bardziej szczegółowoBudowa nowoczesnej aplikacji SPA z wykorzystaniem biblioteki Ember.js
Akademia MetaPack Uniwersytet Zielonogórski Budowa nowoczesnej aplikacji SPA z wykorzystaniem biblioteki Ember.js Daniel Habowski Budowa aplikacji SPA z wykorzystaniem biblioteki Ember.js Agenda: 1. Standardowa
Bardziej szczegółowomedia Blitz wydajne sytemy szablonów
Blitz wydajne sytemy szablonów Dlaczego stosować szablony? MVC Kontroler Model Widok Co to jest Blitz? Rozszerzenie PHP stworzone przez Alexey A. Rybak a. Regularnie rozwijany od 2005 roku. Szybki i lekki
Bardziej szczegółowoapp/ - folder zawiera pliki konfiguracyjne dla całej aplikacji Można wybrać sposób zapisu konfiguracji: YML, XML, PHP
Baza danych i ORM Struktura Bundle app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji Można wybrać sposób zapisu konfiguracji: YML, XML, PHP src/ - folder zawiera cały kod PHP aplikacji vendor/
Bardziej szczegółowoapp/ - folder zawiera pliki konfiguracyjne dla całej aplikacji src/ - folder zawiera cały kod PHP aplikacji
Baza danych i ORM Projekt zestaw usług dostępnych pod daną domeną. Aplikacja niezależnie działające programy/serwisy (w obrębie pojektu). Zwyczajowo projekt posiada dwie aplikacje: Frontend Backend Moduł
Bardziej szczegółowoNoSQL Not Only SQL, CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Igor Wojnicki
29 października 2014 Igor Wojnicki (AGH, KIS) CouchDB 29 października 2014 1 / 53 NoSQL Not Only SQL, CouchDB Apache CouchDB has started. Time to relax. Igor Wojnicki Katedra Informatyki Stosowanej, Akademia
Bardziej szczegółowoBaza danych do przechowywania użytkowników
System logowania i rejestracji jest bardzo przydatną funkcjonalnością na każdej stronie. Umożliwia sprawną identyfikację i zarządzanie użytkownikami. Strona ze skryptem logowania nabiera dużej wartości.
Bardziej szczegółowoLaboratorium nr 4. Temat: SQL część II. Polecenia DML
Laboratorium nr 4 Temat: SQL część II Polecenia DML DML DML (Data Manipulation Language) słuŝy do wykonywania operacji na danych do ich umieszczania w bazie, kasowania, przeglądania, zmiany. NajwaŜniejsze
Bardziej szczegółowoProgramowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie
Programowanie MSQL show databases; - pokazanie jakie bazy danych są dostępne na koncie show databases; - wyświetlenie wszystkich baz danych na serwerze create database nazwa; - za nazwa wstawiamy wybraną
Bardziej szczegółowoPodstawy programowania III WYKŁAD 6
Podstawy programowania III WYKŁAD 6 Jan Kazimirski 1 Projekt: Katalog książek elektronicznych c.d. 2 Diagram przypadków użycia 3 Iteracja 1 Zaprojektowanie panelu głównego aplikacji Realizacja przypadków
Bardziej szczegółowoZaawansowany kurs języka Python
Środowisko Django początki 10 stycznia 2014 Plan wykładu 1 2 Plan wykładu 1 2 Co to jest Django Oparty o Pythona framework do tworzenia aplikacji internetowych. Co to jest Django Oparty o Pythona framework
Bardziej szczegółowoProgramowanie zorientowane obiektowo. Mateusz Kołecki
Programowanie zorientowane obiektowo Mateusz Kołecki Plan MVC Wstęp Separacja odpowiedzialnośći Antyprzykład Dobry przykład Wady/zalety MVC MVC to tylko początek - wzorce projektowe Dlaczego chcemy używać
Bardziej szczegółowoHurtownia Świętego Mikołaja projekt bazy danych
Aleksandra Kobusińska nr indeksu: 218366 Hurtownia Świętego Mikołaja projekt bazy danych Zaprezentowana poniżej baza jest częścią większego projektu bazy danych wykorzystywanej w krajowych oddziałach wiosek
Bardziej szczegółowoBazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r.
Bazy danych dla producenta mebli tapicerowanych Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r. Założenia Stworzyć system bazodanowy dla małej firmy produkującej meble tapicerowane. Projekt ma umożliwić
Bardziej szczegółowoSystemy internetowe. Wykład 4 mysql. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science
Systemy internetowe Wykład 4 mysql MySQL - wstęp SZBD: komercyjne: Microsoft SQL Server, Oracle, DB2... darmowe: MySQL, PostgreSQL, Firebird... MySQL darmowy (użytek niekomercyjny) Wady: niska wydajność
Bardziej szczegółowoZarządzanie kontami użytkowników w i uprawnieniami
106 Plan prezentacji 107 Zarządzanie kontami użytkowników w i uprawnieniami Schematy a użytkownicy Tworzenie użytkowników, uwierzytelnianie Przywileje systemowe i obiektowe, role Profile kontrola wykorzystania
Bardziej szczegółowoPaweł Cieśla. Dokumentacja projektu
Paweł Cieśla Dokumentacja projektu Projekt Project1 został utworzony i skompilowany na próbnej wersji Delphi XE 4. Po uruchomieniu programu należy kliknąć przycisk Wczytaj plik tekstowy, następnie wskazać
Bardziej szczegółowoWykład 5. SQL praca z tabelami 2
Wykład 5 SQL praca z tabelami 2 Wypełnianie tabel danymi Tabele można wypełniać poprzez standardową instrukcję INSERT INTO: INSERT [INTO] nazwa_tabeli [(kolumna1, kolumna2,, kolumnan)] VALUES (wartosc1,
Bardziej szczegółowoBAZA DANYCH SIECI HOTELI
Paulina Gogół s241906 BAZA DANYCH SIECI HOTELI Baza jest częścią systemu zarządzającego pewną siecią hoteli. Składa się z tabeli powiązanych ze sobą różnymi relacjami. Służy ona lepszemu zorganizowaniu
Bardziej szczegółowoWprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/
Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Aplikacja internetowa tworzona na podstawie bazy danych. Programowanie komponentowe 2, Zofia
Bardziej szczegółowoDatabase Connectivity
Oprogramowanie Systemów Pomiarowych 15.01.2009 Database Connectivity Dr inŝ. Sebastian Budzan Zakład Pomiarów i Systemów Sterowania Tematyka Podstawy baz danych, Komunikacja, pojęcia: API, ODBC, DSN, Połączenie
Bardziej szczegółowoWICKET VS. DJANGO. Leszek Gawron vs. Michał Leszczyński
WICKET VS. DJANGO Leszek Gawron vs. Michał Leszczyński 0. Główne ficze 1. Środowisko developerskie AGENDA 2. Uruchomienie projektów 3. Warstwa DAO/serwisów 4. Tworzenie UI 5. Templating 7. i18n 8. Reusability
Bardziej szczegółowoBazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1
Bazy danych Wykład IV SQL - wprowadzenie Copyrights by Arkadiusz Rzucidło 1 Czym jest SQL Język zapytań deklaratywny dostęp do danych Składnia łatwa i naturalna Standardowe narzędzie dostępu do wielu różnych
Bardziej szczegółowoSystemowe aspekty baz
Systemowe aspekty baz danych Deklaracja zmiennej Zmienne mogą być wejściowe i wyjściowe Zmienne w T-SQL można deklarować za pomocą @: declare @nazwisko varchar(20) Zapytanie z użyciem zmiennej: select
Bardziej szczegółowoAplikacje www laboratorium
Aplikacje www laboratorium Konfigurowanie zabezpieczeń w oparciu o JAAS w serwerze GlassFish Zabezpieczanie aplikacji webowych z wykorzystaniem JASS jest w podstawowych zastosowaniach procesem dwuetapowym.
Bardziej szczegółowoRelacyjne bazy danych. Podstawy SQL
Relacyjne bazy danych Podstawy SQL Język SQL SQL (Structured Query Language) język umożliwiający dostęp i przetwarzanie danych w bazie danych na poziomie obiektów modelu relacyjnego tj. tabel i perspektyw.
Bardziej szczegółowoStruktura drzewa w MySQL. Michał Tyszczenko
Struktura drzewa w MySQL Michał Tyszczenko W informatyce drzewa są strukturami danych reprezentującymi drzewa matematyczne. W naturalny sposób reprezentują hierarchię danych toteż głównie do tego celu
Bardziej szczegółowoBackend Administratora
Backend Administratora mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 W tym celu korzystając z konsoli wydajemy polecenie: symfony generate:app backend Wówczas zostanie stworzona
Bardziej szczegółowoSQL 4 Structured Query Lenguage
Wykład 5 SQL 4 Structured Query Lenguage Instrukcje sterowania danymi Bazy Danych - A. Dawid 2011 1 CREATE USER Tworzy nowego użytkownika Składnia CREATE USER specyfikacja użytkownika [, specyfikacja użytkownika]...
Bardziej szczegółowoPlan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,
Mój projekt przedstawia bazę danych noclegów składającą się z 10 tabel. W projekcie wykorzystuje program LibreOffice Base do połączenia psql z graficznym interfejsem ( kilka formularzy przedstawiających
Bardziej szczegółowoOdnawialne Źródła Energii I rok. Tutorial PostgreSQL
Tutorial PostgreSQL 1. Instalacja na własnym komputerze: a. Zainstaluj program ze strony: https://www.postgresql.org/download/ Wersja odpowiednia dla systemu operacyjnego Linux, Mac, Windows Przy pierwszym
Bardziej szczegółowoPolitechnika Częstochowska. Projektowanie systemów użytkowych II
Politechnika Częstochowska Wydział Inżynierii Mechanicznej i Informatyki Projektowanie systemów użytkowych II Zdalny wybór Prac Dyplomowych Diana Kisiała Tomasz Jewiarz Jacek Kucharzewski Informatyka,
Bardziej szczegółowoZałożenia do ćwiczeń: SQL Server UWM Express Edition: 213.184.8.192\SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.
Cel: polecenia T-SQL Założenia do ćwiczeń: SQL Server UWM Express Edition: 213.184.8.192\SQLEXPRESS Authentication: SQL Server Authentication Username: student01,, student21 Password: student01,., student21
Bardziej szczegółowo1. Sprawdzenie ustawień konfiguracyjnych. Uruchomienie wiersza poleceń:..\ścieżka\bin>mysqladmin variables
MYSQL 1 1. Sprawdzenie ustawień konfiguracyjnych Uruchomienie wiersza poleceń:..\ścieżka\bin>mysqladmin variables 2 2. Wstępna konfiguracja Po zainstalowaniu aplikacji należy przed uruchomieniem wykonać
Bardziej szczegółowoBazy danych 10. SQL Widoki
Bazy danych 10. SQL Widoki P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06 Widoki, AKA Perspektywy W SQL tabela, która utworzono za pomoca zapytania CREATE TABLE, nazywa się tabela
Bardziej szczegółowoBazy danych. Polecenia SQL
Bazy danych Baza danych, to miejsce przechowywania danych. Dane w bazie danych są podzielone na tabele. Tabele składają się ze ściśle określonych pól i rekordów. Każde pole w rekordzie ma ściśle ustalony
Bardziej szczegółowoWykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze
Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze 1 Funkcje i procedury pamiętane Następujące polecenie tworzy zestawienie zawierające informację o tym ilu jest na naszej hipotetycznej
Bardziej szczegółowoZrąb JavascriptMVC. Krzysztof Płocharz. 6 kwiecień 2009. Uniwersytet Warszawski
Uniwersytet Warszawski 6 kwiecień 2009 Spis Treści 1 MVC Jak to wygląda w JavascriptMVC 2 Prawie jak klasy 3 Hierarchia Widoki Kontrolery Modele 4 Struktura katalogów Generatory kodu Generatory dokumentacji
Bardziej szczegółowoSAP BASIS Architektura systemu klient Server
SAP BASIS Architektura systemu klient Server Platformy systemowe: Microsoft Windows Server, UNIX, Linux Platformy bazodanowe: Microsoft SQL Server, Oracle, IBM DB2 System SAP WSB: System operacyjny: Windows
Bardziej szczegółowoJavaScript funkcyjność
JavaScript funkcyjność WWW 9 kwietnia 2014 Możliwości tworzenia dynamicznych stron WWW HTML i CSS. Skrypty CGI (Perl, PHP). Serwery (django, java). Plug-iny. Ksiażka Większość przykładów pochodzi z ksiażki:
Bardziej szczegółowoI.Wojnicki, PHP. Smarty. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie. 28 marca 2014
Igor Wojnicki (AGH, KIS) Smarty 28 marca 2014 1 / 33 Smarty Igor Wojnicki Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie 28 marca 2014 $Id: smarty.tex,v 1.2 2013/06/22 22:09:45 wojnicki
Bardziej szczegółowoCREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Zestaw ćwiczeń1 Dzięki DDL (Data Definition Language) można operować na strukturach, w których dane są przechowywane czyli np. dodawać, zmieniać i kasować tabele lub bazy. Najważniejsze polecenia tej grupy
Bardziej szczegółowoKOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów
KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów SQL3 wprowadza następujące kolekcje: zbiory ( SETS ) - zestaw elementów bez powtórzeń, kolejność nieistotna listy ( LISTS ) - zestaw
Bardziej szczegółowoPODSTAWY BAZ DANYCH 13. PL/SQL
PODSTAWY BAZ DANYCH 13. PL/SQL 1 Wprowadzenie do języka PL/SQL Język PL/SQL - rozszerzenie SQL o elementy programowania proceduralnego. Możliwość wykorzystywania: zmiennych i stałych, instrukcji sterujących
Bardziej szczegółowoBazy danych 7. SQL podstawy
Bazy danych 7. SQL podstawy P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06 Structured Query Language Używane standardy: SQL92 SQL99 SQL:2003 Żaden dostawca nie jest w pełni zgodny
Bardziej szczegółowoProgramowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz
Programowanie komponentowe Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz Struktura wykładu 1. Utworzenie użytkowników i ról na serwerze aplikacji Sun Java System Application
Bardziej szczegółowoZaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I
Wydział Informatyki Politechnika Białostocka Zaawansowane bazy danych i hurtownie danych MySQL studia zaoczne II stopnia, sem. I Plan wykładu 1. MySQL: funkcje, procedury, wyzwalacze 2. HTML : tworzenie
Bardziej szczegółowoWykład 05 Bazy danych
Wykład 05 Bazy danych Tabela składa się z: Kolumn Wierszy Wartości Nazwa Wartości Opis INT [UNSIGNED] -2^31..2^31-1 lub 0..2^32-1 Zwykłe liczby całkowite VARCHAR(n) n = długość [1-255] Łańcuch znaków o
Bardziej szczegółowoOracle PL/SQL. Paweł Rajba.
Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 8 Wprowadzenie Definiowanie typu obiektowego Porównywanie obiektów Tabele z obiektami Operacje DML na obiektach Dziedziczenie -
Bardziej szczegółowoWordpress. Wstęp do tworzenia pluginów. Piotr Wasilewski wasilewski.piotrek (at) gmail.com
Wstęp do tworzenia pluginów Piotr Wasilewski wasilewski.piotrek (at) gmail.com Akademickie Stowarzyszenie Informatyczne www.asi.pwr.wroc.pl Wrocław, 14 kwietnia 2011 1 2 3 4 tworzyć własną wtyczkę Czego
Bardziej szczegółowo1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3
cur.executescript(""" DROP TABLE IF EXISTS uczen; CREATE TABLE IF NOT EXISTS uczen ( Uniwersytet Technologiczno-Przyrodniczy im. J.J. Śniadeckich w Bydgoszczy Instrukcja do ćwiczeń laboratoryjnych Przedmiot
Bardziej szczegółowoAutomatyka i Robotyka ROK III TEMAT: TWORZENIE I ZARZĄDZANIE INTERNETOWĄ BAZĄ DANYCH
Wydział Inżynierii Mechanicznej i Robotyki Jakub Topolski Automatyka i Robotyka ROK III GR 22/I Ćwiczenie 4 SIECI KOMPUTEROWE I BAZY DANYCH TEMAT: TWORZENIE I ZARZĄDZANIE INTERNETOWĄ BAZĄ DANYCH 1. Cel
Bardziej szczegółowoZagadnienia. Konstrukcja bibliotek mysql i mysqli w PHP. Dynamiczne generowanie stron. Połączenie, zapytanie i sesja
Zagadnienia Konstrukcja bibliotek mysql i mysqli w PHP Dynamiczne generowanie stron Połączenie, zapytanie i sesja Podstawowe opakowanie dla zapytań SQL w PHP Zarządzania uŝytkownikami Włamania do mysql
Bardziej szczegółowoSystemy baz danych Prowadzący: Adam Czyszczoń. Systemy baz danych. 1. Import bazy z MS Access do MS SQL Server 2012:
Systemy baz danych 16.04.2013 1. Plan: 10. Implementacja Bazy Danych - diagram fizyczny 11. Implementacja Bazy Danych - implementacja 2. Zadania: 1. Przygotować model fizyczny dla wybranego projektu bazy
Bardziej szczegółowoWprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/
Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Aplikacja internetowa tworzona na podstawie bazy danych. Programowanie komponentowe 2, Zofia
Bardziej szczegółowoWielojęzykowość w aplikacjach J2EE. Tomasz.Skutnik@e-point.pl
e-point SA 7 marca, 2009 Co to jest duży system? Domeny narodowe Warianty językowe Funkcje (ekrany) Klucze lokalizacyjne Tabele językowe w bazie danych Gdzie mogą wystąpić problemy? Środowisko uruchomieniowe
Bardziej szczegółowoSzkolenie. IBM Lotus - Podstawy projektowania aplikacji w Domino Designer 8.5. Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje
Szkolenie IBM Lotus - Podstawy projektowania aplikacji w Domino Designer 8.5 Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje Opis szkolenia Szkolenie dla początkujących projektantów
Bardziej szczegółowoWykład 3 2014-04-25 12:45 BD-1 W_3
Wykład 3 SQL - język operacji na bazach danych Schemat przykładowej bazy danych Uczelnia Skrypt SQL - utworzenie bazy Uczelnia Polecenia selekcji i projekcji Interakcyjny dostęp do bazy danych 2014-04-25
Bardziej szczegółowo