EPI: Interfejs Graczny 2008/2009 dania HTTP oraz obsªuga stanu

Podobne dokumenty
EPI: Interfejs Graficzny Wykład nr 8 Warstwa widoku

Healthix Consent Web-Service Specification

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

Wykład nr 6 Trasowanie i warstwa kontrolera routes.rb i ActionController

Programowanie w Internecie

Wprowadzenie do Internetu Zajęcia 5

Wykład nr 7 Trasowanie i warstwa kontrolera routes.rb i ActionController

Serwer WWW na przykªadzie Django

Serwer WWW na przykªadzie Django cz.3

Przykład programu w PHP. Wykład10.PHP ciągdalszy,str.1

Programowanie w Ruby

Architektura aplikacji sieciowych. Architektura klient-serwer

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

Równoległość w środowisku rozproszonym. Jarosław Kuchta Programowanie Współbieżne

Kurs rozszerzony języka Python

Technologie sieciowe Sprawozdanie z labolatorium. Lista 5

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

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

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

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

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

Serwery aplikacji. dr Radosław Matusik. radmat

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

Testowanie aplikacji. Kurs języka Ruby

Programowanie w Ruby

Bezpieczeństwo frameworków WEBowych Java na przykładzie ataku CSRF

Obiektowe bazy danych

HTTP W 5-CIU PYTANIACH MICHAŁ KOPACZ

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

CGI i serwlety. Plan wykładu. Wykład prowadzi Mikołaj Morzy. Przykład: serwlety vs. szablony. Implementacja logiki prezentacji

JavaScript - wykład 4. Zdarzenia i formularze. Obsługa zdarzeń. Zdarzenia. Mysz. Logiczne. Klawiatura. Beata Pańczyk

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

Internetowe bazy danych

Bazy Danych i Usługi Sieciowe

SVN - wprowadzenie. 1 Wprowadzenie do SVN. 2 U»ywanie SVN. Adam Krechowicz. 16 lutego Podstawowe funkcje. 2.1 Windows

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

Formularze w PHP dla początkujących

PayPo API v.2.0. Dokument zawiera specyfkaccę techniczną REST API PayPo.pl w wersci 2.0. Wersja dokumentu. Wykaz zmian

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

Laboratorium nr 3 Podstawy Ruby on Rails

Systemy internetowe Wykład 3 PHP

Aplikacje internetowe - laboratorium

ROZSZERZAJĄC FUNKCJONALNOŚCI MEMCACHED

Internetowe bazy danych

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

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

Projekt strony internetowej firmy organizującej przyjęcia

EPI: Interfejs Graczny Podstawy Ruby on Rails

FORMULARZE Formularz ma formę ankiety, którą można wypełnić na stronie. Taki formularz może być np. przesłany pocztą elektroniczną .

Aplikacje internetowe

1. Informacje ogólne.

PSI Protokół HTTP + wstęp do przedmiotu. Kraków, 10 październik 2014 mgr Piotr Rytko Wydział Matematyki i Informatyki UJ

Specyfikacja instalacji usługi SMS Premium w Przelewy24.pl

Orange Send MMS. Autoryzacja. Metoda HTTP. Parametry wywołania. API wyślij MMS dostarcza wiadomości MMS. Basic POST

Quiz Aplikacja internetowa

SVN - wprowadzenie. 1 Wprowadzenie do SVN. 2 U»ywanie SVN. Adam Krechowicz 24 czerwca Podstawowe funkcje. 2.1 Windows

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

Aplikacje WWW - laboratorium

Przedmiot: Programowanie usług internetowych - Delphi Przygotował: K. Strzałkowski Rok V. Semestr IX. Wydział ZiMK

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

Dokumentacja Skryptu Mapy ver.1.1

Raport z Testów Penetracyjnych XXXXX

Obsługa incydentów bezpieczeństwa: część I, z punktu widzenia menadżera. OWASP The OWASP Foundation

Aplikacje www laboratorium

Szybko, prosto i tanio - ale czy na pewno?

Zmienne i stałe w PHP

Architektura komunikacji

Testy aplikacji webowych

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

Baza danych do przechowywania użytkowników

Bazy danych, 4. wiczenia

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

Dokumentacja smsapi wersja 1.4

Współpraca PHP z MySql

Wykład 6: PHP: praca z bazą danych MySQL, cz.2

Studium Podyplomowe Aplikacje i Us ugi Internetowe Tworzenie witryn internetowych 2012/2013. CakePHP część II

XML-RPC: Zdalne wykonywanie procedur

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

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

Wykład 03 JavaScript. Michał Drabik

Technologie Informacyjne

Infrastruktura aplikacji WWW

Technologie internetowe

HTTP, CGI, Perl. HTTP HyperText Transfer Protocol. CGI Common Gateway Interface. Perl Practical Extraction and Report Language

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

Formularze. 1. Formularz HTML

AIUI WebAPI V1 {#3-1} {#3-2} {#3-2-2} AIUI. Github WebAPI. 1. APPID CurTime, Param CheckSum HTTP. 3. http https. Http Request Header

Podstawy technologii WWW

CREATE USER

Dokument hipertekstowy

OpenPoland.net API Documentation

Pracownia internetowa w ka dej szkole (edycja 2004)

BIG SISTER SYSTEM MONITORINGU SIECI DLA LINUX/UNIX I WINDOWS. Michał (traq) Żuchowski. traq@shl.pl

Bazy Danych i Usługi Sieciowe

Java Agent DEvelopment Framework Systemy Agentowe

Logowanie zdarzeń w aplikacjach J2EE. 4Developers, 4 kwietnia 2011

EPI: Interfejs Graczny 2009/2010 Podstawy Rubiego

Bazy Danych i Usługi Sieciowe

Transkrypt:

EPI: Interfejs Graczny 2008/2009 dania HTTP oraz obsªuga stanu Agnieszka Figiel, Aleksander Pohl 6 stycznia 2009

GET oraz POST ró»nica techniczna: tre±» dania GET jest zakodowane w URL-u tre±» dania POST jest wysyªana w ciele wiadomo±ci rekomendowane u»ycie wg HTTP 1.1 GET tylko do pobierania informacji; bezpieczne, idempotentne POST zarówno do pobierania informacji, jak i akcji posiadaj cych efekty uboczne (modykacja danych, usuwanie, etc.) http://www.w3.org/protocols/rfc2616/rfc2616-sec9.html

Wysyªanie formularzy GET <form method="get"> Title:<input name="title_get"> <input type="submit"> </form> GET /form_test.html?title_get=yada HTTP/1.1

Wysyªanie formularzy POST <form method="post"> Title:<input name="title_post"> <input type="submit"> </form> POST /form_test.html HTTP/1.1... Content-Type: application/x-www-form-urlencoded Content-Length: 15 title_post=yada

Linki GET <a href="link_test.html?title=yada">link test</a> GET /link_test.html?title=yada HTTP/1.1

Linki POST (mniej wi cej) <a href="link_test.html?title=yada" onclick=" var f = document.createelement('form'); this.parentnode.appendchild(f); f.method = 'POST'; f.action = this.href; f.submit(); return false; ">link test</a> POST /link_test.html?title=yada HTTP/1.1

GET i POST w formularzach RoR POST: <% form_tag :action => 'create' do %>... <% end %> GET: <% form_tag({:action => 'show'}, :method=>:get) do %>... <% end %>

GET i POST w linkach RoR GET <%= link_to 'Back', :action => 'list' %> POST <%= link_to 'Back', {:action => 'list'}, :method => :post %>

Formularz przykªad <% form_for :book do f %> <%= f.text_field :title %> <%= f.select :author_id, @authors %> <%= f.submit "Create" %> <% end %> <form action="/books/create" method="post"> <input name="book[title]" size="30" type="text"/> <select name="book[author_id]"> <option value="1">alan Alexander Milne</option> <option value="2">j.k. Rowling</option> </select> <input name="commit" type="submit" value="create"/> </form>

danie POST /books/create HTTP/1.1 Host: localhost:3000 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5 Accept-Language: pl,en-us;q=0.7,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://localhost:3000/books/new Cookie: _library_session_id=d72a8d72e181f333bf4f5d01d29e163d Content-Type: application/x-www-form-urlencoded Content-Length: 67 book%5btitle%5d=winnie+the+pooh&book%5bauthor_id%5d=1&commit=create

dania i stan w RoR kontroler specjalne metody kontrolera: request headers params response template session cookies ash

danie request.host, request.port,... request.method, request.get?, request.post?,... request.env hasz zawieraj cy zmienne ±rodowiskowe <% for key, value in request.env %> <%= key %></td><td><%= value %></td></tr> <% end %>

dania GET i POST akcja, która nie jest bezpieczna (destroy, update, create) powinna werykowa, czy» danie zostaªo wysªane w sposób poprawny (za pomoc POST, a nie GET) pierwszy sposób (w kontrolerze): verify :method => :post, :only => [ :destroy, :create, :update ], :redirect_to => { :action => :index } drugi sposób (w akcji): def some_action end if!request.post? end... redirect_to :action => :list and return

Parametry» dania (params) <% form_for :book do f %> <%= f.text_field :title %> <%= f.select :author_id, @authors %> <%= f.submit "Create" %> <% end %> <form action="/books/create" method="post"> <input name="book[title]" size="30" type="text"/> <select name="book[author_id]"> <option value="1">alan Alexander Milne</option> <option value="2">j.k. Rowling</option> </select> <input name="commit" type="submit" value="create"/> </form> { "commit" => "Create", "action"=>"create", "controller"=>"books", "book"=> { "title"=>"harry Potter and the Philosopher's Stone", "author_id"=>"2" } } params["book"]["title"]

Stan protokóª HTTP jest bezstanowy potrzebny jest dodatkowy mechanizm do obsªugi stanu np. do przechowywania informacji o zalogowany u»ytkowniku, zawarto±ci jego koszyka, itp. obsªuga sesji zagnie»d»anie identykatora sesji w URL-u zagnie»d»anie w niewidocznych polach formularza u»ycie ciasteczek (cookies)

Sesja (session) przechowuje dane pomi dzy kolejnymi» daniami posiada struktur tablicy asocjacyjnej mo»e przechowywa obiekt dowolnego typu session['user_id']=current_user.id identykator sesji jest przechowywany w cookie i wysyªany przy ka»dym» daniu ró»norodne opcje przechowywania pliki, baza danych, cookie domy±lnie cookie nie trzeba usuwa umarªych sesji

Ciasteczka (cookies) przechowywane w przegl darce u»ytkownika przesyªane z ka»dym» daniem posiadaj struktur tablicy asocjacyjnej mog przechowywa wyª cznie ªa«cuchy #set remember me token cookies[:auth_token] = { :value => @session [:user].remember_token, :expires => @session [:user].remember_token_expires } #find user by remember me token stored in cookie user = User.find_by_remember_token(cookies[:auth_token])

ash ActionController::Flash pozwala na przekazywane tymczasowych obiektów pomi dzy akcjami wszystko co zostanie umieszczone w ashu, zostanie udost pnione nast pnej akcji a pó¹niej wyczyszczone najcz ±ciej wykorzystywany do ustawiania komunikatów w akcjach, po których nast puje przekierowanie do innej akcji ustawianie wiadomo±ci wygl da jak wstawianie ich do tablicy asocjacyjnej: flash[:notice]='you have successfully logged in!' flash[:error]='login is invalid!'

Przykªad wykorzystania ash-a class WeblogController < ActionController::Base def create # save post end flash[:notice] = "Successfully created post" redirect_to :action => "display", :params => {:id => post.id} end def display #flash is still set end <% if flash[:notice] %> <div class="notice"><%= flash[:notice] %></div> <% end %>

U»ywanie loggera do debugowania przegl danie ko«ca pliku: *nix: tail -f log/development.log radrails/aptana: opcja tail w menu kontekstowym u»ycie loggera w kontrolerze: logger.debug "user.id = #{user.id}" logger.info "Starting process fubar..." logger.warn "No results found for XYZ" logger.error err.message logger.fatal "Database down" inspekcja zmiennych: @var.inspect http://maintainable.com/articles/rails_logging_tips

Rozszerzenia Firefox-a przydatne do debugowania FireBug WebDeveloper Live HTTP Headers