Szablon główny (plik guestbook.php) będzie miał postać:



Podobne dokumenty
SSK - Techniki Internetowe

Dane - pobieranie, przekazywanie i przechowywanie. dr Beata Kuźmińska-Sołśnia

Laboratorium 1 Wprowadzenie do PHP

Na początku utworzymy formularz w czystym języku HTML i przetestujemy go za pomocą przeglądarki WWW.

SIECI KOMPUTEROWE I BAZY DANYCH

Podstawy JavaScript ćwiczenia

Aplikacje WWW - laboratorium

Formularze w PHP dla początkujących

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

Przykładowa integracja systemu Transferuj.pl

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Komunikacja między klientem, a skryptem PHP, oraz operacje na plikach

MVC w praktyce tworzymy system artykułów. cz. 2

Aplikacje WWW - laboratorium

Aplikacje WWW - laboratorium

Formularze HTML. dr Radosław Matusik. radmat

Wprowadzenie do Internetu Zajęcia 5

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr Prosta obsługa Bazy w PHP

Programowanie internetowe

Poszczególne elementy serwisu można umieścić dla porządku w odpowiednio przemyślanym drzewie katalogów, i tak: -

Instrukcje dołączania plików

INSTALACJA I KONFIGURACJA SERWERA PHP.

Przykład programu w PHP. Wykład10.PHP ciągdalszy,str.1

Podstawy programowania (PHP/Java)

Przykładowa integracja systemu tpay.com KIP S.A. ul. Św. Marcin 73/ Poznań.

Michał Bielecki, KNI 'BIOS'

Obiektowe bazy danych

Zajęcia 4 - Wprowadzenie do Javascript

Programowanie internetowe

Zdarzenia Zdarzenia onload i onunload

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Laboratorium 6 Tworzenie bloga w Zend Framework

Podstawowe wykorzystanie Hibernate

Funkcje i instrukcje języka JavaScript

Język PHP. Studium Podyplomowe Sieci Komputerowe i Aplikacje Internetowe. v1.7, 2007/11/23

Internetowe bazy danych

Technologie informacyjne lab. 4

Programowanie WEB PODSTAWY HTML

4. Pliki Informacje ogólne o dostępie do plików w PHP Sprawdzanie istnienia pliku file_exists()

13. Konfiguracja proxy http, smtp, pop3, ftp, ssl

Napisy w PHP. Drukowanie napisów instrukcją echo

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

Pliki. Informacje ogólne. Obsługa plików w języku C

Pliki. Wywołanie fopen ma schematyczną postać: fopen('nazwa_pliku', 'tryb_otwarcia')

Wykład 03 JavaScript. Michał Drabik

Autor: Joanna Karwowska

PHP5. Praktyczny kurs

Zaawansowane aplikacje internetowe

JAK W NAGŁÓWKU STRONY LUB BLOGA

Systemy internetowe. Wykład 3 PHP. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Obiekt navigator. Dodał Administrator wtorek, 16 marzec :32

Projekt strony internetowej firmy organizującej przyjęcia

Dokonaj analizy poniŝszego kodu i na jego podstawie wyświetl w oknie przeglądarki swoje Imię oraz Nazwisko przy uŝyciu instrukcji echo i print

Zajęcia 13 wykorzystanie MySQL w PHP cz. 2

Operacje na ciągach. Łączenie ciągów

Young Programmer: HTML+PHP. Dr inż. Małgorzata Janik, Zajęcia #2

Systemy internetowe HTML

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

Bazy Danych i Usługi Sieciowe

Wykład 2 TINT. XHTML tabele i ramki. Zofia Kruczkiewicz

Personal Home Page PHP: Hypertext Preprocessor

do drukowania tekstu służy funkcja echo <?php echo "hello world!";?> jeżeli użyjemy jej kilka razy: <?php

HTML (HyperText Markup Language) hipertekstowy język znaczników

PHP w-3. Sterowanie w PHP

Współpraca PHP z MySql cz.2

LABORATORIUM 2 WSTĘP DO SIECI TELEINFORMATYCZNYCH TABELE I FORMULARZE

Baza danych do przechowywania użytkowników

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Odsyłacze. Style nagłówkowe

Kurs języka PHP dla początkujących. Ryszard Rogacz 2019

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

KaŜda instrukcja musi być zakończona średnikiem ;!!!

JAVAScript w dokumentach HTML (2)

SIECI KOMPUTEROWE I BAZY DANYCH

Tworzenie stron internetowych RAMKI

14. POZOSTAŁE CIEKAWE FUNKCJE

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Umieszczanie kodu. kod skryptu

Współpraca PHP z MySql

JavaScript - wykład 4. Zdarzenia i formularze. Obsługa zdarzeń. Zdarzenia. Mysz. Logiczne. Klawiatura. Beata Pańczyk

Ćwiczenie 7 - PHP (3)

Celem ćwiczenia jest zapoznanie z językiem HTML i JavaScript, zasadami tworzenia stron WWW i umieszczania na nich skryptów w języku JavaScript.

Podstawy technologii WWW

FORMULARZE Formularz ma formę ankiety, którą można wypełnić na stronie. Taki formularz może być np. przesłany pocztą elektroniczną .

Systemy internetowe Wykład 3 PHP

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Spis treści. Wstęp 5 Rozdział 1. Praca z AJAX-em 9. Rozdział 2. Współpraca ze skryptami PHP 55. Rozdział 3. Obsługa formularzy 81

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Ćwiczenie: JavaScript Cookies (3x45 minut)

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Laboratorium 7 Blog: dodawanie i edycja wpisów

Aplikacje internetowe - laboratorium

Aplikacje internetowe laboratorium JavaScript

Plik jest reprezentowany przez strumień znaków (bajtów) o zmiennej długości. Koniec strumienia identyfikowany jest znacznikiem końca pliku EOF.

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Biblioteka standardowa - operacje wejścia/wyjścia

Aplikacje internetowe laboratorium JavaScript

Transkrypt:

Skrypt: Księga gości Skrypt generujący księgę gości będzie się składał z trzech części: szablonu głównego, który należy zapisać pod nazwą guestbook.php, formularza służącego do dodawania wpisów, który należy zapisać pod nazwą add.inc, oraz skryptu zarządzającego wpisami, który należy zapisać pod nazwą guestbook.inc. Wygląd przykładowej księgi gości utworzonej przez taki zestaw skryptów obrazuje rysunek 1. Szablon główny (plik guestbook.php) będzie miał postać: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/tr/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; <title>księga gości</title> </head> <body> charset=iso-8859-2"> <p style="text-align:center;background-color:red; color:white;font-weight:bold"> Dodaj wpis: </p> <?php include("add.inc");?> <p style="text-align:center;background-color:red; color:white;font-weight:bold">

Rysunek 1. Przykładowa księga gości Aktualne </p> wpisy: <?php include("guestbook.inc");?> </body> </html> Zawiera on jedynie kod HTML tworzący strukturę strony. Znajdują się w nim dyrektywy include, które wczytują pozostałe części skryptu, czyli pliki add.inc i guestbook.inc. W pliku add.inc znajduje się formularz pozwalający na dodawanie wpisów. Formularz został utworzony za pomocą standardowych elementów języka HTML, czyli znaczników <form> oraz <input>; jest on pozycjonowany za pomocą typowej tabeli i ma postać: <form action="guestbook.php" method="post" > <table border="0" align="center" style="background-color:yellow;" > <tr> <td>imię: <td> <input type="text" name="imie" style="width:150"> <td>nazwisko:

<td> <input type="text" name="nazwisko" style="width:152"> <td>adres email: <td colspan="3"> <input type="text" name="email" style="width:380"> <td>wpis: <td colspan="3"> <textarea name="contents" rows="5" cols="45" style="width:380"></textarea> <td colspan="4" align="center"> <input type="submit" value="dodaj"> </tr> </table> </form> Częścią najważniejszą jest jednak sam skrypt zarządzający wpisami znajdujący się w pliku guestbook.inc: <?php function removetags($str) return htmlentities($str); function readguestbook() $contents = ""; if(($fp = fopen("guestbook.txt", "r")) === false) return false; while(!feof($fp)) $contents.= fgets($fp). "<br />"; return $contents; function addtoguestbook($imie, $nazwisko, $email, $contents) if(($fp = @fopen("guestbook.txt", "r")) === false) return false; $imie = removetags($imie); $nazwisko = removetags($nazwisko); $email = removetags($email); $contents = removetags($contents); $tempc = fread($fp, filesize("guestbook.txt"));

$fp = fopen("guestbook.txt", "w"); fputs($fp, $imie."\r\n"); fputs($fp, $nazwisko."\r\n"); fputs($fp, $email."\r\n"); fputs($fp, $contents."\r\n"); fputs($fp, "\r\n"); fputs($fp, $tempc); if(isset($_post["imie"])) $imie = $_POST["imie"]; $imie = ""; if(isset($_post["nazwisko"])) $nazwisko = $_POST["nazwisko"]; $nazwisko = ""; if(isset($_post["email"])) $email = $_POST["email"]; $email = ""; if(isset($_post["contents"])) $contents = $_POST["contents"]; $contents = ""; if($imie == "" && $nazwisko == "" && $email == "" && $contents == "") echo(readguestbook()); addtoguestbook($imie, $nazwisko, $email, $contents); echo(readguestbook());?> Wykonywanie kodu rozpoczyna się od odczytania zawartość tablicy $_POST i przypisania wartości poszczególnych pól do zmiennych: $imie, $nazwisko, $email i $contents. Jeśli po tym przypisaniu co najmniej jedna z wymienionych zmiennych nie zawiera pustego ciągu znaków, oznacza to, że użytkownik kliknął klawisz Dodaj i należy dokonać wpisu do księgi gości. Za dodanie nowego wpisu odpowiada funkcja o nazwie addtoguestbook. Wszystkie niezbędne dane dotyczące wpisu, czyli: imię, nazwisko, adres e-mail oraz treść wpisu, są

jej przekazywane w postaci argumentów. W tej funkcji otwierany jest plik guestbook.txt w trybie r, czyli tylko do odczytu, a następnie jego zawartość jest odczytywana i przypisywana tymczasowej zmiennej $tempc. Po wykonaniu wymienionych operacji plik jest zamykany za pomocą funkcji fclose, a następnie ponownie otwierany, tym razem w trybie w - tylko do zapisu. Otwarcie w tym trybie powoduje obcięcie długości pliku do zera, a tym samym skasowanie starej zawartości. Za pomocą serii instrukcji fputs zapisywane są zatem wszystkie nowe dane, a na końcu dopisywana jest zawartość tymczasowej zmiennej $tempc. Dzięki temu ostatnio wprowadzone przez użytkownika dane zawsze będą znajdowały się na początku księgi gości. Do wyświetlenia zawartości pliku guestbook.txt wykorzystywana jest funkcja print- GuestBook. Jej konstrukcja jest bardzo prosta - w pętli while za pomocą funkcji fgets są wczytywane i dopisywane do zmiennej $contents kolejne wiersze tekstu. Dodatkowo do każdego odczytanego łańcucha znaków jest dodawany znacznik HTML <br />. Ostatecznie, po osiągnięciu końca pliku, zmienna $contents będzie zawierała gotową do wyświetlenia na ekranie treść księgi gości. Skrypt zawiera również funkcjonalność polegającą na uniemożliwieniu użytkownikowi wprowadzenia do treści wpisu znaczników HTML, które mogłyby zaburzyć układ księgi. Taka blokada może być wprowadzona na wiele różnych sposobów, można na przykład zdefiniować, które znaczniki HTML będą akceptowane, i odrzucać pozostałe, można też filtrować wprowadzone dane i usuwać każdy napotkany znacznik (np. przy użyciu funkcji strip_tags). Innym sposobem jest wprowadzenie sekwencji znaków specjalnych. Należy wtedy zamienić wszystkie wystąpienia < na < i wszystkie wystąpienia > na > lub, lepiej, użyć funkcji htmlentities. Zaletą tego sposobu jest prostota oraz to, że w księdze pojawi się dokładnie to, co wpisał użytkownik, włącznie ze wszystkimi znacznikami. Wyboru konkretniej techniki pozbycia się niebezpieczeństwa związanego ze znacznikami HTML należy dokonać według własnych potrzeb i uznania. Za usuwanie znaczników odpowiada funkcja removetags i to od jej wewnętrznej realizacji zależy sposób wykonania tego zadania. W powyższym skrypcie została wykorzystana ostatnia z omawianych metod, czyli wprowadzenie do kodu sekwencji znaków specjalnych, za pomocą funkcji htmlentities. Funkcja removetags jest wywoływana w funkcji addtoguestbook i przetwarza zawartość zmiennych $imie, $nazwisko, $email i $contents.