Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

PHP cd. Wykład 5 Technologie Internetowe. Formularze, poczta, system plików,

Podobne prezentacje


Prezentacja na temat: "PHP cd. Wykład 5 Technologie Internetowe. Formularze, poczta, system plików,"— Zapis prezentacji:

1 PHP cd. Wykład 5 Technologie Internetowe

2 Formularze, poczta, system plików,

3 Obsługa formularzy Należy najpierw odpowiednio przygotować formularz. W znaczniku FORM w parametrze ACTION należy podać adres dokumentu PHP mającego obsłużyć ten formularz. Parametr METHOD może mieć wartość POST lub GET - obie metody są obsługiwane przez PHP.. Należy pamiętać o zdefiniowaniu nazw wszystkich pól formularza z których skrypt ma skorzystać. Przykład:

4 W skrypcie będą dostępne zmienne o nazwach takich jak nazwy (name) pól formularza, zawierające ich wartości: W przypadku pola tekstowego wartością zmiennej będzie wpisany przez użytkownika tekst. Jeżeli pole jest typu CHECKBOX wartością będzie "on" jeżeli pole jest zaznaczone, lub zmienna będzie pusta jeżeli pole nie zostało zaznaczone. Jeżeli w polu typu CHECKBOX podamy parametr VALUE, będzie on użyty zamiast "on". Tak samo wygląda obsługa pola typu RADIO. Wartością pola SELECT będzie wartość parametru VALUE zdefiniowanego w znaczniku OPTION.

5 Formularze HTML najczęściej zawierają: Metodę Akcję Pola wejściowe Pierwszy wiersz formularza w kodzie HTML może wyglądać następująco: Post - zmienne przekazywane są z formularza z wykorzystaniem superglobalnej tablicy $_POST Get – tablica $_GET. Zapytanie jest dołączone do lokalizatora (adresu) URL Post vs. Get Metoda Post została opracowana do tworzenia nowych zasobów, np. przekazanie formularza zamówienia powoduje wstawienie nowego rekordu do tabeli bazy danych – pojawia się trwały efekt. Metoda Get jest używana gdy żądanie nie powoduje trwałych efektów ubocznych – np. operacje wyszukiwania. Należy jednak uważać: przy stosowaniu get mogą powstać długie adresy, często przekraczające limity przeglądarek czy serwerów.

6 Metodę POST stosuje się gdy: (Wynikiem żądania są trwałe zmiany || Dane z formularza mogą powodować powstanie długiego adresu URL przy użyciu GET || Wysyłane dane nie są zapisane za pomocą siedmiobitowego ASCII.) Metodę GET stosuje się gdy: (Celem żądania jest odszukanie zasobów && W wyniku wykonania żądania nie wystąpią żadne trwałe efekty uboczne && Dane z pól mają w sumie mniej niż 1024 znaki) Get – bezpieczna; Post – niebezpieczna, dokonuje trwałych modyfikacji w serwerze Akcja określa skrypt do którego zostaną przesłane dane i który zostanie uruchomiony

7 Liczba1: Typy pól formularzy HTML: input – różne typy text – jedna linia tekstu; hidden – pole ukryte (umożliwia przesłanie dodatkowych, niewidocznych dla użytkownika danych); password - dla haseł file – do przesyłania plików (upload) textarea – wiele wierszy tekstu submit – przycisk służący do wysyłania formularza lub do kasowania zawartości wypełnionych pól; checkbox – pole wyboru (jeden z dwu); radio – pole wyboru (jeden z wielu); select – menu rozwijane lub lista – elementy OPTION

8 Wysyłanie poczty Dla systemu Windows w pliku php.ini należy skonfigurować: [mail function] SMTP = ewa.prz.rzeszow.pl //nazwa serwera poczty wychodz. sendmail_from = //własny adres Można zastosować funkcję w skrypcie: ini_set(' Do wysyłania listu elektronicznego za pośrednictwem protokołu SMTP (standardowy protokół wykorzystywany do przesyłania poczty elektronicznej) w najprostszym przypadku wystarczy funkcja mail() : mail (odbiorca, temat, treść); Można również uwzględnić adres nadawcy, wtedy funkcja mail() będzie miała postać: mail (odbiorca, temat, treść, od); mail "to jest temat wiadomości", "to jest treść bardzo krótkiej wiadomości",

9 Korzystanie z systemu plików (pliki na serwerze!) Do otwierania plików służy funkcja fopen(nazwa_pliku,mode). Nazwa pliku to pełna ścieżka do pliku, który tworzymy lub otwieramy, mode określa tryb działania funkcji. Funkcja zwraca wskaźnik pliku (służy jako odnośnik i dostarcza informacji o pliku). Parametr mode przyjmuje jedną z następujących wartości: ModeOpis rOtwiera istniejący plik i odczytuje zawarte w nim dane. Ustawia wskaźnik na początku pliku r+Otwiera istniejący plik do odczytu i zapisu i ustawia wskaźnik na początku pliku wOtwiera plik tylko do zapisu i jeżeli plik nie jest pusty, opróżnia go, a jeżeli taki plik nie istnieje zostanie utworzony w+Otwiera plik do odczytu i zapisu. Jeżeli plik nie jest pusty, opróżnia go, a jeżeli taki plik nie istnieje zostanie utworzony aOtwiera istniejący plik do zapisu i ustawia wskaźnik na końcu pliku. Jeśli plik nie istnieje f. tworzy go. a+Otwiera plik do odczytu i zapisu i ustawia wskaźnik na końcu pliku. Jeśli plik nie istnieje f. tworzy go.

10 1. Sprawdzanie czy plik istnieje file_exists("plik.php") 2. Tworzenie nowego pliku fopen("c:/moje dane/plik.txt","w+"); - jeśli nie podamy trybu plik będzie otwarty do odczytu 3. Zapis do pliku $file "w+") – tworzy wskaźnik pliku (zmienną plikową) fwrite($file, $tekst); //zapis lub fputs ($file, $tekst, $dlugosc); //zapis fclose($file); UWAGA: dla przeczytanych tekstów stosuje się funkcję trim obcinającą białe znaki (spacje, zmiany wiersza itp.)

11 4. Odczytywanie danych z pliku $file = fopen($plik, "r"); $ msg = fread($file, filesize($plik)); - czyta od początku do końca pliku lub $ msg = fgets($file, filesize($plik)); //odczyt lub $msg = file('adres/nazwa_pliku'); fclose($file); echo $msg; Można podawać liczbę znaków do odczytania

12 Szczegółowo: $linia = fgets(zmienna_plikowa, [długość]) – odczyt linii z otwartego pliku (do znaku \n lub EOF ) fputs(zmienna_plikowa, zawartość, [długość]) – zapis do otwartego pliku fseek(zmienna_plikowa, pozycja) – ustawia wskaźnik pliku w punkcie pozycja bajtów ftell(zmienna_plikowa) – informuje na jakiej pozycji (bajt) jest ustawiony wskaźnik rewind(zmienna_plikowa) – ustawia wskaźnik na początku pliku readfile(nazwa_pliku) – otwiera plik, wyświetla plik w oknie przeglądarki i zamyka plik $tabpliku =file(nazwa_pliku) – wpisuje zawartość całego pliku do tablicy, każda linia stanowi osobny element tablicy feof((zmienna_plikowa) - sprawdza osiągnięcie końca pliku, przyjmuje wartość true jeśli został osiągnięty koniec pliku

13 string fgets ( resource $uchwyt [, int długość]) Zwraca łańcuch o (długości – 1) bajtów odczytany z pliku wskazanego przez uchwyt. Czytanie kończy się kiedy przeczytano (długość – 1) bajtów lub gdy wystąpi znak nowego wiersza (jest on dołączany do zwracanego wyniku) lub gdy wystąpi znak końca pliku EOF (którykolwiek przypadek zdarzy się pierwszy). Jeśli nie została określona długość, domyślnie przyjmuje 1k (1024 bajty). Dokładniej… $uchwyt= fopen("sciezka/nazwa","r")

14 6. Kopiowanie plików $stary = "c:/moje dane/plik.php"; $nowy = "nowyplik.php"; copy($stary, $nowy); 7. Zmiana nazwy pliku $stary = "stara nazwa.php"; $nowy = "nowa nazwa.php"; rename($stary, $nowy); 8. Usuwanie plików unlink("nowyplik.php");

15 $linia = fgets($plik, 4096); Pobiera do zmiennej $linia wiersz o długości nie większej niż 4096 znaków fputs ($plik, "tekst"); Spowoduje zapisanie tekstu tekst" do otwartego pliku i odpowiednie przesunięcie się wskaźnika zapisu. Przykłady:

16 flock(zmienna_plikowa, działanie) - blokowanie pliku wywoływana po otwarciu, ale przed odczytem czy zapisem (pozwala na przeciwdziałanie równoczesnemu dostępowi do plików przez wielu użytkowników) mkdir("ścieżka/katalog"), rmdir("ścieżka/katalog") $kat = opendir("ścieżka/katalog") – otwarcie katalogu do odczytu zawartości $nazwa = readdir($kat) – czytanie nazwy pliku z zawartości katalogu (1 wpis), f. przyjmuje wartośc false jeśli wszystkie wpisy zostaną odczytane. Wpisy nie są uporządkowane. closedir($kat) – zamknięcie katalogu po zakończeniu czytania DziałanieOpis 1Blokowanie odczytu; dopuszcza współdzielenie 2Blokowanie zapisu. Plik nie może być dzielony 3Zwolnienie istniejącej blokady

17 Przykład: Wyświetlenie zawartości katalogu w postaci listy Elementy w katalogu:

18 Przykład: licznik odwiedzin na stronie

19 setcookie (PHP 3, PHP 4, PHP 5) setcookie -- Wysyła ciasteczko i zapisuje u klienta Opis setcookie ( string nazwa [, string wartość] [, int data_ważności ]) setcookie() określa ciasteczko (ang. cookie) do wysłania z nagłówkami HTTP. Ciasteczko musi być wysłane zanim jakiekolwiek inne nagłówki zostaną wysłane (to jest ograniczenie ciasteczek, nie PHP). To wymaga umieszczenia wywołań tej funkcji przed znacznikami czy. Wszystkie argumenty poza nazwą są opcjonalne. Jeśli obecny jest tylko argument nazwa, ciasteczko o takiej nazwie zostanie usunięte z klienta. Można też opuścić argumenty za pomocą pustego łańcucha (""). Argument data_ważności jest liczbą całkowitą. Można uzyć liczby zero (0). Argument data_ważności jest regularnym uniksowym znacznikiem czasu, takim jak zwracany przez funkcje time() lub mktime (). Wysłane ciasteczko jest dostępne już przy następnym załadowaniu strony w tablicy $_COOKIE. W PHP do była to tablica $HTTP_COOKIE_VARS. CIASTECZKA cookies

20 Częste pułapki: Tworzone skryptem ciasteczka nie będą widziane do następnego przeładowania strony dla której mają być widoczne. Ciasteczko może być usunięte tylko z tymi parametrami, z jakimi je ustawiono. Można wielokrotnie wywołać setcookie() - wykonywane są we właściwej kolejności. Przykład 1. setcookie() wysyła przykładowe ciasteczka setcookie ("TestCookie", $value); setcookie ("TestCookie", $value,time()+3600); /* traci ważność za godzinę */ Aby skasować ciasteczko, należy ustawić datę ważności na datę z przeszłości Przykład 2. Kasowanie ciasteczek// np. ustawić datę ważności na godzinę wstecz setcookie ("TestCookie", "", time() ); Przykład 3. Sprawdzenie ciasteczka if (isset($_COOKIE["TestCookie"])) kod1; else kod2;

21

22 LICZNIK odporny na odświeżanie (plik i cookie) Uwaga: gdzie są ciasteczka (Explorer, Opera – inne przeglądarki) Nie jest istotna wartość ciasteczka

23 Funkcje czasu time Zwraca aktualny uniksowy znacznik czasu Opis int time ( ) Zwraca aktualny czas, podawany jako liczba sekund, które upłynęły od uniksowej Epoki (1 stycznia :00:00 GMT).

24 date Formatuje lokalny czas/datę Opis string date ( string format [, int znacznik_czasu]) Zwraca datę sformatowaną według szablonu podanego w argumencie format. Żądana data określona jest w argumencie znacznik_czasu, a w przypadku jego braku pobierany jest aktualny czas. Uwaga: Poprawny zakres znacznika czasu to zwykle od piątku, 13 grudnia :45:54 GMT (czasu Greenwich) do wtorku, 19 stycznia :14:07 GMT. (Wartości te odpowiadają minimalnej i maksymalnej wartości 32-bitowej liczbie całkowitej ze znakiem). W systemie Windows zakres ten jest bardziej ograniczony i zawiera się w przedziale do Niektóre systemy baz danych mają funkcje konwersji ich formatów daty w uniksowy znacznik czasu (jak np. funkcja UNIX_TIMESTAMP w MySQL-u).

25 Poniższych znaków używa się w szablonie formatującym datę: d - dzień miesiąca, 2 cyfry z zerem na początku; tzn. od "01" do "31" D - dzień tygodnia, tekst, 3 litery; n.p. "Fri" F - miesiąc, tekst, pełna nazwa; n.p. "January" h - godzina, format 12-godzinny z zerem na początku; tzn. od "01" do "12" //g H - godzina, format 24-godzinny z zerem na początku; tzn. od "00" do "23" //G i - minuty; tzn. od "00" do "59" j - dzień miesiąca bez zera na początku; tzn. od "1" do "31" l (mała litera 'L') - dzień tygodnia, tekst, pełna nazwa; n.p. "Friday" m - miesiąc; tzn. "01" to "12" M – skrót nazwy miesiąca (ang.) n - miesiąc bez zera na początku; tzn. "1" to "12" r - data sformatowana według RFC 822; n.p. "Thu, 21 Oct :01: " (dodane w PHP 4.0.4) s - sekundy; i.e. "00" to "59" w - dzień tygodnia, liczbowy, tzn. od "0" (Niedziela) do "6" (Sobota) W - numer tygodnia w roku według ISO-8601, tydzień zaczyna się w poniedziałek (dodane w PHP 4.1.0) Y - rok, 4 liczby; n.p. "1999" //y z - dzień roku; tzn. od "0" do "365" Nierozpoznane znaki w szablonie formatującym będą wyświetlone tak jak są.

26 Przykład 1. przykłady użycia date() echo date ("l dS of F Y h:i:s A"); echo "July 1, 2000 is on a ". date ("l", mktime(0,0,0,7,1,2000)); Jeśli nie chcemy, aby któryś z rozpoznawalnych w szablonie znaków został zastąpiony odpowiadającą mu częścią daty, musimy poprzedzić go znakiem odwrotnego ukośnika (backslash). Przykład 2. zastosowania date() /* Dzisiaj jest March 10th, 2001, 5:16:18 pm */ $today = date("F j, Y, g:i a"); // March 10, 2009, 5:16 pm $today = date("m.d.y"); // $today = date("j, n, Y"); // 10, 3, 2009 $today = date("Y-m-d"); // $today = date('h-i-s, j-m-y, it is w Day z '); // , , Fripm01 $today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // It is the 10th day. $today = date("D M j G:i:s T Y"); // Sat Mar 10 15:16:08 MST 2009 $today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:17 m is month $today = date("H:i:s"); // 17:16:17

27 mktime mktime -- Oblicza uniksowy znacznik czasu dla podanej daty Opis int mktime ( int godzina, int minuta, int sekunda, int miesiąc, int dzień, int rok [, int letni/zimowy]) Uwaga: Proszę zwrócić uwagę na kolejność argumentów !!!, która w dodatku nie jest praktyczna przy opuszczaniu argumentów od prawej do lewej (patrz niżej). Częstym błędem w skryptach są pomyłki w kolejności tych argumentów. Funkcja zwraca uniksowy znacznik czasu odpowiadający podanym argumentom. Znacznik czasu jest liczbą całkowitą długą (long integer) zawierającą liczbę sekund dzielącą uniksową Epokę (1 stycznia 1970) od podanego w argumentach czasu. Argumenty mogą być opuszczane w kolejności od prawej do lewej. Za każdy pominięty argument będzie wówczas wstawiona aktualna wartość, zgodnie z lokalnym czasem/datą. Argument letni/zimowy może być ustawiony na 1, jeśli to czas zimowy, lub 0 jeśli letni, lub -1 (domyślnie) jeśli niewiadomo, czy letni czy zimowy. Jeśli nie jest to wiadome, PHP spróbuje ustalić samodzielnie.

28 Funkcja mktime() przydaje się przy wykonywaniu arytmetyki dat i walidacji, gdyż automatycznie policzy właściwą wartość dla danych spoza przedziałów. Na przykład, każda poniższa linia wyświetli "Jan ". Przykład 1. przykład mktime() rok może być liczbą dwu lub czterocyfrową, przy czym wartości dwucyfrowe z przedziału 0-69 będą mapowane do , a z przedziału do (w systemach, w których time_t jest 32-bitową liczbą całkowitą ze znakiem, co jest obecnie najpopularniejszym rozwiązaniem, poprawny zakres argumentu rok zawiera się pomiędzy 1902 a 2037). Windows: Żadna znana wersja systemu Windows nie obsługuje ujemnych znaczników czasu. Z tego powodu zakres poprawnych dat zawiera się pomiędzy rokiem 1970 a Ostatni dzień dowolnego miesiąca może być wyrażony jako zerowy dzień następnego miesiąca, ale nie jako -1 dzień. Obydwa poniższe przykłady wyświetlą "Ostatni dzień lutego 2000 to: 29"

29 Przykład 2. Ostatni dzień miesiąca

30 Przykłady zastosowania date() i mktime() $jutro = mktime (0,0,0,date("m"),date("d")+1,date("Y")); $poprzedni_miesiac = mktime (0,0,0,date("m")-1,date("d"), date("Y")); $nastepny_rok = mktime (0,0,0,date("m"), date("d"), date("Y")+1); Notatka: Rozwiązanie to jest bardziej godne zaufania od dodawania lub odejmowania określonej liczby sekund, chociażby z powodu zmiany czasu.


Pobierz ppt "PHP cd. Wykład 5 Technologie Internetowe. Formularze, poczta, system plików,"

Podobne prezentacje


Reklamy Google