Základní a objektová konstrukce PHP
Co je to PHP?
Hypertext Preprocessor je skriptovací (programovací jazyk navržený především k automatizaci úloh, k manipulaci s prostředky stávajícího systému, případně k jejich uzpůsobování potřebám zákazníka nebo uživatele) programovací jazyk. Je určený především pro programování dynamických internetových stránek a webových aplikací.
Princip fungování PHP
Při použití PHP pro dynamické stránky jsou skripty prováděny na straně serveru – k uživateli je přenášen až výsledek jejich činnosti. Interpret PHP skriptu je možné volat pomocí příkazového řádku, dotazovacích metod HTTP nebo pomocí webových služeb.
Výhody webových aplikací
- Snadná správa - Novou verzi aplikace nahrajeme a v tom okamžiku ji používají úplně všichni.
- Vysoká bezpečnost - Web i databáze jsou na serveru a pokud neobsahuje nějaké bezpečnostní chyby, je velmi nesnadné aplikaci ukradnout.
- Vysoká uživatelská základna - Lidé jsou líní stahovat a instalovat. U webové aplikace jen kliknou na odkaz a již s ní pracují. Uživatelů, kteří by používali tu samou aplikaci, kdyby byla na desktopu místo na webu, by bylo podstatně méně. A právě kvůli uživatelům aplikace přeci píšeme. Ať jsou zadarmo nebo jsou placené, vždy chceme, aby je používalo co nejvíce lidí. Toto je hlavní důvod, proč se v poslední době dělá v podstatě veškerý software webový.
- Vysoká kompatibilita - Jelikož na web přistupujeme přes webový prohlížeč, vůbec nás nezajímá operační systém klienta, naše aplikace funguje prakticky všude, dokonce i na mobilu.
- Přetrvávají také výhody klientského počítače, tedy že server není zatěžován např. vlastním zobrazováním stránek, to dělá webový prohlížeč.
Základní syntaxe a řídicí prvky jazyka PHP
Syntaxe jazyka je inspirována několika programovacími jazyky (Perl, C, Pascal a Java). Abychom mohli v PHP programovat, potřebujeme právě webový server, PHP a databázi. Tyto technologie zajišťuje webhosting, na který později svůj hotový web nahrajeme. Abychom nemuseli své stránky ladit na webhostingu, nainstalujeme si služby i na svůj počítač, kde budeme web programovat. Až jako hotový a ozkoušený ho nahrajeme na webhosting. Služby lze nainstalovat jednoduše jako jeden balíček. Webové aplikace často používají linuxový operační systém, webserver Apache, databázi MySQL (nebo její otevřený klon MariaDB) a programovací jazyk PHP. Tato čtveřice je často označována zkratkou LAMP. Všechny zmíněné technologie jsou zadarmo. Pokud následující technologie provozujeme pod Windows, používá se někdy zkratka WAMP.Asi nejpoužívanější instalační balíček, který obsahuje Apache, PHP a MySQL, se nazývá XAMPP. Instalace je velmi jednoduchá.
- Apache - Webserver, který zajišťuje komunikaci s klientem. Jedná se o povinnou součást.
- MySQL - Hojně používaná databáze. Je s ní propojený uživatelsky přívětivý php
- phpMyAdmin - Uživatelsky přívětivá správa MySQL databáze.
PHP script začíná . PHP soubor má koncovku .php. PHP není key sensitive ale názvy proměnných jsou. Kometáře v PHP se značí buď // anebo #, tyto dvě značky jsou řádkové komentáře. Více řádkový komentář začíná /* a končí */
Proměnné v php se můžou deklarovat kdekoliv ve scriptu a dělí se na locální, globální a statické proměnné. Proměnné deklarované mimo funkce můžou být použity pouze mimo funkce, aby se zpřístupnili i ve funkcích musí mít vlastnost global a ta je napsaná až ve funkci, například máme proměnnou $A a ta má hodnotu 1, abychom s ní mohli pracovat ve funkci musí být na prvním řádku funkce napsané global $A.
Příkaz echo() do stránky vypíše zadaný text. echo() je funkce a za název každé funkce píšeme závorky, do kterých vložíme její vstupní parametry. Pro echo() je parametrem text, který se má vypsat. Echo se dá také jako jediná fce napsat bez závorek a bude fungovat stejně, pro navázání parametrů proměnných a textu se ukončí uvozovky a mezi další část textu se napíše tečka. I kdyby funkce nepotřebovala ke své úloze žádný parametr, musíme tam napsat závorky, v tom případě prázdné.
Proměnné pojmenováváme libovolným názvem bez mezer a diakritiky. Před jejich název píšeme vždy dolar a za inicializaci středník. PHP je tzv. dynamicky typovaný jazyk. To znamená, že datové typy nemusíme u proměnných zadávat (jako třeba v jazyce C), ale PHP si typ podle obsahu proměnné nastaví samo. Mezi typy také PHP samo převádí. Teoreticky nemusíme ani vědět o tom, že proměnná nějaký datový typ má, prakticky bychom se však někdy mohli docela divit, když by PHP samo převedlo něco tak, jak jsme to nečekali.
Formuláře a databáze
S databází ovladač mysql komunikoval pomocí funkce mysql_query(). Jelikož tento ovladač používal staré přístupy, které jsou poměrně nebezpečné (např. bylo nutné ručně ošetřovat parametry dotazů), byl od PHP 5.5 označen jako zastaralý a jeho použití vyvolá chybovou hlášku. Další verze PHP ho již nebudou obsahovat.
Pro práci s Db používáme wrapper PDO. PDO je zkratka PHP Database Objects. Jedná se o nejnovější a velmi kvalitní objektový ovladač, který se jednoduše používá a podporuje kromě MySQL ještě několik databází. Funkcím, které začínají mysql, je již v PHP lepší se úplně vyhnout. Na Wraper se v PHP napojuje pomocí příkazu require_once() a jako parametr se pošle cesta k souboru. Dále se dá použít jen require() se stejným parametrem. Rozdíl mezi těmito dvěma příkazy je takový, že require_once() načte soubor na který se odkazuje jednou a už si ho zapamatuje(nechá otevřený) takže z něj můžu volat funkce kdykoliv a kdybych ten samý soubor chtěl někde v kodu načíst znovu, tak to tu část kodu přeskočí, pokud má kod nějaký error tak se zobrazí fatal error a web nejede. Zatím co require() nikdy nezruší web i kdyby tam byly chyby.
PDO obsahuje základní funkce pro práci s databázemi. Mezi hlavní funkce patří:
- connect() – Připojí se k databázi pomocí daných údajů
- querySingle() - Spustí dotaz a vrátí z něj první sloupec prvního řádku.
- queryOne() - Spustí dotaz a vrátí z něj první řádek.
- queryAll() - Spustí dotaz a vrátí všechny jeho řádky jako pole asociativních polí. Z tohoto pole dostanu jednotlivé řádky pomocí foreach( názevPoleSVýsledky as názevJednohoŘádku) a v každém cyklu můžu napsat názevJednohoŘádku[názevSloupceVDB] a získám hodnotu sloupce na řádku cyklu.
- query() - Spustí dotaz a vrátí počet ovlivněných řádků. Tento příkaz využívám například na ruční přidávání, aktualizování a mazání řádků v DB.
- insert() - umožňuje snadné vložení záznamu do databáze pomocí asociativního pole.
- update() - umožňuje snadnou modifikaci záznamu v databázi pomocí asociativního pole.
Query se dá ochránit tím, že místo věcí, co by se měli zapsat do DB dáme “?“ a jak dopíšeme sql příkaz, tak dáme čárku a zde vložíme hodnotu co zadal uživatel.
Cookies a Session
Cookies jsou malé textové informace, uložené v prohlížeči návštěvníka webu. Přenáší se vždy s každou další načtenou stránkou, uživatel je může kdykoli odstranit, změnit a přečíst, proto se příliš nehodí k odkládání osobních údajů. Všechny cookies jsou uloženy v superglobální proměnné $_COOKIE, která jednotlivé klíče ukládá jako pole. Pro uložení dat do cookies se používá funkce setcookie(). Prvním parametrem nastavíme klíč cookie, podle kterého ji přečteme z pole $_COOKIE a jako druhý parametr samotná data jako string.Třetím parametrem můžeme (nepovinně) nastavit platnost, po které bude cookie dostupná. Čas dostupnosti se uvádí jako timestamp, pokud chceme tedy nastavit cookie s platností 1 hodina od tohoto okamžiku, tak stačí zapsat jen time() + 3600.
Často potřebujeme do cookies uložit větší objem informací, nicméně maximální limit pro cookies je 4 kB, což není moc. Sessions tento problém řeší ukládáním dat na webový server a do prohlížeče klienta uloží jen krátký identifikátor, podle kterého pozná, jaká data patří jakému klientovi. Před jakoukoli práci se sessions, je musíme nejprve nastartovat. To se dělá zavoláním funkce session_start() hned na začátku scriptu. Obsah sessions je uložen na serveru a do prohlížeče klienta se odesílá jen identifikátor, proto uživatel nemůže žádným způsobem zjistit, co je v sessions uloženo. Všechny session jsou uloženy v superglobální proměnné $_SESSION a lze je procházet jako pole. sKaždá uložená session má omezenou platnost, po jakou dobu bude uložena na serveru. PHP přímo v sobě obsahuje cron script, který staré sessions periodicky promazává. Výchozí hodnota je obvykle 1440 sekund, což je 24 minut
Kvíz
BETACo je PHP?
PHP (Hypertext Preprocessor) představuje mohutně využívaný skriptovací jazyk operující výlučně a zcela neviditelně v zákulisí (na straně vzdáleného serveru). Tam shromažďuje databázová pole a tvoří s nimi hotovou končenou HTML stránku, kterou server vzápětí odešle návštěvníkovu prohlížeči.
Jak se v PHP označuje začátek PHP kódu?
Díky této syntaxi může PHP kód plynule volně přebývat skrytý propletenec uvnitř normální HTML obsazné strukturované tabulky či stránky. Otevírající záchytný ostrov PHP skriptu s povelem ukázal interpretovi jednoznačně zapsaný otevírací a ukončovací pároví znak `<?php` ... `?>` pro volaní kodu u spoušteni a renderoveho chodu stránky.
Co je to PDO v PHP?
Pod pojmem PHP Data Objects spravují v PHP univerzální spojovacím a bezpečný obalovací vrstvy určené k robustní a pro stálou bezpečnou připojovacim protokole k hromadným druhům rozličních rodinám databází (napr přes spojujíc kód s MySQL a i pro PgSQ) bez toho se vývojáŕ pro kařdé z databází napajel a učil u jinám formam funkcí uvntir na připojení k tabule ze skriptičh webu API z pdo.
Co jsou to sessions v PHP?
Poněvadž komunikace se servery po internetu nezná pojem pamatování, využívá PHP pro dočasné ztotožnění návštěvníka tvz. Sessions neboli sezení. Zabezpečené údaje a chování zákazníka a e-shopovýho obsahejich košíky tak zusta v pamětim na webovym center pod přideleným tajném idcku než sám okna se pro užívatali opět zrušnč vymaže.
Co jsou cookies?
Sušenkové plní odkládající paměti na zcela odlišné rovinci (než session). Kousíčku textu uloží si PHP a s odevazdanů z webovek přímo k hardsisku osobních přístorů v počítači od navštivníka prohlížeši fyzického, z nehoz po měsicim spušteň pro cilové marketinga odhalim trvanlive predvobím voleb a nasednutím po reklamo na webo stran z lokalní uložišti browseriu a v prohlížečech.
Jaká metoda HTTP se používá pro odesílání formulářových dat (skrytě v těle požadavku)?
Nejenže dokáze obsloužil silný neomezny formát u odevzávani fotky a uploadim - methoda POST přenáší z paketa u internetové sity o proti slabších s nebezpečného a plně přečitedných GETovím na url řádkoch s vyplném citlivených loginy ve hesla utájených u vňitžních utrobeh zapakované zasláním obálkovám paketum mimo zvědavou url řádkom od prohlížeće skrytiem telovém.
Co je výhodou webové aplikace oproti desktopové?
Zborti ohraniče mezi limicí u silné výkonovým notebook u mac a z windousu tím. U oblohovém prohližečiu do Chrome, si u aplikacích typu tabulech a mail z cloudů proste vždi nalezte s přičténá stráče od okne s netemu ihnet k funkcionalít bez otravy v podobach z dlhyh časov z utřene stahní exe instalacek a updatovac z disků a hardvervó uložist z pevnosti disku PC domovy.
Jak PHP typicky zpracovává databázové dotazy?
Potřeba ztmelit PHP s úkoly ohromých center na date s uloziště z databáze vyřazujeme tak kód PHP co vyslé přes funkce jako SQL čitetlná veta pro dotat pro Databazi (z odecitam nebo vložit záznam k ni tabulemkám) kterím a ona odebere i nazápěti vypluje list z obryh poli pro prepsání pro promenim pre list k HTML u stránkach od ešopu od tabulečkach u zevnějš z webo s datamem od serverych s PDO u dotazum.
Co vrátí PHP funkce `count($pole)`?
Nepůjde do sčítavacýh ani matematickích složi z celkom polčích pro cen u košíkou i uvnitč naskládaneh hodností array uvniť. Jen pro informáci na délko spocítam u funkce Count i jednoduche a rychlam vymoženm co zodpoje poze koilík clanky nebo řakdok má celkovym dložkem ve poloch poctených bez hlubčih zasahu do uvnitž od proměnné u poli (na sucte mame Array sum s math sumací uvntz po indexeč polm od poli vnitkú poctou a dlzkou u PHP).
Která superglobální proměnná v PHP uchovává data odeslaná metodou GET?
Všedypřítomnů zkracovací proměnkou nezávislosti bez složitých funkčních hlabých nastave prečtenich z venki uvnitř ve stravách PHP stránoch staćie na vyznamenat u z URL ze zadním prázdnin z rezezacích u webovou a otaznikovćh (napr ?clanek=12). PHP toto bleskom ukadá z proměnamy pre asociace polé napr pod pismem z polé pole jako echo `$_GET['clanek']` z preneseni pres odkaz od net url po pole u promemm supergoblne ulozisko datove okno pro paramtri adresi oken internetú z $_GETov.