Narzędzia internetowe Paweł Rajba

Slides:



Advertisements
Podobne prezentacje
Katarzyna Szafrańska kl. II ti
Advertisements

Język C/C++ Funkcje.
Marcin Celiński grudzień 2000
Wprowadzenie do języka skryptowego PHP
Wprowadzenie do języka skryptowego PHP
Wprowadzenie do języka skryptowego PHP
Narzędzia internetowe Paweł Rajba ttp://pawel.ii.uni.wroc.pl/
Języki programowania C++
PROGRAMOWANIE STRUKTURALNE
Instrukcje Instrukcja : definicja obliczenia i określenie sposobu wykonania tego obliczenia. Program : ciąg instrukcji wykonywanych kolejno od pierwszej.
Zakres i zasięg deklaracji Zakres : obszar programu, w którym identyfikator może być użyty zakres globalny : cały program zakres lokalny : definicja pojedynczej.
Obsługa plików csv Do odczytu z pliku csv można użyć następującego kodu: $fp = fopen ("strony.csv","r"); $num = 0; while ($data = fgetcsv ($fp, 1000, ";"))
Paweł Rajba Kurs WWW – wykład 7 Paweł Rajba
PODSTAWY JĘZYKA PHP 1. czym jest 2. składnia 3. wersje 4. bazy danych
Programowanie w C Wykład 3
SO – LAB3 Wojciech Pieprzyca
Język ANSI C Operacje we/wy
Technologie Internetowe
Wykład 2 struktura programu elementy języka typy zmienne
PHP wprowadzenie.
Wprowadzenie do programowania w języku Turbo Pascal
Typy złożone, case, stałe. Typ zbiorowy type typ_zb = set of typ_podstawowy; Typem podstawowym może być tylko typ porządkowy. Typem podstawowym może być
Narzędzia internetowe Paweł Rajba ttp://pawel.ii.uni.wroc.pl/
Język PHP Wprowadzenie.
AWK Zastosowania Informatyki Wykład 1 Copyright, 2003 © Adam Czajka.
HTML 4 Zebrał i opracował : dr inż. Jerzy Zgraja.
HTML 4 Zebrał i opracował : dr inż. Jerzy Zgraja.
Podstawy C# Grupa .NET PO.
Podstawy programowania
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
SQL – podstawowe funkcje
Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek.
A ctive S erver P ages Technologia dostępu do danych.
Podstawy programowania. Język C i C++– podstawy Temat: 1
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 7.
Definicja pliku tekstowego Operacje wykonywane na plikach tekstowych
PHP: warunki, pętle, switch, break, continue
Pliki Pojęcie i rodzaje plików Definicja typu plikowego Operacje wykonywane na plikach elementowych.
INTERNETOWE USŁUGI INFORMACYJNE
Technologie internetowe II
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Systemy wejścia i wyjścia Michał Wrona. Co to jest system wejścia i wyjścia? Pobierania informacji ze źródeł danych, zdolnych przesyłać sekwencje bajtów,
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
C# Platforma .NET CZ.3 Kuba Ostrowski.
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 8.
Podstawy informatyki 2013/2014
Edytor tesktu i skrypty
Programowanie baz danych
Visual Basic for Applications Poziom podstawowy Zajęcia 2
Projektowanie stron WWW
Podstawy języka Instrukcje - wprowadzenie
J A V A S C R I P T Obiekty Opracowała: Anna Śmigielska.
Podstawy programowania II Wykład 3: Obsługa plików w stdio.h.
Zmienne i typy danych w C#
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Obiekty DOM.
Podstawy języka skryptów
Wprowadzenie do PHP SYSTEMY TELEINFORMATYCZNE Wykład 5 AiR 5r.
Temat 5: Instrukcje: print(), echo()
Iga Lewandowska I EMII MU
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
1 Opisy funkcji Adres strony WWW : html (należy odszukać hyperlink Function Index) (
P ASCAL Definicje, deklaracje, podstawowe instrukcje 1.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Czym jest PHP? ● Językiem programowania przeznaczonym do tworzenia i generowania dynamicznych stron WWW. Działa po stronie serwera: Klient Żądanie strony.
PHP (wstęp) Personal Home Page Tools (PHP Tools)
Strumienie, Wczytywanie, Zapisywanie, Operacje na plikach
Akademia C# - Lab2 Zmienne, instrukcje warunkowe, pętle, debugger,
Dane, zmienne, instrukcje
Zapis prezentacji:

Narzędzia internetowe Paweł Rajba

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

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

PHP – Pierwszy przykład Przykładzik

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)

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

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

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

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; ?>

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

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

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!!! ?>

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"); ?>

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()); ?>

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

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

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

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]

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"

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

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'); */

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];

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

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

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

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

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

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

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++);

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"; }

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

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"; }

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; }

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; ?>

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"; } ?>

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.

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

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 ?>

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)

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

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.

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"; }

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

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 $ = $domena = strstr($ , echo $domena;

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

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

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

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',' ','tel'); $lista = implode(",", $array); echo $lista; // osoba, ,tel string strrev(string str) odwraca str echo strrev("Kilof"); // "foliK"

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

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

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

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

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

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

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ę

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

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

PHP – obsługa plików fopen – przykłady: $fp = fopen("/home/pawel/plik.txt", "r"); $fp = fopen("/home/pawel/img.jpg", "rb"); $fp = fopen(" "r"); $fp = "w"); $fp = fopen("c:\\dane\\plik.txt", "r");

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

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

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

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);

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

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");

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

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

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

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

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

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

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

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

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

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.

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

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: ""

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

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)

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.

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()); ?>

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)

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

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

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

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)

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";... ?>

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

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

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

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

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)); }... ?>

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

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

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 )

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)

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

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

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

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

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

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)

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)

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)

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

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)

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

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)

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

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

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

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)

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)

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)

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)

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

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

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

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

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

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"; }

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

PHP i nagłówki HTTP int header(string treść_nagłówka) wysyła nagłówek HTTP przykłady: header("Location: $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:

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

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

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

PHP – buforowanie Przykład: bufory.php

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

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

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

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

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,"/")

PHP i sesje – przykład licznik.php

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)

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

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

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

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

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"])

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(); ?>

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(); ?>

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()

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

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

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

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)

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

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

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

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

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

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']

Autoryzacja HTTP w PHP Przykład: httpauth.php

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

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)

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

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

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

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

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(); ?>

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(); ?>

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)

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

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

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

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()

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()

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

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 =

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"); ?>