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
;
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);
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');
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.
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);
?>
Plik z chomika:
M.Konieczny
Inne pliki z tego folderu:
MySQL+PHP+phpMyAdmin (prezentacja, przykłady).zip
(5841 KB)
hodowla.rar
(86 KB)
salon seat.rar
(62 KB)
filmoteka.zip
(13 KB)
zadanie_5.zip
(4 KB)
Inne foldery tego chomika:
Analiza danych (Program R)
Automatyczne systemy biblioteczno-informacyjne
Bibliografia
Bibliotekarstwo
Biblioteki cyfrowe
Zgłoś jeśli
naruszono regulamin