Dlaczego PHP? - zalety (+) bezpieczeństwo kodu - PHP wykonuje się po stronie serwera ( niezależność od przeglądarki) (+) bezpieczeństwo danych - wykorzystanie ssl i HTTPS (+) PHP jako moduł serwera WWW (+) generowanie HTML, GIF, JPG, PDF (+) dostępność kodu
Dlaczego PHP? - wady (-) język interpretowany więc wolny (-) brak systemu transakcji (-) brak STDIN - w Linuxie można obejść otwierając jawnie plik /dev/stdin
Dla kogo PHP? Administratorzy serwisów WWW autorzy dynamicznych stron WWW użytkownicy bez prawa do uruchamiania skryptów CGI projektanci aplikacji mają za darmo interfejs użytkownika (HTML)
literatura Craig Hilton, Jeff Willis PHP3 - internetowe aplikacje bazodanowe Marek Nowakowski PHP4 & MySQL dla webmastera Rasmus Lerdorf Leksykon PHP http://www.php.pl ; http://www.php.net http://ux.ap.krakow.pl/~bar/ Strona tymczasowa, trochę polskojęzycznych informacji, kursy PHP i MySQL,
Umieszczanie PHP w dokumentach HTML Kod skryptu umieszczany jest bezpośrednio w kodzie HTML ujęty w parę znaczników: <?PHP...?> (skrócone <?...?> <HTML><BODY> <?PHP echo Jestem skryptem PHP <BR>`;?> </BODY></HTML> Skrypt niekoniecznie w sekcji BODY przeglądarka wyświetla stronę HTML i WYNIK skryptu PHP Przeglądarka ignoruje odstępy i znaki końców akapitu, trzeba je zastąpić odpowiednimi znacznikami HTML ( , <BR> itp.) plik skryptu powinien mieć jedno z akceptowanych rozszerzeń (.php), treść skryptu jest niedostępna dla użytkownika po stronie przeglądarki
Możliwości języka Dołączanie plików include ("filename.abc") zmienne tablice operatory i wyrażenia instrukcje (struktury sterujące) funkcje użytkownika integracja z bazami danych - ogromna ilość funkcji pomocniczych dedykowanych dla najpopularniejszych systemów (MySQL, ORACLE, PostgreSQL, Informix) funkcje obsługi :stringów, tablic, dat, URL, sieci, ODBC, grafiki i plików
PHP - Dołączanie plików include ("nazwapliku.php ); dołączanie plików jest nieodzownym mechanizmem zapewniającym przejrzystość kodu i zwiększającym bezpieczeństwo, wymagane jest aby w dołączanym pliku występowały znaczniki PHP Do standardowych metod należy definiowanie w osobnych plikach pewnych stałych elementów stron (np. nagłówków) i dołączanie ich do różnych stron Pliki dołączane muszą mieć odpowiednie atrybuty
PHP - zmienne W zmiennych odgrywa znaczenie wielkość liter PHP operuje następującymi typami danych: Liczby całkowite Liczby zmiennopozycyjne Łańcuchy znaków Tablice Zmienne tworzymy BEZ ich deklarowania w momencie pierwszego przypisania wartości: $x=1.234; $i=3; tab[0]='ala'; tab[]='ma kota';
PHP - operatory i wyrażenia Oper. logiczne <, <=, >, >=,!=, == #$x<=3; Oper. Przypisania = # $x=2*$y; Złożone $a++ ; #$a=$a+1; Wartości logiczne: FALSE - odpowiada "" {pusty napis} lub 0 TRUE - cokolwiek innego Każda zmienna jest skojarzona z wartością logiczną i tak np. pusta tablica - FALSE, zmienna jeszcze nie użyta - FALSE
PHP - instrukcje Instrukcja warunkowa - jeżeli... A jeżeli NIE... IF ($warunek) { instrukcja; } ELSE { instrukcja;} dopóki warunek powtarzaj instrukcję WHILE ($warunek) { instrukcja; } powtarzaj instrukcję dopóki warunek DO { instrukcja; } WHILE ($warunek;)
PHP - instrukcje FOR (instrukcja0;$warunek;instrukcja_sterująca) { instrukcja_w_pętli;} konstrukcja często stosowana przy ustalonej liczbie powtórzeń for($i=0;$i<10;$i++) {echo $i;} instrukcja wyboru: SWITCH ($x) case 0: instrukcja0; break; case 1: instrukcja1; break; DEFAULT : instrukcja_ani_1_ani_2; }
PHP - funkcje Funkcja jest konstrukcją programistyczną wykonująca określony algorytm i przyjmującą określoną wartość. Pozwala również dzielić złożone problemy na fragmenty, Wewnątrz funkcji powinna się znaleźć instrukcja RETURN definiująca wartość funkcji (zwracająca wartość) definicja przykładowa: function moja($a,$b) { return ($a+$b)/2; } użycie: echo moja(3,5); #wypisze wartość 4
PHP - funkcje - argumenty Przekazywanie przez wartość Z tą sytuacją mamy do czynienia gdy funkcja ma w odpowiedzi zwrócić pewną wartość ale NIE ZMIENIĆ wartości argumentów definicja przykładowa: function srednia($a,$b) { return ($a+$b)/2; } użycie: echo srednia(3,5); #wypisze wartość 4 Przekazywanie przez zmienną Z tą sytuacją mamy do czynienia gdy chcemy aby funkcja w efekcie swojego działania ZMIENIAŁA wartości argumentów definicja przykładowa: function zamiana(&$a,&$b) { $z=$a; $a=$b; $b=$z; return 0; #funkcja niczego nie liczy } użycie: $x=1;$y=2; $temp=zamiana($x,$y); echo $x,$y; wypisane zostanie 2 1 a nie 12 co oznacza że funkcja zmieniła swoje argumenty
PHP - przekazywanie parametrów PHP udostępnia ciekawy mechanizm obsługujący sytuacje gdy chcemy w samym programie narzucić funkcji przekazanie parametru przez odwołanie: function zamiana($a,$b) { $z=$a; $a=$b; $b=$z; } użycie: $x=1;$y=2; $temp=zamiana(&$x,&$y); echo $x,$y; #wypisanie 2 1 użycie: $x=1;$y=2; $temp=zamiana($x,$y); echo $x,$y; #wypisanie 1 2
PHP- wartości domyślne funkcji i zasięg zmiennych Obsługa sytuacji gdy w wywołaniu nie podamy niektórych argumentów function opis($nazwisko="nieznany"){ return "Ten człowiek ma na nazwisko $nazwisko";} echo opis("nowak"); da w efekcie : Ten człowiek ma na nazwisko Nowak echo opis() ; da w efekcie : Ten człowiek ma na nazwisko NIEZNANY UWAGA!: zmienne z programu NIE są widoczne w funkcjach $x=1; function test1() { echo $x;} function test2() { global $x; echo $x;} test1();test2(); da w efekcie 1 ( a nie 11 gdyż wywołanie test1() nic NIE WYPISAŁO
PHP- obsługa plików (1) Korzystanie z plików wymaga następujących czynności : otwarcie pliku $fi=fopen("$nazwa_pliku","$tryb"); 'r' - Otwórz tylko do odczytu; ustawia wskaźnik pliku na początku pliku. 'r+' - Otwórz do odczytu i zapisu; ustawia wskaźnik pliku na początku pliku. 'w' - Otwórz tylko do zapisu; ustawia wskaźnik pliku na początku pliku i obcina plik (zeruje) do 0 długości. Jeśli plik nie istnieje to próbuje go utworzyć. 'w+' - Otwórz do odczytu i zapisu; ustawia wskaźnik pliku na początku pliku i obcina plik (zeruje) do 0 długości. Jeśli plik nie istnieje to próbuje go utworzyć. 'a' - Otwórz tylko do zapisu; ustawia wskaźnik pliku na końcu pliku. Jeśli plik nie istnieje to próbuje go utworzyć. 'a+' - Otwórz do odczytu i zapisu; ustawia wskaźnik pliku na końcu pliku. Jeśli plik nie istnieje to próbuje go utworzyć. $fi jest tzw. uchwytem pliku w nazwie pliku można używać http:// oraz ftp:// gdy się coś nie powiedzie $fi=false przydatna funkcja file_exists("nazwa") typu logicznego
PHP- obsługa plików (2) Po prawidłowym otwarciu można z plikiem pracować zapisać coś do pliku fputs($fi,"ten tekst trafi do pliku \n"); odczytać z pliku $linia=fgets($fi,100); # 100 znaków lub $znak=fgetc($fi); Przy tych operacjach znacznik pliku przesuwany jest o 1 do przodu plik należy zamknąć fclose($fi);
PHP- funkcje wbudowane Matematyczne - sin($x) obsługi stringów - ereg($wzorzec,$napis) - przeszukuje $napis z wykorzystaniem wyrażenia regularnego $wzorzec obsługi tablic - sort($tablica) - sortuje tablice od min do max obsługi sieci - mail($odbiorca,$temat,$wiadomosc, $d\odatkowe_nagłowki) graficzne - imagecreate($wysokosc,$szerokosc) - tworzy obrazek typu GIF obsługi plików - fopen($plik,$tryb) - otwiera plik i zwraca jego identyfikator obsługa dat i czasu - date($format) obsługi baz danych - mysql_connect($host,$user,$password) - otwiera połączenie z baza MySQL
przykład licznik w pliku tekstowym <?PHP $filename="/tmp/licznik"; # WSTAW TU SWOJA NAZWE $fp=fopen($filename,"r+"); $nr=fgets($fp,10); $nr++; fseek($fp,0); fwrite($fp,$nr,10); fclose($fp); echo "<h1> licznik = $nr </h1>";?>
przykład licznik i ciasteczko <? setcookie("licznik","1",time()+100);?> ustawia ciastko o nazwie licznik ważne 100 sekund <html> <body> <? @$odwiedzony = $_COOKIE['licznik']; //odczytanie wartości ciasteczka $filename=./licznik $plik = fopen($filename,"r"); $licz = fread($plik, 10); fclose($plik); if ($odwiedzony) { echo("jeste6 tu po raz ". $licz); } else { $licz++; echo("jeste6 tu po raz ". $licz); } $wczyt = fopen($filename,"w"); fwrite($wczyt,$licz); fclose($wczyt);?> </body> </html>
Połączenie PHP-MySQL (1) PHP zawiera wiele funkcji umożliwiających prace z bazą. Wymienię tylko kilka najczęściej używanych. INT mysql_connect( nazwa hosta, nazwa_użyt, hasło ); funcja zwraca identyfikator (numer) połączenia użycie: $link = mysql_connect("localhost", info", info") or die ("Nie można się połączyć"); połączenie zostaje zamknięte po użyciu funkcji: mysql_close(link);
Połączenie PHP-MySQL(2) Wybranie bazy: mysql_select_db ( moja_baza") or die ("Nie mozna wybrać bazy danych"); zapytanie SQL: $result = mysql_query ("SELECT * FROM adresy",$link) or die ("Zapytanie zakończone niepowodzeniem"); Nie trzeba podawac $link- wtedy domyślnie ostanio użyte połączenie $result jest identyfikatorem (int) zbioru wynikow przykład: $result = mysql_query ("SELECT * FROM adresy",$link); echo "w zbiorze jest ". mysql_num_rows($result). "rekordow" ;
Połączenie PHP-MySQL(3) mysql_fetch_array($result) - pobiera wiersz i zwraca go w postaci tabeli jeśli w zbiorze wyników nie ma już rekordów zwracane jest FALSE pozwala to używać konstrukcji: while ($osoba=mysql_fetch_array($result)){ echo $osoba["imie"]. $osoba["nazwisko"]. $osoba["adres"]. "<br>" ; }