PHP příkazy PHP lze vkládat přímo do XHTML

Transkript

PHP příkazy PHP lze vkládat přímo do XHTML
Návrh a tvorba WWW stránek
1/38
PHP
• PHP – Hypertext Preprocessor – interpret stránek na serveru
• běží na serveru – příkazy PHP nejprve provede a vloží do XHTML
dokumentu, následně posílá klientovi
příkazy PHP lze vkládat přímo do XHTML
Návrh a tvorba WWW stránek
2/38
Server x klient
Výhody:
• spolupráce se serverovými aplikacemi (databáze, SMTP, FTP)
• nenáročnost na HW a SW klienta – výstupem je čisté (X)HTML
• menší objem přenesených dat – přenáší se pouze výsledek skriptů
• ochrana zdrojových kódů
Nevýhody:
• zátěž serveru
• nemožnost interakce s objekty na stránce (reakce na klávesy, myš)
Návrh a tvorba WWW stránek
3/38
Co je potřeba?
1) možnost publikování na webovém serveru s podporou PHP
2) totéž pro ladění skriptů na domácím PC
Oba servery musí mít nainstalovány tyto součásti:
–
–
–
HTTP server – Apache, IIS, …
interpret PHP
vhodné je pracovat s databází, nejčastěji MySQL
Tyto programy musí být nainstalovány a nakonfigurovány pro
vzájemnou spolupráci
Návrh a tvorba WWW stránek
4/38
Možnosti instalace
1) jednotlivé součásti stáhnout samostatně a ručně nakonfigurovat
2) instalace balíčku, který obsahuje všechny potřebné součásti
(Apache, PHP, MySQL)
ad 1)
• přehled v nastavení
• aktuální verze součástí
• možnost kombinace součástí
ad 2)
• jednoduchá instalace
• snadná konfigurace
• Xampp, Wampp2, PhpTriad, PhpEasy, PhpHomeEdition
Návrh a tvorba WWW stránek
5/38
Nejsnažší domácí instalace
• balíčky – Xampp, PhpEasy, …
• obsahuje osvědčenou kombinaci – Apache, MySQL, PHP
• součásti jsou vzájemně nakonfigurovány
• alternativou mohou být aplikace Wammp2, která obsahuje stejné
součásti, navíc není nutné ji instalovat
Návrh a tvorba WWW stránek
6/38
Alternativní instalace
• instalace jednotlivých součástí samostatně + jejich konfigurace
• většinou v případě jiné kombinace na "ostrém" serveru
• alternativy k Apachi – Microsoft IIS, Personal Web Server
• alternativy k MySQL – PostgreSQL, Access, Oracle
Návrh a tvorba WWW stránek
7/38
Práce se serverem Apache
• start/restart serveru
• na adrese http://localhost (http://127.0.0.1) se potom nachází
kořenový adresář webového serveru
• všechny php skripty musí být uloženy v kořenovém adresáři
• implicitně je kořenovým adresářem /htdocs
Konfigurace Apache
• konfigurační soubor httpd.conf v adresáři Apache/conf
• úpravy se provádí přidávání a odebíráním komentářů vybraných
direktiv
• např. změna kořenového adresáře, složka instalace, výchozí soubor
DocumentRoot "C:/skripty"
ServerRoot "C:/Apache"
Návrh a tvorba WWW stránek
Vyhodnocování PHP
• ke skriptům je potřeba přistupovat přes webový server
• skripty NELZE spouštět přímo z lokálního disku
Konfigurace PHP
• v souboru php.ini (Apache/php, Windows/System32, ap.)
• formou komentářů, především přidávání knihoven
• register_globals – on (jednodušší), off (bezpečnější)
– práce s formulářovými proměnnými
8/38
Návrh a tvorba WWW stránek
9/38
Vkládání PHP do (X)HTML
• PHP lze vkládat přímo do XHTML, pro interpret je potřeba obě
části oddělit
... kód XHTML ...
... kód XHTML ...
<?php
<?
/* začátek PHP */
... kód PHP ...
?>
... kód PHP ...
/* konec PHP */
... kód XHTML ...
?>
... kód XHTML ...
• zkrácená verze není kompatibilní s XML
• použití zkrácené verze lze zakázat v php.ini (short_open_tag = On)
• třetí možnost
<script type="text/php" language="php">
Návrh a tvorba WWW stránek
10/38
Kombinace XHTML a PHP
• PHP generuje kód XHTML
• kód PHP lze vložit na libovolné místo v dokumentu
• kód PHP lze kdykoli ukončit a přejít na XHTML (a naopak)
<body>
<?php echo "Vítejte na stránce"; ?>
<h2>První dokument v PHP</h2>
<? echo "<p><i>Lze použít
i značky XHTML</i></p>"; ?>
</body>
• funkce echo vypisuje zadaný text na standardní výstup
• dokument obsahující PHP musí mít příponu .php (php5, phtml,
konfigurace Apache)
• dokument musí být zobrazen přes webový server, ne z disku
• zobrazte si zdrojový kód
Návrh a tvorba WWW stránek
11/38
Základní syntaxe
• příkazy jsou odděleny středníkem
• oddělovačem jsou "bílé znaky" - přehlednost kódu
• strukturovaný jazyk - příkazy jsou členěny do bloků { příkazy }
<? function fce() {
if (podminka) {
příkaz1;
příkaz2;
}
}
?>
• formátování příkazů - přehlednost
Návrh a tvorba WWW stránek
12/38
Komentáře
• víceřádkový komentář
/* toto je komentář */
• jednořádkový komentář
// komentář do konce řádku
# jednořádkový komentář
• komentáře lze vnořovat, je potřeba ale použít různých druhů
<? ...
/* první komentář
/* pokus o vnořený komentář */
text vnějšího komentáře - CHYBA, komentář již
skončil */
?>
Návrh a tvorba WWW stránek
13/38
Proměnné
• v PHP jsou proměnné uvozeny znakem $, tj. $a je "proměnná a"
• identifikátor proměnné musí začínat písmenem nebo podtržítkem,
dále "cokoli" - raději bez diakritiky
• proměnné není třeba deklarovat či inicializovat
<?
$a = 100;
$b = $a;
$c = $a + $b;
?>
• není třeba se starat o datové typy - automatická konverze
<? $a = 10; $a = 3.14159; $a = "text";
?>
Návrh a tvorba WWW stránek
14/38
Pole
• k jednotlivým položkám pole se přistupuje přes indexy
<? $a[0]=11; $a[1]=5; $a[2]=3; $a[3]=8; ?>
• s proměnnou typu pole lze pracovat jako s celkem
<? $b = $a; ?>
• přístup k proměnným
<? echo $a[3]; ?>
// vypíše se 8
• naplnění pole - každá položka zvlášť
- najednou <? $x = Array(1.14,2.56,7.90); ?>
• vícerozměrná pole
<?
$tabulka[1][1] = 5;$tabulka[1][2] = 8;
$tabulka[2][1] = 3;$tabulka[2][2] = 1;
?>
Návrh a tvorba WWW stránek
14,5/38
Asociativní pole
<?
$dny["Mon"]="Pondělí";
$dny["Tue"]="Úterý";
$dny["Wed"]="Středa";
$dny["Thu"]="Čtvrtek";
$dny["Fri"]="Pátek";
$dny["Sat"]="Sobota";
$dny["Sun"]="Neděle";
echo $dny[Date("D")]." "
.Date("j").". ".Date("n").". ".Date("Y");
?>
Návrh a tvorba WWW stránek
15/38
Řetězce
• uvádějí se v uvozovkách (nebo apostrofech)
<? $retezec = "Toto je retezec"; ?>
• výpis řetězce
<? echo $retezec ?>
// vypise se Toto je retezec
• escape sekvence - zápis speciálních znaků
- !! pouze v řetězcích v uvozovkách
\n
\t
ukončení řádku
tabulátor
<? $zvire = "kočka";
echo "Chované zvíře je $zvire"; // kočka
echo "\$zvire je $zvire"; // $zvire je kočka
echo ‘$zvire je $zvire’’;
// $zvire je $zvire
!
Návrh a tvorba WWW stránek
16/38
Řetězce
• konkatenace řetězců
$a = "10";
$b = 15;
$c = $a + $b;
// $c bude 25 (automaticka konverze)
$d = $a . $b;
// $d bude 1015
Návrh a tvorba WWW stránek
17/38
Matematické operátory
• + - * / - sčítání, odčítání, násobení, reálné dělení
•%
- modulo
• složené operátory +=, -= atd. <? $a+=5; ?>
Unární operátory pro inkrementaci a dekrementaci
• jeden z nejčastěji používaných příkazů, proto speciální operátory
<? $a = $a+1;
$a++;
?>
<? $a = $a-1;
$a--;
?>
• lze použít dvě varianty zápisu - $a++ a ++$a
<? $a
$b
$c
$c
$b
?>
=
=
=
=
=
10;
$a++;
++$a;
--$a;
$a--;
//
//
//
//
$a
$a
$a
$a
je
je
je
je
11,
12,
11,
10,
$b
$c
$c
$b
je
je
je
je
10
12
11
11
Návrh a tvorba WWW stránek
18/38
Operátory porovnávání
• většinou v podmínkách
==
!=, <>
<, >, <=, >=
a cyklech, výsledkem je true/false
operátor rovnosti
operátor nerovnosti
porovnání velikosti
===
!==
<?
?>
proměnné mají stejnou hodnotu i typ
proměnné mají různou hodnotu nebo typ
$a
$b
$c
$c
=
=
=
=
7;
7.00;
$a==$b;
$a===$b
// true, mají stejnou hodnotu
// false, různý typ
Návrh a tvorba WWW stránek
19/38
Konjunkce a disjunkce
• logické AND (&&)
• logické OR (||)
<?
$podm = (($b>0) AND ($b<10));
$podm = (($b<0) OR ($b>10));
?>
// ($b>0) && ($b<10)
// ($b<0) || ($b>10)
• rozdíl v prioritě operátorů - AND má nižší prioritu než &&
• zkrácené vyhodnocování logických výrazů zleva doprava
• operátor XOR - exklusivní disjunkce - právě jedna
<? $a xor $b ?>
// právě jedna proměnná je pravdivá
• podmíněný operátor
podmínka ? výraz1 : výraz2
Návrh a tvorba WWW stránek
20/38
Funkce
• za identifikátorem funkce vždy následují závorky
• výjimkou je funkce (konstrukt) echo - lze použít se závorkami i bez
<? echo "Text";
echo ("Text");
// ekvivalentní zápis
?>
• funkce může a nemusí vracet výsledek, pokud výsledek vrací,
přiřadí se do proměnné
<? $a = abs(-10); ?>
• mimo standardních funkci PHP lze deklarovat funkce vlastní
použitím klíčového slova function
function Jmeno (seznam_parametru) {
příkazy;
[return hodnota;] } // pokud funkce vrací hodnotu
Návrh a tvorba WWW stránek
21/38
• příklad jednoduché funkce
<?
function Uvitani() {
echo "<h2>Vítejte</h2>";
} ?>
• uvnitř funkce lze volat další funkce, např. standardní funkci Date
<?
function Uvitani() {
echo "Vítejte<br />";
echo "Dnes je ".date("j.n.Y G").":".date("i");
} ?>
• proměnné deklarované uvnitř funkce jsou lokální , předávání
hodnot odkazem zajistí &
<?
function Nastav(&$x,$y) {
$x=0;$y=1; }
$a=100;$b=200;Nastav($a,$b);echo ”$a,$b”;
// vytiskne 0,200
?>
Návrh a tvorba WWW stránek
22/38
Řízení běhu programu
• k řízení programu slouží mimo jednoduchých příkazů a volání
funkcí především podmíněný příkaz a příkazy cyklu
Podmíněný příkaz if
• jednoduchá podmínka <? if (podmínka) { blok příkazů } ?>
• úplná podmínka
<? if (podmínka) { blok příkazů }
else { blok příkazů } ?>
• rozšíření elseif
<? if (podmínka1)
{ blok příkazů }
elseif (podmínka2) { blok příkazů }
…
else { blok příkazů } ?>
• v případě vícenásobného použití elseif je vhodné využít switch
Pozor na operátor porovnání v podmínce (==) !
Návrh a tvorba WWW stránek
23/38
Rozcestník switch
• slouží k rozlišení více stavů podmínky
<? switch ($mesic) {
/* podminka musi byt v () */
case 2: $dny=28;break;
case 4:
case 6:
case 9:
case 11: $dny=30;break;
default: $dny=31;
} ?>
• prochází všechny větve => je potřeba v každé větvi break;
Návrh a tvorba WWW stránek
24/38
Cyklus for
• provádí zadaný počet opakování
<?
for ($i=1;$i<=6;$i++)
echo "<h$i>Nadpis $i. úrovně</h$i>";
?>
• problém s nekonečným cyklem na serveru je v PHP vyřešen
nastavením max. doby provádění cyklu, např. na 30 s
Cyklus foreach pro pole
<? $x = Array(1,2,3,4,5,6,7,8,9,10);
foreach ($x as $y) echo "$y "; // výpis prvků
?>
• break – příkaz pro ukončení cyklu
• continue – ukončení aktuálního průchodu cyklem
• exit – ukončení zpracovávání skriptu
Návrh a tvorba WWW stránek
25/38
Cyklus while
• v případě, že není předem znám počet průchodů, ale je známa
podmínka ukončení cyklu
• libovolný cyklus for lze převést na while
<? $i = 1;
while ($i<=10) {
echo $i;
$i++;
} ?>
Cyklus do-while
• cyklus s podmínkou na konci, provede se vždy alespoň jednou
<?
$i=1;
do {
echo $i;$i++;
}
while ($i <= 10);
?>
Návrh a tvorba WWW stránek
26/38
Vkládání souborů
• vkládání externích souborů do skriptů
• záhlaví, zápatí, příp. často používané části kódu
Require a include
• zadaný soubor vloží do dokumentu v místě uvedení příkazu
• syntaxe:
require "soubor.php";
require ("soubor.php");
// include "soubor.php"
// include ("soubor.php")
• pokud zadaný soubor existuje, je vložen do dokumentu
• pokud zadaný soubor neexistuje – require skončí s fatální chybou
– include skončí s varováním (@)
• před vložením souboru je opuštěn režim zpracování PHP
Návrh a tvorba WWW stránek
27/38
Require a include - použití
<? include "zahlavi.php";
echo "Toto je obsah stránky";
include "zapati.php"; ?>
zahlavi.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>XHTML</title>
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1250" />
</head><body>
zapati.php
<p>© autor <? echo date("j."."m."."Y, " . "H:i:s"); ?>
</p></body></html>
Návrh a tvorba WWW stránek
28/38
Readfile
• otevře zadaný soubor a jeho obsah vypíše na standardní výstup
• obsah souboru neprochází přes interpret PHP, tzn. že může
obsahovat značky XHTML, které interpretuje klient, ale nemůže
obsahovat příkazy PHP
<? readfile ("soubor.txt");
?>
Návrh a tvorba WWW stránek
29/38
Zpracování formulářů
• jedno z nejčastějších využití PHP
• jednoduchá spolupráce s formuláři v XHTML
• obslužný skript je nastaven v atributu action značky <form>
<form name="f1" method="post" action="obsluha.php">
• při zpracování formulářových polí jsou tato přístupná v
proměnných stejného jména jako ve formuláři
• bezpečnost – register_globals – předávání proměnných
<? echo
echo
echo
echo
?>
$jmeno; // funguje pro register_globals=On
$_POST["jmeno"]; // pro register_globals=Off
$_GET["jmeno"]; //
---- || ---$_REQUEST["heslo"]; // univerzální
• často se využívá v kombinaci s funkcí mail()
Návrh a tvorba WWW stránek
30/38
Předávání proměnných
• automaticky ve stejnojmenných proměnných – lépe přes asociativní
pole $_POST, $_GET
• viz příklad obsluha.php
• často se využívá možnost zpracování formuláře ve stejném souboru
- snadné úpravy
- všechno na jednom místě
• poprvé je potřeba zobrazit formulář, po odeslání už ne
• viz příklad fotky
Návrh a tvorba WWW stránek
31/38
Nahrávání souborů na server
• pomocí formulářového pole typu file
• podmínky pro formulář:
- kvůli bezpečnosti musí být použita metoda POST
- atribut enctype="multipart/form-data";
• soubor je uložen do dočasného adresáře (nastaveno v php.ini)
odkud je potřeba jej zkopírovat do cílové složky
• při zpracování je k dispozici jméno souboru, velikost a typ (v
proměnných $_FILES[‘file’][‘size|name|tmp_name|type’])
• v PHP jsou nastaveny bezpečnostní hodnoty pro velikost souboru
• viz příklad fotky
Návrh a tvorba WWW stránek
32/38
Práce se soubory
• skript nesmí mít přístup ke všem souborům na serveru – záleží na
právech procesu webového serveru
• soubory, ke kterým má přistupovat skript, musí mít patřičná práva
• přístupová práva, bezpečnost, DocumentRoot
• práce s celými soubory – kopírování, mazání, změna práv atd.
• práce s obsahem souborů – čtení a zápis dat do souboru
Návrh a tvorba WWW stránek
33/38
Manipulace s celými soubory
• file_exists() – boolovská funkce, zda soubor existuje
<?
if (!file_exists("jokes.php"))
echo "Chyba! Soubor neexistuje!";
?>
• is_dir() – totéž pro adresáře
• is_executable() – true pokud je soubor sppustitelný
• is_file() – zda se jedná o soubor (případně is_link – odkaz)
• is_readable() – true pokud je možné ze souboru číst (is_writable)
• is_uploaded_file() – true pokud jméno odpovídá souboru
nahranému na server metodou POST
• copy($soubor, "cesta kam"), Rename(), Unlink()
Návrh a tvorba WWW stránek
34/38
Manipulace s obsahem souborů - otevření
• čtení z zápis do souboru na libovolném místě
• fopen() – pro úpravy je soubor potřeba nejprve otevřít
<? $fp1 = fopen($jmeno,režim); ?>
– absolutní i relativní cesta, i mimo webserver (pro čtení)
– režim – přístup k souboru
r
čtení (pokud neexistuje, chyba)
r+
čtení i zápis (např. zápis od začátku souboru)
w
zápis (existuje => obsah smazán, jinak vytvořen)
w+
zápis a současné čtení (existuje => smazán)
a
zápis na konec souboru (neexistuje => vytvoří se)
a+
zápis na konec souboru + čtení
Návrh a tvorba WWW stránek
35/38
Manipulace s obsahem souborů - čtení
• třetím parametrem fopen() může být boolovská hodnota, která
určuje, zda se má soubor hledat nejen v aktuálním adresáři, ale i v
adresáři daném proměnnou include_path v konfiguračním souboru
• fopen vrací ukazatel na soubor, je dobré jej uložit pro další použití
• čtení ze souboru – fread(), fgets(), fgetc()
fread() – čte po blocích <? $chunk = fread($fp1,1024); >
fgets() – čte po řádcích z textového souboru (omezení řádku)
<? $radek = fgets($fp22,4096); ?>
fgetc() – načte znak
• automaticky je přesouván ukazatel pozice v souboru, pomocí
funkce feof() lze testovat konec souboru
Návrh a tvorba WWW stránek
36/38
Manipulace s obsahem souborů - čtení
Příklad: Vyhledejte v zadaném souboru řádky obsahující daný text.
<? $soubor = "soubor.txt";
$grep = "php";
if ($fp=fopen($soubor,"r"))
while (!feof($fp)) {
$radek = fgets($fp,filesize($soubor));
if (strpos($radek,$grep)!==false)
echo $radek."<br />";
};
?>
Návrh a tvorba WWW stránek
37/38
Manipulace s obsahem souborů - zápis
• fwrite() – zapíše do souboru řetězec na pozici ukazatele
<? fwrite(soubor,řetězec[,délka])
?>
• soubor musí být otevřen pro zápis
• lze použít funkci fputs(), která má ale stejný význam (alias)
• funkce pro manipulaci s ukazatelem:
- rewind() – nastaví ukazatel na začátek souboru
- ftell() – vrací aktuální pozici ukazatele v souboru
- fseek() – nastaví ukazatel na zadanou hodnotu
Všechny tyto funkce očekávají jako první parametr odkaz na
soubor, fseek() navíc očekává druhý parametr s určením pozice.
Návrh a tvorba WWW stránek
38/38
Manipulace s obsahem souborů - zápis
<? $fp = fopen("soubor.dat","r");
fseek($fp,filesize("soubor.dat"));
$pozice = ftell($fp);
rewind($fp);
fseek($fp,$pozice);
?>
Uzavření souboru
• vhodné u souborů, do kterých bylo zapisováno
• dojde k vyprázdnění vyrovnávací paměti a uložení změn v souboru
<? fclose($fp); ?>

Podobné dokumenty

Elektronické publikování

Elektronické publikování Hodnoty atributů musí být v uvozovkách (včetně číselných) Místo atributu name jako identifikátoru objektů na stránce se doporučuje používat atribut id. Více

PHP, PERL, ASP.NET

PHP, PERL, ASP.NET začleňuje přímo do struktury jazyka HTML, XHTML či WML, což lze využít při tvorbě webových aplikací. PHP lze použít i k tvorbě konzolových a desktopových aplikací. PHP skripty jsou prováděny na str...

Více

Certifikační politika pro externí uživatele

Certifikační politika pro externí uživatele Informace o vydaných certifikátech a seznamech zneplatněných certifikátů jsou poskytovány prostřednictvím WWW stránek autority a jsou tedy dostupné pouze v rámci interní sítě PRE. Vně PRE, tedy z I...

Více

Tvorba www stránek v HTML a CSS

Tvorba www stránek v HTML a CSS Každá z těchto definic definuje jinou sadu XHTML tagů. Element DOCTYPE není součástí XHTML dokumentu, není elementem XHTML a nemusí mít tedy koncovou značku.

Více

Microsoft Excel 2010

Microsoft Excel 2010 v podstatě soubor, se kterým pracujeme stejným způsobem jako s kterýmkoli jiným souborem pod operačním systémem – můžeme jej otevřít, uložit, zavřít, vytisknout. Sešit musí mít jméno – systém při o...

Více

Vyšší odborná škola a Střední odborná škola

Vyšší odborná škola a Střední odborná škola tyto sloţité číselné kombinace, mohou zadávat tzv. doménové jméno (hostname), coţ je přiřazené jméno k IP adrese. Například s IP adresou 89.185.233.232 je spojeno doménové jméno www.all4all.cz. Hyp...

Více

VÝUKOVÝ MATERIÁL

VÝUKOVÝ MATERIÁL • Pro čtení dat ze souboru vytvoříme proměnnou typu ifstream. • Soubor otevřeme metodou open(), které předáme jméno souboru. • Úspěšnost otevření souboru ověříme pomocí metody fail(). • Pro čtení d...

Více

Studijní opora. - Katedra technické a informační výchovy PdF UP v

Studijní opora. - Katedra technické a informační výchovy PdF UP v Úspěšné studium je podmíněno základními znalostmi práce s:

Více