Zarządzanie systemami informatycznymi Pojęcie systemu informatycznego Tworzenie interaktywnego oprogramowania internetowego w PHP
Zakres wykładów Teoria systemu informatycznego Oprogramowanie internetowe w PHP Zarządzanie internetową bazą danych MySQL Konfiguracja i bezpieczeństwo serwerów httpd Bezpieczeństwo serwerów baz danych Metody szyfrowania i uwierzytelniania Tworzenie systemu uwierzytelniania użytkowników Protokoły sieciowe Protokoły bezpieczeństwa Serwerowe systemy operacyjne Zapory sieciowe Systemy wykrywania włamań sieciowych IDS
Literatura Barnett R.C. 2007: Apache. Zabezpieczenia aplikacji i serwerów WWW, Helion, Gliwice. Darie C., Brinzarea B., Chereches-Tosa F., Bucica M. 2006: AJAX i PHP. Tworzenie interaktywnych aplikacji internetowych, Helion, Gliwice Krysiak K. 2005: Sieci komputerowe. Kompendium. Helion, Gliwice. Kurose J. F., Ross K.W. 2010: Sieci komputerowe. Ujęcie całościowe, Helion, Gliwice. Schetina E., Green K., Carlson J. 2002: Bezpieczeństwo w sieci, Helion, Gliwice. Welling L., Thomson L. 2005: PHP i MySQL. Tworzenie stron WWW, Helion, Gliwice. http://www.php.net/manual/pl/index.php http://www.w3schools.com/php/
System informatyczny System informatyczny jest to zbiór powiązanych ze sobą elementów, którego funkcją jest przetwarzanie danych przy użyciu techniki komputerowej. Systemy informatyczne mogą być bardzo proste systemem takim może być na przykład edytor tekstu uruchamiany na jednym komputerze, oraz złożone jak na przykład system kontroli lotów na lotnisku, system bankowy, system zarządzający produkcją, systemy GIS i itp. Miarą złożoności systemu może być na przykład ilość elementów systemu połączona ze złożonością stosowanego oprogramowania mierzoną w ilości punktów funkcyjnych.
Elementy systemu informatycznego Sprzęt: urządzenia służące do przechowywania danych urządzenia służące do komunikacji między sprzętowymi elementami systemu urządzenia służące do komunikacji między ludźmi a komputerami urządzenia służące do odbierania danych ze świata zewnętrznego nie od ludzi (na przykład czujniki elektroniczne, kamery, skanery) urządzenia służące do wywierania wpływu przez systemy informatyczne na świat zewnętrzny elementy wykonawcze (na przykład silniki sterowane komputerowo, roboty przemysłowe, podłączony do komputera ekspres do kawy, sterowniki urządzeń mechanicznych) urządzenia służące do przetwarzania danych nie będące komputerami
Elementy systemu informatycznego Oprogramowanie Zasoby osobowe ludzie Elementy organizacyjne czyli procedury (procedury organizacyjne termin z zarządzania) korzystania z systemu informatycznego, instrukcje robocze itp. Elementy informacyjne; bazy wiedzy ontologie dziedziny/dziedzin, w których używany jest system informatyczny
System informatyczny LAMP System operacyjny: Linux Serwer www: Apache2 Serwer bazy danych: MySQL Interpreter języka skryptowego PHP Użytkownik Klient wysyla żądanie strony html lub php Skrypt php pobiera dane z bazy Klient przeglądarka Po wykonaniu skryptów php wyniki są wysyłane na stronę klienta (HTML, JavaScript) Serwer WWW np. Apache2 z interpreterem PHP Serwer bazy danych np. MySQL
Podstawy programowanie systemów w PHP PHP w HTML Stosowanie zmiennych Formularze Operatory Zarządzanie zmiennymi Instrukcje warunkowe Instrukcje iteracyjne Przechowywanie danych w plikach Stosowanie tablic Ciągi i wyrażenia regularne Tworzenie funkcji Łączenie z bazą danych
Język PHP PHP Hypertext Preprocessor - obiektowy, skryptowy język programowania zaprojektowany do generowania dynamicznych stron internetowych. Pierwsza wersja PHP, rozpowszechniana pod nazwą PHP/FI (Personal Home Page/Forms Interpreter), została stworzona przez Rasmusa Lerdorfa w roku 1994. Obecnie stosowana wersja - PHP 5.6 PHP najczęściej stosuje się do przetwarzania skryptów po stronie serwera WWW, ale może być on również używany z poziomu wiersza poleceń oraz w aplikacjach pracujących w trybie graficznym np. przy pomocy biblioteki GTK+. Implementacja PHP w środowisku Linux wraz z serwerem WWW Apache oraz serwerem baz danych MySQL określana jest jako platforma LAMP. Składnia PHP jest oparta na składni języków C, Java oraz Perl.
Osadzanie PHP w HTML <html> <head> <title>tytuł strony</title> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> <body> <h1>tytuł</h1> <?php echo 'skrypt php'; //komentarz?> </body> </html>
Style znaczników PHP Styl XML <?php echo <p>napis</p> ;?> Styl krótki <? echo <p>napis</p> ;?> Styl SCRIPT <SCRIPT LANGUAGE= php > echo <p>napis</p> ;</SCRIPT> Styl ASP (ASP.NET Active Server Pages) <% echo <p>napis</p> %> Komentarze: W stylu C /*...*/ W stylu C++ //komentarz W stylu skryptów powłoki # komentarz
Stosowanie zmiennych Zmienne formularza Zmienne zadeklarowane Rzutowanie typu
Zmienne formularza Tablice superglobalne $_GET[] - przesyłanie danych przez adres URL, widoczne w adresie, ograniczenie ilości przesyłanych danych $_POST[] -przez nagłówki żądania przesyłanego z przeglądarki do serwera Style zmiennych formularza: Styl krótki ($ilosc) Styl średni ($_POST[ ilosc ])-zalecany Styl długi ($HTTP_POST_VARS[ ilosc ])
Formularz
Pobranie danych z formularza
Zmienne zadeklarowane $ilosc = 0; $wartosc=$ilosc; Typ zmiennej w PHP odnosi się do rodzaju danych w niej zapisanych. Typy zmiennych: Integer Float String Boolean Array Object NULL zmienne którym nie nadano wartości Resorce zawracane przez funkcje zasoby zewnętrzne np. połączenie z bazą danych
Rzutowanie typu $ilosc =1; $wartosc =(float)$ilosc;
Zmienne superglobalne $GLOBALS tablica wszystkich zmiennych globalnych $_GET tablica zmiennych przekazanych metodą GET $_POST - tablica zmiennych przekazanych metodą POST $_COOKIE tablica zminnych cookie $_FILES tablica zmiennych związanych z ładowaniem plików $_ENV tablica zmiennych śrdowiskowych $_REQUEST tablica wszystkich zmiennych wprowadzonych przez użytkownika $_SESSION tablica zmiennych sesji
Operatory Operatory arytmetyczne (+, -, *, /) Operator łączenia ciągów kropka(.) ('napis'. $d) Operatory przypisania ($a=0, $a+=5, $b=&$a) Operatory porównań ($a==$b, $a===$b) Operatory logiczne (!, &&,, and, or, xor) Operatory bitowe (&,, ~, ^, <<, >>) Operator tłumienia błędów @ np. $a =@(52/0) Operatory tablicowe (+, ==, ===,!=, <>,!==) Operator wykonania akcent (` `) Operator typu: instanceof czy dany obiekt jest egzemplarzem danej klasy
Zarządzanie zmiennymi Sprawdzanie stanu zmiennej: bool isset(mixed zmienna); czy zmienna istnieje bool empty(mixed zmienna); czy posiada wartość niepustą i niezerową echo 'isset($ilosc): '.isset($ilosc).' <br/>' echo 'empty($ilosc): '.empty($ilosc).' <br/>'
Instrukcje warunkowe <html> <body> <?php $d=date("d"); if ($d=="fri") echo "Have a nice weekend!"; elseif ($d=="sun") echo "Have a nice Sunday!"; else echo "Have a nice day!";?> </body> </html> <html> <body> <?php switch ($x) { case 1: echo "Number 1"; break; case 2: echo "Number 2"; break; case 3: echo "Number 3"; break; default: echo "No number between 1 and 3"; }?> </body> </html>
Pętle warunkowe <html> <body> <?php $i=1; while($i<=5) { echo "The number is ". $i. "<br />"; $i++; }?> </body> </html> <html> <body> <?php $i=0; do { $i++; echo "The number is ". $i. "<br />"; } while ($i<5);?> </body> </html>
Pętle krokowe <html> <body> <?php for ($i=1; $i<=5; $i++) { echo $i. <br />"; }?> </body> </html> <html> <body> <?php $arr=array("one", "two", "three"); foreach ($arr as $value) { echo "Value: ". $value. "<br />"; }?> </body> </html>
Przechowywanie danych w plikach wskaznik_plikowy = fopen(nazwa_pliku, tryb_otwrcia) <html> <body> <?php @ $file=fopen("welcome.txt","r");?> </body> </html> <html> <body> <?php //otwarcie pliku do odczytu @ $file=fopen("welcome.txt","r") or exit("unable to open file!"); //zamykanie pliku fclose($file);?> </body> </html>
Tryby otwierania plików Modes Description r Read only. Starts at the beginning of the file r+ Read/Write. Starts at the beginning of the file w Write only. Opens and clears the contents of file; or creates a new file if it doesn't exist w+ Read/Write. Opens and clears the contents of file; or creates a new file if it doesn't exist a Append. Opens and writes to the end of the file or creates a new file if it doesn't exist a+ Read/Append. Preserves file content by writing to the end of the file x Write only. Creates a new file. Returns FALSE and an error if file already exists x+ Read/Write. Creates a new file. Returns FALSE and an error if file already exists b Binary
Odczyt z pliku fgets(wskaznik_plikowy, dlugosc_wiersza) <?php $file = fopen("welcome.txt", "r") or exit("nie mogę otworzyć pliku!"); //Odczyt linia po linii do końca pliku while(!feof($file)) { echo fgets($file). "<br />"; } fclose($file);?> <?php $file=fopen("welcome.txt","r") or exit ("Nie mogę otworzyć pliku!"); //odczyt znak po znaku while (!feof($file)) { echo fgetc($file); } fclose($file);?>
Zapis do pliku fwrite(resource wskaznik_plikowy, string ciąg, int [dlugosc]) np. fwrite($wp, $ciag_wyjsciowy, strlen($ciag_wyjsciowy))
Stosowanie tablic Tablice indeksowane numerycznie Tablice asocjacyjne Tablice wielowymiarowe
Tablice numeryczne Utworzenie tablicy: $produkty=array('opony', 'olej', 'świece'); Dostęp do elementów $produkty[0] $produkty[1] $produkty[2] Dodanie elementu: $produkty[3]='bezpieczniki'; Dostęp do elementów przy pomocy pętli: for($i = 0; $ < 3; $i++) echo $produkty[$i] ; foreach ($produkty as $biezacy) echo $biezacy. ' ';
Tablice asocjacyjne Inicjowanie tablicy: $ceny =array('opony'=>100. 'Olej'=>10. 'Świece'=>4); dostęp do elementów: $ceny['opony'], $ceny['olej'], $ceny['świece'] dodanie elementu: $ceny['bezpieczniki']=2; Dostęp do elementów przy pomocy pętli: foreach($ceny as $klucz =>$wartosc) echo $klucz.'=>'.$wartosc. <br/> while(list( $produkt.$cena ) =each($ceny) ) echo $produkt - $cena <br/> ; Funkcja list() przydziela kolejne wartości zmiennym zwracanym przez each() $produkt zawiera index zwrócony przez each() $cena zawiera wartość zwróconą przez each()
Tablice wielowymiarowe Inicjacja tablicy dwuwymiarowej: $produkty = array( array('opo, 'Opony, 100), array('ole, 'Olej, 10), array( 'SWI', 'Świece,4) ); Dostęp do elementów tablicy: for( $rzad=0; $rzad <3; $rzad++ ) { } for( $kol =0; $kol <3; $kol++) { echo ' '.$produkty[$rzad][$kol]; } echo ' <br/>';
Tablice wielowymiarowe asocjacyjne Inicjalizacja tablicy dwuwymiarowej: $produkty = array( array( 'Kod' => 'OPO'. 'Opis' => 'Opony'. 'Cena' => 100). Kod Opis Cena array( 'Kod' => 'OLE'. 'Opis' => 'Olej'. OPO Opony 100 'Cena' => 10). array( 'Kod' => 'SWI'. 'Opis' => 'Świece'. OLE Olej 10 'Cena' => 4) ); for ( $rzad =0; $rzad <3; $rzad++) { SWI Świece 4 while( list($klucz.$wartosc) = each($produkty[$rzad]) { echo $wartosc ; } echo ' <br/>' }
Analiza ciągów znaków Przycinanie ciągów usuwanie białych znaków z początku i końca ciągów (\n \r \t spacje \0) funkcje trim(), ltrim(), rtrim() np. $nazwa =trim($nazwa); Formatowanie HTML - zamiana znaczników \n na <br> funkcja nl2br() Formatowanie wyświetlania: print(), echo, printf(), sprintf(): np. echo Wartość zamówienia wynosi $wartosc. ; printf( Wartość zamówienia wynosi %s., $wartosc); Formatowanie ciągów do przechowywania w bazach danych - funkcje addslashes(), stripslashes(); np. $komentarz = pracownik powiedział Nie dajemy gwarancji, O co chodzi?; $komentarz = addslashes($komentarz); $komentarz = pracownik powiedział \ Nie dajemy gwarancji\, O co chodzi?;
Analiza ciągów znaków Rozdzielanie i łączenie ciągów za pomocą funkcji ciągów: explode(), implode() np. $email = jan22@hotmail.com; $tablica_email =explode( '@', $email); $tablica_email[0] =jan22; $tablica_email[1] =hotmail.com; $nowy_email=implode('@', $tablica_email); Porównywanie ciągów strcmp(), strcasecmp(), strnatcmp() strcmp( ciag1, ciag2) Sprawdzanie długości ciągu za pomocą funkcji strlen()
Wyrażenia regularne Wrażenie testujące adresy e-mail: Zastosowanie (funkcje ereg(wzor, ciag_przeszukiwany), eregi(): if(!eregi( ^[a-za-z0-9_]+@[a-za-z0-9\-]+\.[a-za-z0-9\-\.]+$',$email)) { echo 'Niepoprawny adres poczty elektronicznej'; exit; } \ - znak ucieczki ^ - dopasowanie na początku ciągu $ - dopasowanie na końcu ciagu. dopasowanie do każdego znaku * - powtórzenie zero lub więcej razy + - powtórzenie jeden lub więcej razy [ a-z]- wszystkie znaki w nawiasach
Funkcje include() i require() <html> <body> <?php include("header.php");?> <h1>welcome to my home page</h1> <p>some text</p> </body> </html> Funkcje require() i include() różnią się tym, że przypadku niepowodzenia require() wygeneruje błąd krytyczny, natomiast include() wygeneruje tylko ostrzeżenie
Definiowanie własnych funkcji function wiekszy(&$x, $y) //$x przekazany przez referencje { if(!isset($x)!isset($y)) return false; else if($x>=$y) return $x; else return $y; $x=$x+1 } //$x - została zmieniona //$y pozostała bez zmian
Łączenie z bazą danych MySQL mysqli_connect(servername,username,password,dbname); new mysqli (servername,username,password,dbname); $con = mysqli_connect("localhost","peter","abc123, mydb ); lub $con = new mysqli ("localhost","peter","abc123, mydb ); if (!$con) { die( Nie mogę nawiązać połączenia. ); }
Pobieranie danych z bazy danych Wybór bazy danych: mysqli_selcet_db($db, nazwa_bazy); $db ->select_db(nazwa_bazy); Wysłanie zapytania: $wynik = mysqli_query($db, $zapytanie); $wynik=$db->query($zapytanie);
Odczytanie rezultatu zapytania Wersja proceduralna: $wiersz = mysqli_fetch_assoc($wynik); //tablica asocjacyjna $wiersz = mysqli_fetch_row($wynik); //tablica numeryczna $wiersz = mysqli_fetch_array($wynik); //obie tablice Wersja obiektowa: $wiersz = $wynik->fetch_assoc(); $wiersz = $wynik->fetch_row(); $wiersz = $wynik->fetch_array();
Zamykanie połączenia z bazą danych mysqli_free_result($wynik); $wynik -> free(); mysqli_close($db); $db->close();
Przykład- Pobieranie danych z bazy
Wpisywanie danych do bazy