przejście do zawartości
Igor Wojnicki's WIKI
Narzędzia użytkownika
Zaloguj
Narzędzia witryny
Szukaj
Narzędzia
Pokaż stronę
Poprzednie wersje
Odnośniki
Ostatnie zmiany
Menadżer multimediów
Indeks
Zaloguj
>
Ostatnie zmiany
Menadżer multimediów
Indeks
Jesteś tutaj:
start
»
pl
»
paw
»
lab_paw_php_3
Ślad:
pl:paw:lab_paw_php_3
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
====== Laboratorium, PHP # 3 ====== ===== Ćwiczenie 1: Ciastka ===== Przetestuj działanie poniższego kodu: - jaka jest zawartość zmiennej ''$_COOKIE'' przy pierwszym uruchomnieniu, - a jaka przy kolejnych? <code php> setcookie('ciastko','smaczne'); var_dump($_COOKIE); </code> ===== Ćwiczenie 2: Ciastka, data przydatności do spożycia ====== Przetestuj działanie poniższego kodu: - uruchom skrypt, - odczekaj ok. 5 sekund, uruchom ponownie, - odczekaj ok. 15 sekund, uruchom ponownie, czy coś się zmieniło? <code php> define('CIACHO','mojeciasteczko'); if (!setcookie(CIACHO,'dane',time()+10)) echo 'nie moge wysłać ciastka...'; if (isset($_COOKIE[CIACHO])) echo $_COOKIE[CIACHO]; else echo 'brak danych'; </code> ===== Ćwiczenie 3: Identyfikacja użytkownika (przeglądarki) ===== Napisz pojedynczy skrypt PHP, który: - przy pierwszej wizycie użytkownika poprosi o jego imię, - przy każdej następnej wyświetli imię, - dodaj datę i godzinę ostatniej wizyty, oraz - mechanizm zapominania imienia (np. przy przesłaniu metodą GET atrybutu ''zapomnij'': ''http://..../skrypt.php?zapomnij''). Powyższy mechanizm możesz wykorzystać, aby np. dodać do galerii logowanie użytkownika, tak aby nie trzeba było za każdym razem podawać nazwy użytkownika oraz hasła przy dodawaniu lub usuwaniu obrazków. ===== Ćwiczenie 4: Sesje ====== Powtórz poprzednie ćwiczenie korzystając z mechanizmu sesji. Możesz wykorzystać poniższy kod. <code php> session_start(); if (isset($_GET['zapomnij'])){ echo 'Zapominam...'; unset($_SESSION['moje']); } else { if (!empty($_SESSION['moje'])) { echo $_SESSION['moje']; } else { $_SESSION['moje']='jest'; } } </code> ===== Ćwiczenie 5: Wyścig w Galerii ====== Skorzystaj z kodu galeri z poprzednich ćwiczeń, biorąc pod uwagę poniższe wymagania. - Do galerii można dodawać obrazki w formacie JPG, które są przechowywane w wybranym katalogu. - Nazwy obrazków są kolejnymi liczbami naturalnymi zaczynając od 1 tj.: ''1.jpg'', ''2.jpg'' itd., tak aby można było łatwo wyświetlić obrazki w kolejności dodawania. - Zaprogramuj sekcję krytyczną, tak aby nie doszło do nadpisania współbieżnie dodawanych obrazków. Podpowiedź: nazwa dodawanego obrazka = ilość plików w katalogu z obrazkami + 1, np.: <code php> $ile=count(glob('*.jpg')); </code> ==== Informacje dodatkowe: Semafory ==== W poniższym kodzie zastąp wartość KLUCZ unikalną w ramach grupy laboratoryjnej liczbą -- możesz użyć identyfikatora użytkownika na serwerze (polecenie ''id'' po zalogowaniu na serwere za pomocą ''ssh''). <code php> define('KLUCZ',123456); $sem=sem_get(KLUCZ); if ($sem != FALSE) { echo 'Wejscie do sekcji krytycznej<br>'; $start=time(); sem_acquire($sem); echo 'Jestem w sekcji krytycznej<br>'; /* tutaj kod sekcji krytycznej */ sem_release($sem); echo 'Wyjscie z sekcji krytycznej<br>'; echo 'Czas wykoania: '.(time()-$start).'<br>'; } else {echo 'Problemy z semaforem...<br>';} </code> Działanie w/w kodu możesz przetestować w poniższy sposób: - dodaj odpowiednie znaczniki i umieść go w pliku z rozszerzeniem ''.php'' na serwerze, - korzystając z przeglądarki uruchom program, - korzystając z pomocy innego studenta uruchomcie ten sam program współbieżnie, - jaki jest czas wykonania programu w w/w przypadkach? ==== Informacje dodatkowe: Blokowanie dostępu za pomocą pliku (file lock) ===== Dany jest kod: <code php> echo 'Wejscie do sekcji krytycznej<br>'; $start=time(); $fp = fopen('semafor', 'r+'); if (flock($fp, LOCK_EX)) { echo 'Jestem w sekcji krytycznej<br>'; /* tutaj kod sekcji krytycznej */ flock($fp, LOCK_UN); echo 'Wyjscie z sekcji krytycznej<br>'; echo 'Czas wykoania: '.(time()-$start).'<br>'; } else { echo 'Problemy z blokada...<br>';} fclose($fp); </code> Działanie w/w kodu możesz przetestować w poniższy sposób: - dodaj odpowiednie znaczniki i umieść go w pliku z rozszerzeniem ''.php'' na serwerze, - w tym samym katalogu utwórz plik ''semafor'', - za pomocą przeglądarki uruchom skrypt, - korzystając z pomocy innego studenta uruchomcie skrypt współbieżnie, - jaki jest czas wykonania skryptu w w/w przypadkach?
pl/paw/lab_paw_php_3.txt
· ostatnio zmienione: 2022/12/10 17:19 przez
wojnicki
Narzędzia strony
Pokaż stronę
Poprzednie wersje
Odnośniki
Do góry