West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Systemy internetowe
PHP
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
PHP - cechy
PHP (Hypertext Preprocessor)
• bardzo łatwy do opanowania, prosta składnia,
• obsługuje wymianę danych z różnymi systemami baz
danych
• pozwala na dynamiczne generowanie grafiki,
dokumentów PDF czy animacji Flash
• umożliwia tworzenie aplikacji obiektowych – od wersji 5
• rozwijany na zasadach Open Source.
http://www.php.net
Wymaga interpretera i serwera HTTP.
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Interpreter PHP
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Sekcje PHP
<script language="php">
echo "Komunikat";
</script>
<?php
echo "Komunikat";
?>
<? echo ”Wynik działania 2 x 3 wynosi: ” ?>
<? =2*3; ?> jednostki.
<% echo "asp_tags = on.\n"; %>
<%= $zmienna %>
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Witaj.php
<!DOCTYPE html>
<html>
<head>
…………..
</head>
<body>
<h1> Powitanie1 </h1>
<?php echo "Witaj! w PHP"; ?>
<h1> Powitanie2 </h1>
<?php echo ”<span style=‘color: red;’>
Witaj w PHP! </span>”; ?>
</body>
</html>
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Zmienne i typy danych
Zmienne nie muszą być deklarowane przed pierwszym
użyciem – typ zmiennej określany jest automatycznie.
Nazwa zmiennej zaczyna się od znaku $.
Cztery typy podstawowe:
• logiczny (bool) o wartościach true lub false),
• liczbowy całkowity,
• liczbowy zmiennoprzecinkowy,
• tekstowy.
Dwa typy złożone: tablicowy i obiektowy.
Dwa typy specjalne: typ NULL i identyfikator zasobów.
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Typ tekstowy
Łańcuchy znaków mogą być ograniczone:
• apostrofami (brak parsowania zmiennych, nie obowiązują
sekwencje specjalne),
• cudzysłowami (zmienne są parsowane, obowiązują
sekwencje specjalne).
Operator „.” – konkatenacja łańcuchów znaków.
$wiek = 30;
echo "Mam $wiek lat.\n";
echo 'Mam $wiek lat.\n';
Mam 30 lat.
Mam $wiek lat.\n
echo "Napis ". "długi "; Napis długi
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Tablice w PHP
Tablice to struktury danych przechowujące zbiór danych
zwykle jednego typu, dostępnych przez indeks.
Dostępne są tablice:
• zwykłe (indeksowane kolejnymi nieujemnymi liczbami
całkowitymi),
• asocjacyjne - indeksowane kluczem.
Tablice mogą być również używane jako listy, kolejki, czy
stosy.
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Tablice.php
<?php
$tab1[0] = "jeden";
$tab1[1] = "dwa";
$tab1[2] = "trzy";
$tab2 = array('pierwszy' => 1,
'drugi' => 2,
'trzeci' => 3);
echo "Drugi element tablicy zwykłej: ".$tab1[1];
echo "<br/> oraz asocjacyjnej: ".$tab2["drugi"];
?>
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Operatory
• arytmetyczne: +, -, *, /, % , ++, --,
• przypisania: =, +=, -=, *= itd. ,
• porównania: ==, ===, <>, !=, !==, <, >, <=, >= ,
• logiczne: and lub &&, or lub ||, !, xor,
• bitowe,
• kontroli błędów,
• wykonania poleceń systemowych,
• tekstowe
• tablicowe
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Instrukcje sterujące
if (warunek)
instrukcja;
if (warunek1)
instrukcja1;
else if (warunek2)
instrukcja2;
.....
else
instrukcjaN;
switch (wyrażenie)
{
case wartość1:
instrukcja1;
break;
case wartość2:
instrukcja2;
break;
...
default:
instrukcjaN;
}
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Instrukcje iteracyjne
for (wyr_inicjujące; wyr_warunkowe; wyr iteracyjne)
instrukcja;
while (wyrażenie_warunkowe)
instrukcja;
do
instrukcja;
while (warunek);
foreach (wyrażenie_tablicowe as wartość)
instrukcja;
foreach (wyrażenie_tablicowe as klucz => wartość)
instrukcja;
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Pętla foreach
<body>
<h1> Elementy tablicy asocjacyjnej: </h1>
<?php
$tab2 = array('pierwszy' => 1,
'drugi' => 2,
'trzeci' => 3);
foreach($tab2 as $klucz => $wartosc)
echo "tab2[".$klucz."]=".$wartosc."<br />”
?>
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
PHP – funkcje (1)
• nazwa
• argumenty
• wartość zwracana
function nazwa (arg1, arg2, ... argN)
{
instrukcje;
return wartość_zwracana;
}
function funkcja1($argument)
function funkcja1(&$argument)
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
PHP – funkcje (2)
include 'nazwa_pliku‘;
(http://www.php.net/manual/pl)
function modul($liczba)
{
if ($liczba < 0)
$liczba = -$liczba;
return $liczba;
}
$wynik = modul(-15);
echo $wynik;
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
<html>
<body>
<h2>Podaj 2 liczby:</h2>
<form action='mnoz.php' method=‘POST'>
<p>Liczba 1: <input type='text' name="l1“></p>
<p>Liczba 2: <input type='text' name ="l2“></p>
<input type ='submit' name="wynik" value='Wynik'>
</form>
</body>
</html>
form1.html
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
1. Przycisk SUBMIT (1)
Sprawdzenie, czy na stronie z formularzem został wciśnięty
przycisk wysyłający dane.
• Sprawdzenie wartości w tablicy asocjacyjnej
$_POST/$_GET.
• PHP każdemu działającemu skryptowi udostępnia zmienne
zewnętrzne - przechowywane w tablicach superglobalnych
(„$_”).
• „Superglobalne” - automatycznie dostępne w każdym
zasięgu.
• Zwykłe zmienne globalne w PHP nie są automatycznie
widoczne w funkcjach (”global”).
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Tablice superglobalne
$GLOBALS – referencje do zmiennych globalnych skryptu
$_SERVER – zmienne tworzone przez serwer,
$_GET – zmienne dostarczone do skryptu metodą GET,
$_POST – zmienne dostarczone do skryptu metodą POST,
$_COOKIE – zmienne cookies dostarczone do skryptu,
$_FILES – zmienne dostarczone do skryptu przez upload,
$_ENV – zmienne ze środowiska systemu operacyjnego,
$_REQUEST – zmienne z tablic $_GET, $_POST i
$_COOKIE,
$_SESSION – zmienne sesyjne.
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
1. Przycisk SUBMIT (2)
Pola formularza są dostępne w tablicy $_POST/$_GET pod
indeksami odpowiadającymi ich nazwom.
Czy w tablicy $_POST znajduje się pole wynik?
Funkcja isset() – sprawdza, czy ustawiona jest określona
wartość zmiennej.
if (isset($_POST["wynik"])) {....}
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Isset, a empty
isset():
• sprawdza, czy zmienna istnieje i jest ustawiona
• true: zmienna istnieje i ma przypisaną wartość
(również pusty łańcuch)
empty():
• sprawdza, czy zmienna jest pusta
• true: pusty łańcuch, false, zero, null
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
2. Walidacja
Sprawdzenie czy pola w tablicy $_POST odpowiadające
wymaganym polom:
• nie są puste – empty($pole)
• mają odpowiedni format - is_numeric($pole); is_float();
is_link(); is_integer(); is_string()
• spełniają podane wyrażenie regularne –
preg_match(wyrazenie_regularne,$pole)
If (empty($_POST["pole1"]))
If (!is_numeric($_POST["pole1"]))
if (!preg_match('/^[0-9]{2,2}-[0-9]{3,3}$/', $kod))
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
<html><body><h2>Podaj 2 liczby:</h2>
<form action='mnoz.php' method=‘POST'>
Liczba 1: <input type='text' name="l1"> <br/>
Liczba 2: <input type='text' name ="l2">
<input type ='submit' name="wynik" value='Wynik'>
</form></body></html>
<?php
if (isset($_POST["wynik"])) {
if (empty($_POST["l1"]) || empty($_POST["l2"]) ||
!is_numeric($_POST["l1"]) || !is_numeric($_POST["l2"])) {
echo "Musisz wypełnić wszystkie pola liczbami! ";
echo "<p><a href=‘form1.php’> Formularz </a></p>";}
else {
echo ”Wynik mnożenia”:
echo $_POST[‘l1'] * $_POST[‘l2'] } }
else header("Location: form1.php"); ?>
form1.php
mnoz.php
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Formularz - dodatki
header() - wysłanie surowego nagłówka HTTP.
Pozwala na ustawienie parametrów nagłówka HTTP.
header(”nazwa_pola: wartość”, zastępowanie).
Instrukcja exit
Post Back - przekazywanie danych z formularza
realizowanego przez skrypt do tego samego skryptu
$_SERVER[‘PHP_SELF’]
header(”Location: form1.php”, true)
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Upload plików (1)
Upload – przesłanie pliku z lokalnego systemu plików
użytkownika na serwer za pośrednictwem formularza HTML
wyświetlonego w przeglądarce.
Konieczna jest aplikacja gotowa odebrać po stronie serwera
plik przesłany z formularza HTML metodą POST.
Zapis plików w katalogu ustawionym w opcjach PHP
Informacje o plikach zostają udostępnione skryptom w tablicy
superglobalnej $_FILES, np.:
• $_FILES['plik']['tmp_name'] – nazwa na serwerze
• $_FILES['plik']['name‘] – nazwa rzeczywista
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Upload plików (2)
is_uploaded_file() – sprawdza, czy plik został poprawnie
przesłany na serwer
move_uploaded_file() – pozwala na przeniesienie plików z
miejsca tymczasowego do docelowego
is_uploaded_file($_FILES['plik']['tmp_name'])
move_uploaded_file($_FILES['plik']['tmp_name'],
[katalog]/$_FILES['plik']['name'])
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
<form enctype="multipart/form-data" method="post"
action="upload.php" >
Wyślij plik: <input type="file" name="plik">
<input type="submit" value="Wyślij“> </form>
<?php
if (is_uploaded_file($_FILES['plik']['tmp_name']))
{ echo "Załadowano plik {$_FILES['plik']['name']}
jako {$_FILES['plik']['tmp_name']}<BR>\n”;
$target= images/$_FILES['plik']['name'];
move_uploaded_file($_FILES['plik']['tmp_name'], $target); }
?>
upload.html
upload.php
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Mechanizm sesji (1)
Rozpoczęcie nowej sesji - tworzony jest klucz SESSION ID,
• SID zapisywany jest na serwerze oraz przesyłany do
przeglądarki klienta
• przesyłany przez klienta do serwera z każdym nowym
żądaniem (cookie, URL),
Zmienne sesyjne:
• są zapisywane na serwerze: 1 sesja – 1 plik.
• dla skryptu są dostępne poprzez tablicę $_SESSION.
• rejestracja nowej zmiennej sesyjnej - dodanie nowego
klucza do tablicy sesji.
PHPSESSID = 4241b82cb66569c0338b8fec21c4c2df
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Mechanizm sesji (2)
session_start() kontynuacja bądź rozpoczęcie nowej
sesji
session_name() zwraca nazwę zmiennej cookie
przechowującej SID
session_id() zwraca identyfikator sesji
session_destroy() usunięcie sesji
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
<?php
session_start();
if (!isset($_SESSION['licznik']))
$_SESSION['licznik'] = 0;
else
$_SESSION['licznik']++;
?>
<html><body> <?php
echo "Liczba wizyt na stronie: ";
echo "<b>".$_SESSION['licznik']."</b>";
?> </body></html>
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
<?php
session_start();
if (isset($_SESSION['klient']))
{
$_SESSION=array();
if (isset($_COOKIE[session_name()]))
{
setcookie(session_name(),'',time()-3600);
}
session_destroy();
}
?>
setcookie(”nazwa zmiennej”, ”wartość”, wygaśnięcie)
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Dziękuję za
uwagę