Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Wykład 7 Teleinformatyka Komunikacja klient-serwer – cd.

Podobne prezentacje


Prezentacja na temat: "Wykład 7 Teleinformatyka Komunikacja klient-serwer – cd."— Zapis prezentacji:

1 Wykład 7 Teleinformatyka Komunikacja klient-serwer – cd.

2 pliki – niewygodne, czasochłonne ciasteczka "cookie" – na komputerze klienta bazy danych na serwerze - trwałe mechanizm sesji – dane nietrwałe, np. do czasu otwarcia przeglądarki Metody:

3 setcookie (PHP 3, PHP 4, PHP 5) setcookie -- Wysyła ciasteczko i zapisuje u klienta setcookie ( string nazwa [, string wartość] [, int data_ważności ]) setcookie() określa ciasteczko (ang. cookie) do wysłania z nagłówkami HTTP. Ciasteczko musi być wysłane zanim jakiekolwiek inne nagłówki zostaną wysłane (to jest ograniczenie ciasteczek, nie PHP). To wymaga umieszczenia wywołań tej funkcji przed znacznikami czy. Wszystkie argumenty (poza nazwą) są opcjonalne. Jeśli obecny jest tylko argument nazwa, ciasteczko o takiej nazwie zostanie usunięte z klienta. Można też opuścić argumenty za pomocą pustego łańcucha (""). Argument data_ważności jest liczbą całkowitą. Zamiast niego można użyć liczby zero (0). Argument data_ważności jest regularnym uniksowym znacznikiem czasu, takim jak zwracany przez funkcje time() lub mktime (). Wysłane ciasteczko jest dostępne już przy następnym załadowaniu strony w tablicy $_COOKIE. W PHP do była to tablica $HTTP_COOKIE_VARS. CIASTECZKA cookies

4 Częste pułapki: Tworzone skryptem ciasteczka nie będą widziane do następnego przeładowania strony dla której mają być widoczne. Ciasteczko może być usunięte tylko z tymi parametrami, z jakimi je ustawiono. Przykład 1. setcookie() wysyła przykładowe ciasteczka setcookie ("TestCookie", $value); setcookie ("TestCookie", $value,time()+3600); /* traci ważność za godzinę */ Aby skasować ciasteczko, należy ustawić datę ważności na datę w przeszłości, co uruchomi w przeglądarce mechanizm kasowania ciasteczek. Przykład 2. Kasowanie ciasteczek// np. ustawić datę ważności na godzinę wstecz setcookie ("TestCookie", "", time() ); Przykład 3. Sprawdzenie ciasteczka if (isset($_COOKIE["TestCookie"])) kod1; else kod2;

5 Licznik odwiedzin (czuły na odświeżanie strony)

6 Unikalny identyfikator generowany przez PHP, przechowywany po stronie klienta: zwykle jest zapisany w cookie przekazywany przez URL-e Natomiast dane sesji zapisywane po stronie serwera Przeglądarka przechowuje identyfikator sesji (jak bilet), odnajduje zmienne przechowywane na serwerze dla danej sesji. Pamięć sesji na serwerze – identyfikator u klienta SESJA

7 Obsługa sesji w PHP ma na celu zapewnienie sposobu na zachowanie pewnych danych w trakcie następujących po sobie wywołań strony – żądań HTTP (np. id klienta, danych w koszyku, numeru karty kredytowej). Wchodzący na stronę WWW otrzymuje unikalny identyfikator, tzw. id sesji (32 cyfry szesnastkowe), np: db2245f91a5a3dadd2010ba0172b sess_id() Pozwala na zgłoszenie zmiennych jako zmiennych sesji – przechowywanych na serwerze. Identyfikator sesji (PHPSESSID) jest jedyną wartością widoczną po stronie klienta – jeśli jest dostępny przez cookie lub URL to można uzyskać dostęp do zmiennych przechowywanych na serwerze.

8 Sesja zazwyczaj trwa tak długo jak uruchomiona jest przeglądarka. Jeśli: session.cookie_lifetime = 0 to do czasu restartu przeglądarki. Jeśli dłużej – mechanizm usuwania starych sesji. Są także metody wykorzystania sesji bez cookie – użytkownik może wyłączyć ich obsługę

9 Przeglądarka GET/witaj.php?imie=Jan Serwer Sesja imie=Jan SET COOKIE:PHPSESSID=1234 GET/index.php Serwer Sesja imie=Jan Witaj Jan... Przeglądarka COOKIE : PHPSESSID=1234

10 PHP sprawdza czy id sesji zostało przypisane: automatycznie (jeśli session.auto_start w php.ini jest ustawione na 1) jawnie przez wywołanie session_start() niejawnie przez wywołanie session_register() Jeśli tak, poprzednio zachowane środowisko jest odtwarzane Opcje konfiguracyjne track_vars i register_globals wpływają na to, jak zmienne sesyjne są przechowywane i odtwarzane. Zapisane w pliku php.ini

11 register_globals PHP posiada możliwość ustawienia w pliku konfiguracyjnym php.ini dyrektywy register_globals. Jest ona odpowiedzialna za rejestrowanie danych otrzymanych z formularzy, ciastek, sesji czy serwera jako zmienne globalne. Oznacza to, że jeśli dyrektywa register_globals została ustawiona na on to wszystkie zmienne przekazane do skryptu dostępne są w postaci $nazwa_zmiennej, bez potrzeby stosowania żadnych tablic. Jest to łatwiejsze, lecz powoduje niebezpieczeństwo - używając zmiennych globalnych nie można stwierdzić, czy dana wartość pochodzi z sesji czy może została podana w URL- u metodą GET.

12 Zależnie od metody, zmienne trafiają do odpowiednich tablic asocjacyjnych. Dane przesłane metodą GET trafiają do tablicy $_GET (lub $HTTP_GET_VARS w wersjach starszych niż 4.1.0) a dane z metody POST to tablicy $_POST (lub $HTTP_POST_VARS). Tablice $_GET i $_POST są superglobalne. Oznacza to, że są widoczne w każdym miejscu kodu PHP bez konieczności użycia składni globals. Źle napisane skrypty – możliwość obejścia zabezpieczeń. Używanie odpowiednich tablic jest mocno zalecane. Począwszy od wersji 4.2.0, dyrektywa register_globals jest domyślnie wyłączona. Pisząc skrypt dla nieznanego serwera trzeba się liczyć z ewentualnością braku dostępu do zmiennych globalnych.

13 Jeśli włączone – zmienne środowiskowe, GET, POST, Cookie, i zmienne serwera można znaleźć w superglobalnych tablicach asocjacyjnych: track_vars $_ENV, $_GET, $_POST $_COOKIE $_SERVER $_SESSION

14 Najczęściej używane funkcje: session_start(); //tworzy lub wznawia istniejącą sesję, sprawdza istnienie PHPSESSID lub jeśli wskazany w żądaniu identyfikator nie zostanie znaleziony to tworzona jest nowa sesja session_id(); //Pobiera i/lub ustawia identyfikator bieżącej sesji session_register(zm1,zm2...); // Rejestruje jedną lub więcej zmiennych w bieżącej sesji session_is_registered (zmienna);/bez znaku $ albo w ciapkach ' ' - // sprawdza, czy zmienna jest zarejestrowana w sesji session_ unregister(zmienna); //Wyrejestrowuje zmienną z bieżącej sesji session_unset(); //Zwalnia wszystkie zmienne sesyjne session_destroy(); //Niszczy wszystkie dane zarejestrowane w sesji

15 Od wersji PHP dostępna jest superglobalna tablica $_SESSION

16 Rejestracja zmiennej:

17 Rejestracja tablicy – plik ses1.php Przechwyt w pliku ses2.php

18 Wyrejestrowanie zmiennej:

19 Jeśli włączona jest opcja register_globals, wszystkie globalne zmienne mogą być zarejestrowane jako zmienne sesyjne a zmienne sesyjne będą odtworzone do odpowiadających im zmiennych globalnych. Ponieważ PHP musi wiedzieć które globalne zmienne są zarejestrowane jako zmienne sesyjne, użytkownik musi użyć funkcji session_register(), podczas gdy tablica $_SESSION nie musi używać session_register(). Zwykle register_globals jest wyłączone

20 Prosty przykład:.... Imię: FORMULARZ:

21 Wynik1.php lub

22 Przykład: Formularz: rejestr1.php

23 Plik rejestr2.php

24 Upload plików – wysyłanie na serwer Formularz:

25

26 //wyświetlenie spisu obrazków w katalogu obrazki $kat = opendir('./obrazki'); //otwarcie do czytania $lista_plikow = " "; //pocz listy while ($naz_pliku = readdir($kat)) //war. zakończenia if (($naz_pliku !=".")&&($naz_pliku !="..")) //filtr $lista_plikow.= " $naz_pliku"; //dopisanie $lista_plikow.= " "; //koniec listy closedir($kat); echo "$lista_plikow"; ?>

27 Można też sprawdzać rozmiar i typ pliku: $allowed_types = array("jpg", "JPG"); $filename = $_FILES['obrazek']['name']; $filetype = substr($filename, -3, 3); if((!in_array($filetype,$allowed_types))&&($filename!="")) {echo ' '; echo "alert('Typ obrazka musi być JPG ')"; echo " "; echo "zly typ"; exit; } elseif ($_FILES['obrazek']['size']>$dopusz_rozm) { echo ' '; echo "alert('Rozmiar obrazka max 100 kb')"; echo " "; echo "za duzy"; exit; } Są biblioteczne procedury zmiany wymiarów obrazów


Pobierz ppt "Wykład 7 Teleinformatyka Komunikacja klient-serwer – cd."

Podobne prezentacje


Reklamy Google