zadanie5.pdf

(201 KB) Pobierz
Aplikacje WWW - laboratorium
PHP + bazy danych
Celem ćwiczenia jest przygotowanie prostej aplikacji internetowej wykorzystującej
technologię PHP. Ćwiczenie prezentuje podstawowe aspekty poprawnego programowania
aplikacji internetowej wykorzystującej bazę danych (wiązanie zmiennych, ochrona przed
włamaniem typu „SQL injection”, rozróŜnienie między metodami GET i POST, ochrona
przed wielokrotnym zgłoszeniem tego samego formularza).
Ćwiczenie moŜna wykonać na dowolnym komputerze, którym zainstalowano serwer HTTP
(np. Apache) z obsługą PHP oraz bazę danych MySQL. Rozwiązania ćwiczeń omawianych w
poniŜszym zestawie zostały przygotowane z wykorzystaniem pakietu XAMPP (wersja
1.6.6.a, dostępnego pod adresem: http://www.apachefriends.org/en/xampp.html ), który jest
zestawem programów pozwalających na szybkie rozpoczęcie pracy z skryptami PHP. W
skład pakietu wchodzą, między innymi, następujące, wstępnie skonfigurowane narzędzia:
Apache, PHP, MySQL, FileZilla, Perl, OpenSSL, MercuryMail, Webalizer i inne.
1. Pierwszym krokiem ćwiczenia będzie ilustracja znaczenia wiązania zmiennych przy
zapytaniach do bazy danych. Połącz się z instancją iSQLPlus i zaloguj na swoje konto
w bazie danych Oracle. Następnie, uruchom poniŜsze skrypty i przeanalizuj czas ich
działania.
SET TIMING ON
DECLARE
l_sql VARCHAR (100) := 'SELECT COUNT(*) FROM obj WHERE object_id = ';
l_cnt NUMBER := 0;
BEGIN
FOR i IN 1..1000 LOOP
EXECUTE IMMEDIATE l_sql || i INTO l_cnt;
END LOOP ;
END ;
SET TIMING ON
DECLARE
l_sql VARCHAR (100) := 'SELECT COUNT(*) FROM obj WHERE object_id = :id';
l_cnt NUMBER := 0;
BEGIN
FOR i IN 1..1000 LOOP
EXECUTE IMMEDIATE l_sql INTO l_cnt USING i;
END LOOP ;
END ;
848174941.045.png 848174941.046.png 848174941.047.png 848174941.048.png 848174941.001.png 848174941.002.png
 
2. Uruchom panel kontrolny pakietu XAMPP i uruchom serwery Apache i MySQL.
3. Otwórz w przeglądarce adres http://localhost/phpmyadmin/ i utwórz nową bazę
danych o nazwie „instytut”.
4. Utwórz tabelę ETATY o strukturze
KOLUMNA
TYP
WŁA Ś CIWO Ś CI
NAZWA
VARCHAR(10)
PRIMARY KEY
PLACA_OD
DECIMAL(6,2)
NULL
PLACA_DO
DECIMAL(6,2)
NULL
5. Po utworzeniu tabeli kliknij na zakładkę Import w pasku narzędziowym. Utwórz plik
o nazwie etaty.sql i wypełnij go poniŜszą zawartością. Następnie, wykorzystaj
formularz do importowania danych aby załadować zawartość pliku do tabeli ETATY .
Upewnij się, Ŝe jako format importowanego pliku zaznaczono „SQL”.
INSERT INTO `etaty` (`NAZWA`, `PLACA_OD`, `PLACA_DO`)
VALUES
('PROFESOR', 3000.00, 4000.00),
('ADIUNKT', 2510.00, 3000.00),
('ASYSTENT', 1500.00, 2100.00),
('DOKTORANT', 800.00, 1000.00),
('SEKRETARKA', 1470.00, 1650.00),
('DYREKTOR', 4280.00, 5100.00);
848174941.003.png 848174941.004.png 848174941.005.png 848174941.006.png 848174941.007.png 848174941.008.png 848174941.009.png 848174941.010.png 848174941.011.png 848174941.012.png 848174941.013.png 848174941.014.png 848174941.015.png 848174941.016.png 848174941.017.png 848174941.018.png
 
6. Po załadowaniu danych kliknij na zakładkę Browse i sprawdź, czy dane zostały
poprawnie załadowane do tabeli ETATY .
7. Analogicznie, utwórz tabelę ZESPOLY o strukturze jak poniŜej.
KOLUMNA
TYP
WŁA Ś CIWO Ś CI
ID_ZESP
SMALLINT(6)
PRIMARY KEY
NAZWA
VARCHAR(20)
NULL
ADRES
VARCHAR(50)
NULL
8. Utwórz plik zespoly.sql , wypełnij go poniŜszą zawartością i załaduj zawartość
pliku do tabeli ZESPOLY .
INSERT INTO `zespoly` (`ID_ZESP`, `NAZWA`, `ADRES`)
VALUES
(10, 'ADMINISTRACJA', 'PIOTROWO 2'),
(20, 'SYSTEMY ROZPROSZONE', 'PIOTROWO 3A'),
(30, 'SYSTEMY EKSPERCKIE', 'STRZELECKA 14'),
(40, 'ALGORYTMY', 'WIENIAWSKIEGO 16'),
(50, 'BADANIA OPERACYJNE', 'MIELZYNSKIEGO 30');
848174941.019.png 848174941.020.png 848174941.021.png 848174941.022.png 848174941.023.png 848174941.024.png 848174941.025.png 848174941.026.png 848174941.027.png 848174941.028.png 848174941.029.png 848174941.030.png 848174941.031.png
 
9. Kliknij na zakładkę SQL w panelu nawigacyjnym i umieść w oknie następujące
polecenie:
DROP TABLE IF EXISTS `pracownicy`;
CREATE TABLE `pracownicy` (
`ID_PRAC` SMALLINT(6),
`NAZWISKO` VARCHAR(30) NOT NULL ,
`IMIE` VARCHAR(15) NULL ,
`ETAT` VARCHAR(10) NULL ,
`ID_SZEFA` SMALLINT (6),
`ZATRUDNIONY` DATE DEFAULT NULL ,
`PLACA_POD` DECIMAL (6,2) DEFAULT NULL ,
`PLACA_DOD` DECIMAL (6,2) DEFAULT NULL ,
`ID_ZESP` SMALLINT (6) DEFAULT NULL ,
PRIMARY KEY (ID_PRAC),
FOREIGN KEY (ID_SZEFA) REFERENCES pracownicy(ID_PRAC),
FOREIGN KEY (ID_ZESP) REFERENCES zespoly(ID_ZESP)
) TYPE =MyISAM;
a następnie wypełnij tabelę PRACOWNICY poniŜszymi danymi:
INSERT INTO `pracownicy` VALUES
(100, 'Marecki', 'Jan', 'DYREKTOR', NULL, '1968-01-01', 4730.00, 980.50, 10),
(110, 'Janicki', 'Karol', 'PROFESOR', 100, '1973-05-01', 3350.00, 610.00, 40),
(120, 'Nowicki', 'Pawel', 'PROFESOR', 100, '1977-09-01', 3070.00, NULL, 30),
(130, 'Nowak', 'Piotr', 'PROFESOR', 100, '1968-07-01', 3960.00, NULL, 20),
(140, 'Kowalski', 'Adam', 'PROFESOR', 130, '1975-09-15', 3230.00, 805.00, 20),
(150, 'Grzybowska', 'Maria', 'ADIUNKT', 130, '1977-09-01', 2845.50, NULL, 20),
(160, 'Krakowska', 'Anna', 'SEKRETARKA', 130, '1985-03-01', 1590.00, NULL, 20),
(170, 'Opolski', 'Roman', 'ASYSTENT', 130, '1992-10-01', 1839.70, 480.50, 20),
(190, 'Kotarski', 'Konrad', 'ASYSTENT', 140, '1993-09-01', 1971.00, NULL, 20),
(180, 'Makowski', 'Marek', 'ADIUNKT', 100, '1985-02-20', 2610.20, NULL, 10),
(200, 'Przywarek', 'Leon', 'DOKTORANT', 140, '1994-07-15', 900.00, NULL, 30),
(210, 'Kotlarczyk', 'Jan', 'DOKTORANT', 130, '1993-10-15', 900.00, 570.60, 30),
(220, 'Siekierski', 'Jacek', 'ASYSTENT', 110, '1993-10-01', 1889.00, NULL, 20),
(230, 'Dolny', 'Tomasz', 'ASYSTENT', 120, '1992-09-01', 1850.00, 390.00, NULL);
10. Kliknij na odnośnik Server: localhost u góry ekranu aby powrócić do głównego
ekranu programu phpMyAdmin. Kliknij na odnośnik Privileges . Kliknij na odnośnik
Add a new user i utwórz lokalnego uŜytkownika SCOTT z hasłem TIGER. Zwróć
uwagę, aby uŜytkownik był lokalny. Nie generuj nowej bazy danych dla uŜytkownika
i nie nadawaj uŜytkownikowi Ŝadnych przywilejów globalnych.
848174941.032.png 848174941.033.png 848174941.034.png 848174941.035.png 848174941.036.png 848174941.037.png 848174941.038.png 848174941.039.png
 
11. Kliknij na odnośnik instytut(3) w lewym panelu nawigacyjnym, a następnie przejdź do
zakładki Privileges . Kliknij na ikonę edycji przywilejów przy uŜytkowniku SCOTT .
Znajdź grupę przywilejów specyficznych dla danej bazy danych i z listy rozwijanej
wybierz bazę danych instytut .
12. Kliknij odnośnik Check All aby nadać uŜytkownikowi SCOTT wszystkie przywileje
do bazy danych instytut i kliknij przycisk go.
13. Pierwszy skrypt nawiąŜe połączenie z bazą danych i wyświetli podstawowe
informacje o serwerze bazy danych. Utwórz plik file01.php i umieść w nim
poniŜszy kod.
<?php
$link = mysqli_connect ("localhost", "scott", "tiger", "instytut");
if (!$link) {
printf("Connect failed: %s\n", mysqli_connect_error ());
exit();
}
printf("<h1>Host information</h1>");
printf("<ul>");
printf("<li>server information: %s</li>", mysqli_get_server_info ($link));
printf("<li>character version: %s</li>", mysqli_character_set_name ($link));
printf("<li>host information: %s</li>", mysqli_get_host_info ($link));
printf("</ul");
mysqli_close ($link);
?>
848174941.040.png 848174941.041.png 848174941.042.png 848174941.043.png 848174941.044.png
 
Zgłoś jeśli naruszono regulamin