diff --git a/README.md b/README.md index 022be1b..8adeb16 100644 --- a/README.md +++ b/README.md @@ -109,4 +109,6 @@ Hotové otázky 11\. Psychologické a ergonomické aspekty používání uživatelských rozhraní. Speciální uživatelská rozhraní a jejich testování. (A4B39TUR) -12\. Tvorba webových aplikací: Architektura webové aplikace, klientská část webové aplikace, W3C doporučení, webové skriptovací jazyky. Grafická a strukturální stránka prezentace. (A4B39WA1) \ No newline at end of file +12\. Tvorba webových aplikací: Architektura webové aplikace, klientská část webové aplikace, W3C doporučení, webové skriptovací jazyky. Grafická a strukturální stránka prezentace. (A4B39WA1) + +13\. Jazyk PHP, server-klient interakce. Šablony, MVC, frameworky, oddělení prezentační a aplikační logiky. Webové služby, AJAX. (A4B39WA1) diff --git a/Softwarove systemy/13/13.lyx b/Softwarove systemy/13/13.lyx new file mode 100644 index 0000000..62f9a91 --- /dev/null +++ b/Softwarove systemy/13/13.lyx @@ -0,0 +1,294 @@ +#LyX file created by tex2lyx 2.0.3 +\lyxformat 413 +\begin_document +\begin_header +\textclass scrreprt +\begin_preamble + + +\usepackage[english,czech]{babel} + + + +\end_preamble +\use_default_options false +\language czech +\language_package default +\inputencoding auto +\fontencoding default +\font_roman default +\font_sans default +\font_typewriter default +\font_default_family default +\font_sc false +\font_osf false +\font_sf_scale 100 +\font_tt_scale 100 +\graphics default +\paperfontsize default +\spacing single +\use_hyperref 0 +\papersize default +\use_geometry false +\use_amsmath 1 +\use_esint 1 +\use_mhchem 0 +\use_mathdots 0 +\cite_engine basic +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\use_refstyle 0 +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\quotes_language german +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard + + +\begin_inset ERT +status collapsed + +\begin_layout Standard + + +\backslash +setcounter{chapter}{12} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Chapter + +Jazyk PHP, server-klient interakce. Šablony, MVC, frameworky, oddělení prezentační a aplikační logiky. Webové služby, AJAX. +\end_layout + +\begin_layout Section + +Úvod +\end_layout + +\begin_layout Standard + +Současná architektura webu je založena na vztahu +\series bold +klient - server +\series default +. Jediný způsob komunikace - tenký klient vysílá požadavky a server odpovídá (změna od HTML5). +\end_layout + +\begin_layout Standard + +Je možné dělit web na +\series bold +statický +\series default +, +\series bold +dynaický +\series default + a +\series bold +webové aplikace +\series default + (s ajaxem). +\end_layout + +\begin_layout Standard + +Mnoho standardů je specifikováno v RFC (Request for Comments); např HTTP, HTML, SMTP. +\end_layout + +\begin_layout Section + +Obsah +\end_layout + +\begin_layout Subsection + +PHP (Personal Home Page) +\end_layout + +\begin_layout Itemize + +pole jsou asociativní, tedy ve skutečnosti se jedná o (hašovací) tabulky, které ukládají páry klíč -> hodnota. +\end_layout + +\begin_layout Itemize + +slabě dynamicky typovaný +\end_layout + +\begin_layout Itemize + +Imperativní (procedurální) a skriptovací jazyk, od PHP 5.0 podpora objektů +\end_layout + +\begin_layout Itemize + +C-like syntax +\end_layout + +\begin_layout Itemize + +Od PHP 5.3.0 - namespaces +\end_layout + +\begin_layout Itemize + +magické metody - __ , __get __set __isset __unset __clone (shallow copy) +\end_layout + +\begin_layout Itemize + +má modifikátory viditelnosti, final +\end_layout + +\begin_layout Itemize + +typi hinting u parametrů funkcí (kontrola typů), neuspokojení může způsobit fatal error +\end_layout + +\begin_layout Itemize + +Magické konstanty - __LINE__, __FILE__, __DIR__, __FUNCTION__, __CLASS__, __METHOD__, __NAMESPACE__ +\end_layout + +\begin_layout Itemize + +velikou výhodou ve široká podpora a komunita +\end_layout + +\begin_layout Subsection + +bezpečnost s PHP +\end_layout + +\begin_layout Description + + +\begin_inset ERT +status collapsed + +\begin_layout Standard + +Cross-side scripting +\end_layout + +\end_inset + + narušení html stránky pomocí uživatelského vstupu (html tagy,JS). Dá se bojovat funkcí +\emph on +htmlspecialchars +\emph default +. +\end_layout + +\begin_layout Description + + +\begin_inset ERT +status collapsed + +\begin_layout Standard + +SQL injection +\end_layout + +\end_inset + + ovlivňování SQL databáze nezamýšlený způsobem pomocí uživatelského vstupu. Dá se bojovat pomocí +\emph on +prepareStatement +\emph default + nebo +\emph on +escapestring +\emph default +. Někdo využívá na funkci +\emph on +magicquotes +\emph default +, která automaticky escapuje veškeré parametry GET a POST požadavků. +\end_layout + +\begin_layout Subsection + +MVC +\end_layout + +\begin_layout Itemize + +výhody - dobrá dělba práce + v aplikaci se častěji mění view + lehce umožňuje předkompilovat části kódu, takže zrychlení (a odstranění komentářů) +\end_layout + +\begin_layout Itemize + +Page Controller(URL má vlastní controller) X Front Controller(jeden hlavní controller) X Composite View(stránka je složená z více view) +\end_layout + +\begin_layout Itemize + +super šablony Smarty +\end_layout + +\begin_layout Itemize + +celé MVC - Zend, Nette +\end_layout + +\begin_layout Subsection + +frameworks +\end_layout + +\begin_layout Itemize + +Doctrine - ORM +\end_layout + +\begin_layout Itemize + +ZEND, NETTE - řeší lokalizaci, MVC, strukturu projektu, formuláře, ajax, \SpecialChar \ldots{} + +\end_layout + +\begin_layout Subsection + +Webové služby +\end_layout + +\begin_layout Standard + +Toto téma je již zpracováno. +\end_layout + +\begin_layout Subsection + +Ajax +\end_layout + +\begin_layout Standard + +Asynchronous JavaScript and XML - provádění requestů za účelem jiným než je načítání celé stránky (úprava DOMu na základě nových dat ze serveru, asynchroní odesílání dat). +\end_layout + +\end_body +\end_document diff --git a/Softwarove systemy/13/13.pdf b/Softwarove systemy/13/13.pdf new file mode 100644 index 0000000..c1779e8 Binary files /dev/null and b/Softwarove systemy/13/13.pdf differ diff --git a/Softwarove systemy/13/13.tex b/Softwarove systemy/13/13.tex new file mode 100644 index 0000000..f80f6a9 --- /dev/null +++ b/Softwarove systemy/13/13.tex @@ -0,0 +1,69 @@ +\documentclass{scrreprt} + +\usepackage[english,czech]{babel} +\usepackage[utf8]{inputenc} +\usepackage{graphicx} + +\begin{document} + +\setcounter{chapter}{12} +\chapter{Jazyk PHP, server-klient interakce. Šablony, MVC, frameworky, oddělení prezentační a aplikační logiky. Webové služby, AJAX.} + +\section{Úvod} +Současná architektura webu je založena na vztahu \textbf{klient - server}. Jediný způsob komunikace - tenký klient vysílá požadavky a server odpovídá +(změna od HTML5). + +Je možné dělit web na \textbf{statický}, \textbf{dynaický} a \textbf{webové aplikace} (s ajaxem). + +Mnoho standardů je specifikováno v RFC (Request for Comments); např HTTP, HTML, SMTP. + +\section{Obsah} + +\subsection{PHP (Personal Home Page)} +\begin{itemize} + \item pole jsou asociativní, tedy ve skutečnosti se jedná o (hašovací) tabulky, které ukládají páry klíč -> hodnota. + \item slabě dynamicky typovaný + \item Imperativní (procedurální) a skriptovací jazyk, od PHP 5.0 podpora objektů + \item C-like syntax + \item Od PHP 5.3.0 - namespaces + \item magické metody - \_\_ , \_\_get \_\_set \_\_isset \_\_unset \_\_clone (shallow copy) + \item má modifikátory viditelnosti, final + \item typi hinting u parametrů funkcí (kontrola typů), neuspokojení může způsobit fatal error + \item Magické konstanty - \_\_LINE\_\_, \_\_FILE\_\_, \_\_DIR\_\_, \_\_FUNCTION\_\_, \_\_CLASS\_\_, \_\_METHOD\_\_, \_\_NAMESPACE\_\_ + \item velikou výhodou ve široká podpora a komunita +\end{itemize} + + +\subsection{bezpečnost s PHP} +\begin{description} + \item[Cross-side scripting] narušení html stránky pomocí uživatelského vstupu (html tagy,JS). Dá se bojovat funkcí \emph{htmlspecialchars}. + \item[SQL injection] ovlivňování SQL databáze nezamýšlený způsobem pomocí uživatelského vstupu. Dá se bojovat pomocí \emph{prepareStatement} nebo + \emph{escape_string}. Někdo využívá na funkci \emph{magic_quotes}, která automaticky escapuje veškeré parametry GET a POST požadavků. +\end{description} + + +\subsection{MVC} +\begin{itemize} + \item výhody - dobrá dělba práce + v aplikaci se častěji mění view + lehce umožňuje předkompilovat části kódu, takže zrychlení (a odstranění + komentářů) + \item Page Controller(URL má vlastní controller) X Front Controller(jeden hlavní controller) X Composite View(stránka je složená z více view) + \item super šablony Smarty + \item celé MVC - Zend, Nette +\end{itemize} + + +\subsection{frameworks} +\begin{itemize} + \item Doctrine - ORM + \item ZEND, NETTE - řeší lokalizaci, MVC, strukturu projektu, formuláře, ajax, \ldots +\end{itemize} + +\subsection{Webové služby} +Toto téma je již zpracováno. + +\subsection{Ajax} +Asynchronous JavaScript and XML - provádění requestů za účelem jiným než je načítání celé stránky (úprava DOMu na základě nových dat ze serveru, +asynchroní odesílání dat). + +\end{document} +