forked from janfabian/oi-bszz
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
FROM: Ales Fiser
- Loading branch information
Showing
4 changed files
with
366 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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} | ||
|