SSK - Techniki Internetowe



Podobne dokumenty
9. Dynamiczne generowanie grafiki, cz. 3

SZABLONY KOMUNIKATÓW SPIS TREŚCI

Przedmiot: Projektowanie dokumentów WWW. Laboratorium 3: Strona domowa cz. III Formularze. Opracował: Maciej Chyliński

Formularze i ramki w HTML

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH

Wtedy wystarczy wybrać właściwego Taga z listy.

Systemy mikroprocesorowe - projekt

Audyt SEO. Elementy oraz proces przygotowania audytu. strona

Wdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x

WYKŁAD 1 SYSTEMY CMS CZĘŚĆ 1

Pierwsze kroki. Krok 1. Uzupełnienie danych własnej firmy

Poniżej instrukcja użytkowania platformy

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

Microsoft Management Console

Kreacje tekstowe emitowane w sieci BusinessClick występują samodzielnie lub wraz z przypisanymi im kreacjami graficznymi.

Spring MVC Andrzej Klusiewicz 1/18

Produkt finalny projektu Przedsiębiorcze szkoły jest dostępny na portalu projektu

SPECYFIKACJA TECHNICZNA

STRONA GŁÓWNA SPIS TREŚCI. Zarządzanie zawartością stron... 2 Tworzenie nowej strony... 4 Zakładka... 4 Prawa kolumna... 9

MySource Matrix CMS - PROSTY INTERFEJS UŻYTKOWNIKA. INSTRUKCJA ver 1.2

1. Korzyści z zakupu nowej wersji Poprawiono Zmiany w słowniku Stawki VAT Zmiana stawki VAT w kartotece Towary...

Instrukcja programu PControl Powiadowmienia.

elektroniczna Platforma Usług Administracji Publicznej

INSTRUKCJA WebPTB 1.0

Wyższa Szkoła Zarządzania i Bankowości w Krakowie

Waldemar Pietrzak s5207. Projekt Wypożyczalnia Samochodów

Specyfikacja techniczna banerów Flash

W wyświetlonym okienku New Web Server Application wybierz opcję Web App Debugger Executable, a w polu Class Name wpisz: P1.

Spis treści. Rozdział 1 ewyniki. mmedica - INSTR UKC JA UŻYTKO W NIKA

Praca na wielu bazach danych część 2. (Wersja 8.1)

Opis obsługi systemu Ognivo2 w aplikacji Komornik SQL-VAT

Projekt z dnia 2 listopada 2015 r. z dnia r.

1. Warunki. 2. Zakładanie konta. 3. Logowanie. 4. Korzystanie z portalu partnera serwisowego 5. Subkonta 5.1Zakładanie subkonta. 5.

Strona główna góra

INSTRUKCJA TESTOWANIA USŁUG NA PLATFORMIE ELA-ENT

ECDL Advanced Moduł AM3 Przetwarzanie tekstu Syllabus, wersja 2.0

WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania

Regulamin serwisu internetowego ramowka.fm

Rejestr Windows - cz. II

Program Google AdSense w Smaker.pl

Tomasz Greszata - Koszalin

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007

Instrukcja dotycząca generowania klucza dostępowego do Sidoma v8

Przekształcenie danych przestrzennych w interaktywne mapy dostępne na stronach www (WARSZTATY, poziom podstawowy)

Instalacja programu. Omówienie programu. Jesteś tu: Bossa.pl

Automatyzacja procesu publikowania w bibliotece cyfrowej

Polityka prywatności strony internetowej wcrims.pl

REJESTRATOR RES800 INSTRUKCJA OBSŁUGI

VLAN Ethernet. być konfigurowane w dowolnym systemie operacyjnym do ćwiczenia nr 6. Od ćwiczenia 7 należy pracować ć w systemie Linux.

Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

Platforma do obsługi zdalnej edukacji

POLITYKA PRYWATNOŚCI SKLEPU INTERNETOWEGO

Wykonanie strony internetowej projektu wraz z hostingiem i administracją

Technologie internetowe Internet technologies Forma studiów: Stacjonarne Poziom kwalifikacji: I stopnia. Liczba godzin/tydzień: 2W, 2L

Część 2 struktura e-paczki

ZAPYTANIE OFERTOWE. MERAWEX Sp. z o.o Gliwice ul. Toruńska 8. ROZWÓJ PRZEDSIĘBIORSTWA MERAWEX Sp. z o.o. POPRZEZ EKSPORT.

INSTRUKCJA Projektowanie plików naświetleń (rozkładówek + rozbiegówek) oraz pliku okładki dla albumu z okładką personalizowaną.

Kto tak naprawdę odwiedza Twoją stronę?

Logowanie do systemu Faktura elektroniczna

Regulamin korzystania z Systemu invooclip przez Adresata i Odbiorcę

Spis procedur i programów

Regulamin uczestnictwa w kursach internetowych dla nauczycieli. Definicje:

PODRĘCZNIK UŻYTKOWNIKA

Konfiguracja Wyszukiwarki

Chmura obliczeniowa. do przechowywania plików online. Anna Walkowiak CEN Koszalin

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

Jak spersonalizować wygląd bloga?

Charakterystyka systemów plików

I. Zakładanie nowego konta użytkownika.

INSTRUKCJA KORZYSTANIA Z ELEKTRONICZNEJ ŚCIEŻKI WYKAZÓW

Ćwiczenia graficzne.

Komputer i urządzenia z nim współpracujące

Instrukcja obsługi platformy zakupowej e-osaa (klient podstawowy)

ARAKS FAKTURY Instalujemy program i wystawiamy fakturę krok po kroku, oraz co wyróżnia nasz program od innych. - 1

Harmonogramowanie projektów Zarządzanie czasem

REJESTRACJA NA LEKTORATY Z JĘZYKÓW OBCYCH

Przed Tobą znajduje się kilka prostych zadań praktycznych dotyczących języka HTML.

Opis instalacji systemu Intranet Komunikator

INTERAKTYWNA APLIKACJA MAPOWA MIASTA RYBNIKA INSTRUKCJA OBSŁUGI

Platforma zamówień personelu JOBMAN.pl

Odliczenie w PFR PIT-37 ulgi na dzieci Tak Nie

Logowanie do mobilnego systemu CUI i autoryzacja kodami SMS

Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej

FRAKTAL STUDIO CELNE

Instrukcja Obsługi STRONA PODMIOTOWA BIP

Kancelaris - Zmiany w wersji 2.50

VinCent Office. Moduł Drukarki Fiskalnej

Konfiguracja historii plików

Opis zmian funkcjonalności platformy E-GIODO wprowadzonych w związku z wprowadzeniem możliwości wysyłania wniosków bez podpisu elektronicznego

Ćwiczenie: "Ruch harmoniczny i fale"

Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych ul. Koszykowa 75, Warszawa

Elementy animacji sterowanie manipulatorem

SPECYFIKACJA TECHNICZNA D GEODEZYJNA OBSŁUGA BUDOWY

Co nowego w systemie Kancelaris 3.31 STD/3.41 PLUS

SKRÓCONA INSTRUKCJA OBSŁUGI ELEKTRONICZNEGO BIURA OBSŁUGI UCZESTNIKA BADANIA BIEGŁOŚCI

Ramki tekstowe w programie Scribus

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

emszmal 3: Automatyczne księgowanie przelewów w menedżerze sprzedaży BaseLinker (plugin dostępny w wersji ecommerce)

System zarządzania bazą danych (SZBD) Proces przechodzenia od świata rzeczywistego do jego informacyjnej reprezentacji w komputerze nazywać będziemy

Transkrypt:

SSK - Techniki Internetowe Ćwiczenie 4. Elementy grafiki w PHP. Prosty chat wykorzystujący elementy języka PHP. Elementy grafiki w PHP Możliwości PHP nie ograniczają się jedynie do generowania kodu HTML. Może on również służyć do tworzenia i manipulacji plikami graficznymi w różnych formatach: gif, png, jpg, wbmp oraz xpm. PHP potrafi wysłać obrazek strumieniem do przeglądarki. Aby użyć funkcji operujących na obrazkach, PHP musi mieć wkompilowaną obsługę biblioteki GD. PHP może potrzebować również innych bibliotek, w zależności od tego z jakim formatem graficznym chcemy pracować. Biblioteka GD od wersji 1.6 nie obsługuje formatu GIF. Na początek zmodyfikujemy nasz licznik z poprzedniego ćwiczenia (skrypt31.php) tak, aby jego cyfry wyświetlały się w formie graficznej. Skrypt ten nie będzie jednak jeszcze korzystał z graficznych funkcji PHP - wykorzystamy je dopiero w następnym przykładzie. Przed uruchomieniem skryptu należy wykonać następujące czynności: w katalogu public_html utworzyć katalog o nazwie obrazy; zmienić prawa dostępu do katalogu obrazy tak, aby inni użytkownicy mieli możliwość zapisywania w nim; pobrać ze strony http://po.opole.pl/~bartecki/php/cyfry.zip plik z cyframi; rozpakować go i umieścić w utworzonym katalogu obrazy. A oto zawartość skryptów realizujących nasz prosty licznik w wersji graficznej (zgodnie z życzeniem staram się nie używać w skryptach polskich znaków ;-) : skrypt41.php <?php include( "licznik.php" ); <TITLE> Strona testowa </TITLE> <META HTTP-EQUIV="content-type" CONTENT="text/html; CHARSET=iso-8859-2"> <META name="pragma" CONTENT="no-cache"> <BODY> Strona 1

<? $cyfry = strrev(strval($ile)); // odwracamy kolejnosc znakow zmiennej // $ile, poniewaz nasze cyfry bedziemy // wyswietlac "od konca" echo "Ta strona byla ogladana "; $i = strlen($cyfry)-1; do // wyswietlamy w petli poczatkowe zera, tak aby // lacznie wyswietlalo sie zawsze 5 cyfr licznika echo "<IMG SRC=obrazy/0.gif ALIGN=top border=0>"; $i++; while($i<4); $i = strlen($cyfry)-1; do // wyswietlamy w petli kolejne cyfry licznika echo "<IMG SRC=obrazy/$cyfry[$i].gif ALIGN=top border=0>"; $i--; while($i>=0); echo " razy."; licznik.php (ten sam, co ostatnio) <?php // plik acces.log w katalogu logs b dzie zawieral // zapisana liczbe odwiedzin naszej strony $LogFilePath="logs/access.log"; if(file_exists($logfilepath)) // sprawdzamy, czy plik istnieje // jesli tak, to: $file=fopen($logfilepath, "r"); // otwieramy plik do odczytu flock($file, 1); // blokujemy do odczytu $ile=fgets($file, 100); // odczytujemy wartosc // odblokowujemy plik // zamykamy plik $ile++; // zwiekszamy wartosc licznika o 1 else $ile=1; // je li plik nie istnieje, // s to pierwsze odwiedziny Strona 2

$file=fopen($logfilepath, "w"); flock($file, 2); fwrite($file, $ile); // za ka dym razem natomiast: // otwieramy plik do zapisu // blokujemy do zapisu // zapisujemy wartosc zmiennej $ile // odblokowujemy plik // zamykamy plik Proszę przeanalizować składnię pierwszego ze skryptów. Przetestować działanie licznika, przeładowując go wielokrotnie (jak pamiętamy, w tej wersji nie jest on odporny na odświeżanie). Spróbować wprowadzić drobne modyfikacje, np. zwiększyć lub zmniejszyć liczbę wyświetlanych cyfr licznika. Kolejny skrypt będzie modyfikacją drugiego przykładu z poprzedniego ćwiczenia, tzn. licznika odwiedzin bazującego na cookies (skrypt32.php). Tym razem wykorzystamy niektóre z graficznych funkcji PHP. A oto opis składni wykorzystywanych w skrypcie funkcji: $obrazek = ImageCreate($szer,$wys); Funkcja ta tworzy pusty obrazek o określonych rozmiarach. Wynik zwraca w postaci zmiennej $obrazek. Parametry funkcji: $szer, $wys (typu int) szerokość oraz wysokość (w pikselach) tworzonego obrazka. $obrazek = ImageCreateFromJPEG($plik); Funkcja ta tworzy zmienną reprezentującą obrazek, na podstawie istniejącego pliku w formacie JPEG. Parametr: $plik (typu string) nazwa (lub URL) pliku JPEG. $szer = ImagesX($obrazek); $wys = ImagesY($obrazek); Funkcje te zwracają odpowiednio: szerokość oraz wysokość obrazka określonego zmienną $obrazek. ImageCopyResized($cel,$zrodlo,$celX,$celY,$zrodloX,$zrodloY, $celszer,$celwys,$zrodloszer,$zrodlowys); Funkcja ta kopiuje (oraz ewentualnie przeskalowuje) prostokątny fragment obrazka źródłowego i umieszcza w obrazku docelowym. Parametry: Strona 3

$cel, $zrodlo (typu resource) zmienne określające obrazek docelowy oraz źródłowy (kopiowany); $celx, $cely, $zrodlox, $zrodloy, (typu int) zmienne określające współrzędne obszaru kopiowania (lewy górny róg prostokąta z obrazkiem docelowym oraz źródłowym); $celszer, $celwys, $zrodloszer, $zrodlowys, (typu int) zmienne określające szerokość oraz wysokość (w pikselach) obszaru kopiowania. Przed uruchomieniem skryptu należy: pobrać plik z cyframi: http://po.opole.pl/~bartecki/php/cyfry.jpg zapisać go w swoim katalogu o nazwie obrazy. Jak widać, tym razem wszystkie cyfry znajdują się w jednym pliku nasz skrypt przed wyświetleniem zawartości licznika będzie musiał przeprowadzać obróbkę, graficzną, polegającą na przycięciu i skopiowaniu odpowiednich cyfr z pliku cyfry.jpg, oraz wklejeniu ich do obrazka docelowego. Oto jego zawartość: skrypt42.php <? @$ile++; setcookie("ile", $ile); // ladujemy obrazek z cyframi z pliku $cyfry=imagecreatefromjpeg("obrazy/cyfry.jpg"); // okreslamy wysokosc i szerokosc // (w pikselach) cyfr w obrazku $wys1=imagesy($cyfry); $szer1=imagesx($cyfry)/10; // definiujemy stale okreslajace zadana wysokosc // oraz szerokosc (w pikselach) cyfry licznika define("wys2",26); define("szer2",13); // okreslamy maksymalna dlugosc (liczbe cyfr) licznika define("maks_dlug",5); // tworzymy pusty (na razie) obrazek o odpowiednich rozmiarach $licznik=imagecreate(szer2*strlen($ile), WYS2); // kopiujemy odpowiednie fragmenty obrazka zrodlowego ($cyfry) // do obrazka docelowego ($licznik) for($i=0;$i<maks_dlug;$i++) ImageCopyResized($licznik, $cyfry, SZER2*$i, 0, $szer1*substr($ile, $i, 1),0, SZER2, WYS2, $szer1, $wys1); // wysylamy gotowy obrazek do pliku ImageJPEG($licznik,"obrazy/licznik.jpg"); Strona 4

<TITLE> Strona z licznikiem graficznym </TITLE> <BODY BGCOLOR=DARKGREEN TEXT=WHITE> <H1> Odwiedzasz te strone po raz <IMG SRC="obrazy/licznik.jpg" ALIGN=MIDDLE> </H1> Proszę przeanalizować dokładnie składnię skryptu. Przetestować działanie licznika, przeładowując go wielokrotnie. Spróbować wprowadzić własne modyfikacje, np. zmienić rozmiar (w pikselach) cyfr licznika, wprowadzić zera początkowe, tak, aby liczba wyświetlanych cyfr była stała (jak w przykładzie poprzednim). Chat wykorzystujący elementy PHP W tym punkcie spróbujemy napisać prostego chata. Okno przeglądarki podzielimy ramkami na dwie części. W dolnej będzie znajdował się formularz, zawierający jedno pole do wpisywania tekstu, w górnej zaś będzie wyświetlać się treść rozmowy. W górnej ramce umieścimy znacznik META powodujący odświeżanie zawartości strony co 2 sekundy. Skrypt obsługujący formularz umieścimy w tym samym pliku, co formularz. Dzięki temu użytkownik po wpisaniu linijki tekstu będzie mógł od razu zacząć pisać następną. Chat będzie wymagał stworzenia 4 plików: chat.html - plik zawierający definicję ramek; gora.php - górna ramka, zawierająca skrypt wyświetlający rozmowę; dol.php - dolna ramka, zawierająca formularz i skrypt do jego obsługi; imie.html strona umożliwiająca wpisanie imienia. Skrypt w pliku dol.php musi mieć możliwość zapisu do pliku chat.txt w naszym katalogu logs. W pliku tym będzie przechowywana treść rozmowy. A oto zawartość poszczególnych plików (tym razem bez komentarzy): chat.html <TITLE> Chat </TITLE> <FRAMESET ROWS="*, 60" FRAMEBORDER=0 FRAMESPACING=0 BORDER=0> <FRAME SRC=gora.php NAME="gora"> <FRAME SRC=imie.html NAME="dol" SCROLLING=NO> </FRAMESET> Strona 5

gora.php <META http-equiv="content-type" content="text/html; charset=iso-8859-2"> <META HTTP-EQUIV="REFRESH" CONTENT="2"> <BODY BGCOLOR=AQUA TEXT=BLACK> <TABLE BORDER=1 CELLPADDING=5 CELLSPACING=0 WIDTH=500 HEIGHT=350> <TR><TD VALIGN=TOP> <FONT CLASS=text> <? $chatfile="logs/chat.txt"; if(file_exists($chatfile)) $file=fopen($chatfile, "r"); flock($file, 1); while($linia=fgets($file, 81)) echo($linia); echo("<br>"); </FONT> </TR></TD></TABLE> dol.php <META http-equiv="content-type" content="text/html; charset=iso-8859-2"> <BODY BGCOLOR=AQUA TEXT=BLACK> <FORM METHOD=GET ACTION=dol.php NAME=formularz> <INPUT TYPE=HIDDEN NAME=ACTION VALUE=add> <INPUT TYPE=TEXT SIZE=80 MAXLENGTH=80 NAME=TEKST> Strona 6

<? $chatfile="logs/chat.txt"; if(@$action=="add") if(file_exists($chatfile)) $file=fopen($chatfile, "r"); flock($file, 1); for($linenr=1;true;$linenr++) $linia=fgets($file, 81); if(!$linia) break; $linie[$linenr]=$linia; $nlines=$linenr; $file=fopen($chatfile, "w"); flock($file, 2); if($nlines<16) $linenr=1; else $linenr=2; for(;$linenr<$nlines;$linenr++) fwrite($file, $linie[$linenr]); fwrite($file, "<FONT COLOR=$KOLOR>$IMIE></FONT> $TEKST"); fwrite($file, "\n"); echo("<input TYPE=HIDDEN NAME=IMIE VALUE=$IMIE>"); $kolory[0]="black"; $opisy[0]="czarny"; $kolory[1]="blue"; $opisy[1]="niebieski"; $kolory[2]="red"; $opisy[2]="czerwony"; $kolory[3]="green"; $opisy[3]="zielony"; if(@$kolor=="") $KOLOR="black"; echo("<select NAME=KOLOR>"); for($i=0;$i<4;$i++) Strona 7

echo("<option VALUE=$kolory[$i]"); if($kolory[$i]==$kolor) echo(" SELECTED"); echo(">$opisy[$i]</option>"); echo("</select>"); </FORM> <SCRIPT LANGUAGE="JavaScript"> <!-- document.formularz.tekst.focus(); // --> </SCRIPT> imie.html <META http-equiv="content-type" content="text/html; charset=iso-8859-2"> <BODY BGCOLOR=AQUA TEXT=BLACK> <FORM METHOD=GET ACTION=dol.php> Wpisz swoje imie: <INPUT TYPE=TEXT SIZE=80 MAXLENGTH=80 NAME=IMIE> </FORM> Proszę przetestować działanie skryptów. Można poprosić kolegę (koleżankę), aby zechciał(a) wejść na nasz chat i porozmawiać z nami ;-). Przeanalizować składnię skryptów wykorzystują one wyłącznie poznane przez nas dotychczas na zajęciach elementy PHP. Strona 8