• Nebyly nalezeny žádné výsledky

Dynamické webové stránky PHP

N/A
N/A
Protected

Academic year: 2022

Podíl "Dynamické webové stránky PHP"

Copied!
29
0
0

Načítání.... (zobrazit plný text nyní)

Fulltext

(1)

Dynamické webové stránky PHP

Klára Pešková, Klara.Peskova@mff.cuni.cz Katedra softwaru a výuky informatiky, MFF UK

Základy tvorby webu, ZS 2021/22

(2)

Zobrazení webové stránky – klient-server

(3)

Zobrazení webové stránky – klient-server

(4)

Zobrazení webové stránky – klient-server

(5)

Protokoly

HTTP (Hypertext Transfer Protocol)

TCP (Transmission Control Protocol) - spolehlivý, správné pořadí doručování dat

aplikace pomocí něj mohou vytvořit obousměrné spojení

IP (Internet Protocol) - nespolehlivý, packety

TCP connection

HTTP request

HTTP response

Headers (požadavek klienta), cookies, data posílaná metodou POST

Headers a vyřízený požadavek (např. HTML soubor)

(6)

Webový server - dynamické stránky

Vytvoření dynamické stránky na základě požadavku od uživatele pomocí CGI:

Webový server (např. Apache) přijme HTTP Request.

Podle hlavičky (Headers) Requestu nastaví proměnné prostředí (environment variables), obsah GET nebo POST Requestu je CGI programu (skriptu) předán na standardním vstupu.

CGI skript dynamicky vygeneruje HTML stránku, může při tom používat například spojení s databází.

CGI skript potom pošle vygenerovanou HTML stránku na standardní výstup.

Hotová HTML stránka je webovým serverem odeslána jako HTTP Response.

(7)

Webový server - php

HTTP Request

GET stranky/index.php

/var/www/stranky/

HTTP Response

HTTP/1.1 200 OK

Content-Lenght: 1019 Content-Type: tex/html

<!DOCTYPE html>

<html>

… obsah souboru

vygenerovaný php skriptem

index.php

databáze

mod_php

Modul skriptovacího jazyka je součástí webového serveru, např. mod_php, interpret jazyka PHP, je součástí HTTP webového serveru Apache.

Po přijetí HTTP Requestu je nalezen příslušný PHP soubor

Tentp PHP soubor je interpretován pomocí modulu mod_php obsaženého ve webovém serveru.

Modul vygeneruje HTML výstup. Tento modul může komunikovat s databází.

Pokud není zadáno konkrétní jméno souboru (.php), zobrazí se automaticky soubor s názvem index.php.

(8)

PHP

rekurzivní zkratka (původně Personal Home Page) PHP: Hypertext Preprocessor

jeden z možných jazyků

obecný (general purpose) skriptovací jazyk vybavený na programování dynamických webových stránek

interpretovaný; volně typovaný; open source

vznik: 1994

formální specifikace až v r. 2014, do té doby platila za standard originální implementace

duben 2021 - PHP používá 79.2% stránek, u který je známé, jaký jazyk používají (zdroj: w3techs.com)

další možnosti: Python, Java

(9)

Co všechno PHP umí?

vygenerovat dynamický obsah stránky

pracovat se soubory na serveru

zpracovat formulář

pracovat s cookies

pracovat s databází

...

(10)

Jak na to

webhosting s podporou PHP

lokálně

potřebujeme webový server, PHP

např. XAMPP (včetně databáze)

(11)

Jak na to (2)

php soubor může obsahovat i HTML, CSS, JavaScript

php kód uvnitř <?php ... ?>

=> prohlížeč dostane vygenerovaný html soubor

PHP umí generovat i např. pdf soubory, text, xml, ...

výstup:

echo (print, print_r )

(12)

Syntax

příkazy oddělené středníky

case-sensitivita

klíčová slova (např. if, else, while, echo, ...), názvy tříd, funkcí a user-defined funkcí NEJSOU case-sensitive

názvy proměnných JSOU case-sensitive

názvy proměnných začínají znakem $

komentáře

// jednořádkový

/* ... */ blokový

(13)

echo

výpis na std výstup

echo "Hello world!";

řetězce se spojují pomocí tečky $x = "chameleon";

echo "v proměnné x je ".$x;

$x = "chameleon";

echo "v proměnné x je $x";

vs.

echo 'v proměnné x je $x';

(14)

Příklad

$nazev = "O praotci Čechovi";

echo "<h1>Kapitola 1: $nazev</h1>";

for ($i=0;$i<10;$i++){

echo $i."<br>";

}

(15)

Proměnné

názvy proměnných začínají znakem $

global, local, static

$pocet = 0;

function kolikrat() { global $pocet;

echo $pocet;

$pocet++;

} function kolikrat() {

static $pocet = 0;

echo $pocet;

$pocet++;

}

(16)

Typy proměnných

String

Integer

Float - rozsah je platform dependent, přesnost na max 14 číslic

Boolean - true, false

Array - $cars = array("Volvo", "BMW", "Fiat");

asociativní pole - indexované čímkoliv

$age = array("Jan"=>"35", "Ben"=>"37");

Object

NULL

Resource - externí zdroj dat, např. při práci s databází

var_dump() - vypíše obsah proměnné a její typ

přetypování: (int)$x

(17)

Konstanty

define("POZDRAV", "Ahoj všichni!");

konstanty jsou globální

(18)

Funkce pro práci se znakovými řetězci

strlen("Hello world!");

str_replace("world", "Dolly", "Hello world!");

...

https://www.w3schools.com/php/php_ref_string.asp

(19)

Operátory

aritmetické +, -, *, /, %, **

přiřazení =, +=, -=, *=, /=, %=

porovnání ==, === (stejná hodnota vč. typu), !=, <>, !

==, >, <, >=, <=, <=> (spaceship, nový v PHP 7)

$x <=> $y -1, pokud $x < $y, 0, pokud $x == $y, +1 pokud

$x > $y

Increment, decrement

++$x, --$x (pre-)

$++, $-- (post-)

$x = 10;

echo $x++; vs. echo ++$x;

(20)

Podmínky

if (condition) {

code to be executed if condition is true;

}

if (condition) { ...;

} elseif (condition) { ...;

} else { ...;

}

(21)

switch

switch ($n) { case label1:

code to be executed if $n=label1;

break;

case label2:

code to be executed if $n=label2;

break;

...

default:

code to be executed if $n is different;

}

(22)

while, do-while

$x = 1;

while($x <= 10) { echo "$x <br>";

$x++;

}

do {

code to be executed;

} while (condition is true);

(23)

for - cyklus

for (init counter; test counter; increment counter) {

code to be executed for each iteration;

}

for ($x = 1; $x <= 10; $x++) { echo "$x <br>";

}

(24)

foreach

$colors = array("red", "green", "blue");

foreach ($colors as $value) { echo "$value <br>";

}

$age = array("Jan"=>"35", "Ben"=>"37");

foreach($age as $x => $val) { echo "$x = $val<br>";

}

(25)

Funkce

function soucet($x, $y) { $z = $x + $y;

return $z;

}

parametry se předávají hodnotou

odkazem: &$x

(26)

Superglobální proměnné

$GLOBALS

$_SERVER - jméno skriptu, adresa serveru, ...

$_GET - parametry z URL

$_POST - zpracování formuláře

$_REQUEST - zpracování formuláře

$_SESSION

(27)

$_GET

z parametrů v URL se stane pole

www.pokus.cz/index.php?jmeno=Klara&prijmeni=Peskova

$_GET["jmeno"]

$_GET["prijmeni"]

isset($_GET["id"])

(28)

include

vložení jiného PHP souboru na dané místo

<?php include "soubor.php"; ?>

(29)

Nastavení PHP

v php.ini

v .htaccess

konfigurace php na úrovni adresáře

autorizace přístupu

blokování/povolení IP adres

URL rewriting - zkrácení dlouhých URL

...

my budeme potřebovat:

php_flag display_errors 1

Odkazy

Související dokumenty

Webový server PLC Siemens Webový server PLC Tecomat Vizualizace pomocí aplikace Control Web Logika řízení podavačů přes Arduino Logika řízení LCD přes Arduino.

Umožní přihlášení uživatele pomocí Google nebo Facebook účtu, nebo při- hlášení na webový server, kde si uživatel předtím vytvořil svůj účet.. Webový server

S velkým přibývajícím procentem uživatelů na internetu a webových stránek, které jsou vy- užívány, vzrůstají také útoky na výše zmíněné objekty, a proto práce

První z nich je softwarový webový server, který má za úkol přijímat http požadavky od uživatelů klientské aplikace a tyto požadavky uložit do adaptivní prioritní

Běžné on-line procházení sbírek digitalní knihovny Perseus je možné přes webové stránky http://www.perseus.tufts.edu, které jsou označeny jako Perseus 4.0 nebo také

2 http://www.humantrafficking.org — Webové stránky podporované Ministerstvem zahraničních věcí Spojených států amerických.. V první části textu zpráva popisuje

V protokolu HTTP/1.1 je použití této hlavičky povinné, proxy aplikace musí zajistit, aby HTTP/1.1 po- žadavky měly tuto hlavičku správně uvedenu, server, který obdrží

http://www.campaignforrealbeauty.com/press.asp?id=4562&amp;section=news&amp;target=press. 20) Webové stránky catslikefelix.com. Dostupné na www.catslikefelix.com. 21) Webové