Systemy internetowe wykład 1 -...

31
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology Systemy internetowe PHP

Transcript of Systemy internetowe wykład 1 -...

Page 1: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology

Systemy internetowe

PHP

Page 2: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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.

Page 3: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology

Interpreter PHP

Page 4: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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 %>

Page 5: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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>

Page 6: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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.

Page 7: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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

Page 8: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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.

Page 9: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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"];

?>

Page 10: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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

Page 11: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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;

}

Page 12: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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;

Page 13: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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 />”

?>

Page 14: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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)

Page 15: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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;

Page 16: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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

Page 17: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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”).

Page 18: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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.

Page 19: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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"])) {....}

Page 20: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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

Page 21: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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))

Page 22: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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

Page 23: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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)

Page 24: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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

Page 25: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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'])

Page 26: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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

Page 27: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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

Page 28: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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

Page 29: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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>

Page 30: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

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)

Page 31: Systemy internetowe wykład 1 - irejer.zut.edu.plirejer.zut.edu.pl/fileadmin/SI_dzienne/w4_-_Systemy_internetowe_-_PHP.pdf · West Pomeranian University of Technology, Szczecin; Faculty

West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology

Dziękuję za

uwagę