I.Wojnicki, PHP. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie.

Podobne dokumenty
I.Wojnicki, PHP. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Katedra Automatyki Akademia Górniczo-Hutnicza w Krakowie. 20 października 2013

Systemy internetowe. Wykład 3 PHP. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Systemy internetowe Wykład 3 PHP

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Bazy Danych i Usługi Sieciowe

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Serwer WWW Apache. Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, , zakończony projekt

Należy ściągnąć oprogramowanie Apache na platformę

Oczywiście plik musi mieć rozszerzenie *.php

Języki programowania wysokiego poziomu. PHP cz.1.

Umieszczanie kodu. kod skryptu

Stałe definiuje się używając funkcji define. Przykład: define( PODATEK, 22); define( INSTALACJAOS, 70); define( MS, Microsoft );

Tworzenie Stron Internetowych. odcinek 10

Języki skryptowe w programie Plans

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Zaawansowane bazy danych i hurtownie danych

Programowanie internetowe

Zmienne i stałe w PHP

Kurs PHP. Literatura. Zagadnienia: Wprowadzenie

Bazy Danych i Usługi Sieciowe

PHP. PHP: Hypertext Preprocessor. mgr inż. Remigiusz Pokrzywiński

Dlaczego PHP? - zalety

Programowanie obiektowe

Języki skryptowe - PHP. Podstawy PHP. Paweł Kasprowski. pawel@kasprowski.pl. vl07

Personal Home Page PHP: Hypertext Preprocessor

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

I.Wojnicki, Tech.Inter.

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Internetowe bazy danych

I.Wojnicki, PHP. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Ktedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie.

PHP: bloki kodu, tablice, obiekty i formularze

Michał Bielecki, KNI 'BIOS'

Zarządzanie systemami informatycznymi. Pojęcie systemu informatycznego Tworzenie interaktywnego oprogramowania internetowego w PHP

1. Wprowadzenie do języka PHP

Programowanie internetowe

PHP, ASP i CGI jako skrypty wykonywane po stronie serwera. Budowa dynamicznych stron WWW w technologii PHP

I.Wojnicki, JiTW. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie.

Podstawy programowania skrót z wykładów:

Sieci Komputerowe i Technologie Internetowe (SKiTI)

Bazy danych i strony WWW

I.Wojnicki, PHP. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie

BAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech

Smarty PHP. Leksykon kieszonkowy

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Lekcja 1. Składnia języka zmienne i podstawowe instrukcje PHP. Do wyświetlania tekstu służy instrukcja echo echo Hello world ;

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

Języki programowania wysokiego poziomu. PHP cz.2.

JAVASCRIPT PODSTAWY. opracowanie: by Arkadiusz Gawełek, Łódź

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

Wykład 2 Składnia języka C# (cz. 1)

Protokół HTTP. 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Rys.2.1. Trzy warstwy stanowiące podstawę popularnego podejścia w zakresie budowy stron internetowych [2]

Podstawy programowania w języku C

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Obiektowe bazy danych

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Ogólny schemat prostego formularza: A może lepiej zamiast przycisku opartego o input tak:

Wybrane działy Informatyki Stosowanej

Odczyt danych z klawiatury Operatory w Javie

Kurs rozszerzony języka Python

JavaScript funkcyjność

Bloki anonimowe w PL/SQL

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

PHP i MySQL dla każdego / Marcin Lis. Wyd. 3. Gliwice, cop Spis treści

Dynamiczne przetwarzanie stron. dr Beata Kuźmińska-Sołśnia

Tworzenie aplikacji w języku Java

Kurs WWW. Paweł Rajba.

Microsoft IT Academy kurs programowania

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Programowanie współbieżne i rozproszone

Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework

Powtórka algorytmów. Wprowadzenie do języka Java.

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

System operacyjny Linux

JAVASCRIPT PODSTAWY. opracowanie: by Arkadiusz Gawełek, Łódź

Język PHP. PHP (PHP: Hypertext Preprocessor) język programowania stron WWW; najważniejsze cechy PHP:

KOTLIN. Język programowania dla Androida

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

PHP w-3. Sterowanie w PHP

Transkrypt:

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 1 / 38 Hypertext Preprocessor Igor Wojnicki Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie 7 stycznia 2017 $Id: php0.tex,v 1.4 2013/10/27 09:32:42 wojnicki Exp wojnicki $

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 2 / 38 Spis Treści I 1

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 3 / 38 Literatura White E., Eisenhamer, J.D.: 5 w praktyce. Helion, Gliwice 2007. Lis M.: 5: praktyczny kurs. Helion, Gliwice 2006.

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 4 / 38 Spis Treści 1

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 5 / 38 Język I (angielski akronim rekurencyjny, którego rozwinięcie to Hypertext Preprocessor), pierwotnie nazwany Personal Home Page - skryptowy język programowania, służacy przede wszystkim do tworzenia dynamicznych stron WWW i wykonywany w tym przypadku po stronie serwera, z możliwościa zagnieżdżania w HTML (badź XHTML). jest podobny w założeniach do dużo starszego mechanizmu SSI (Server Side Includes), jednak jest w stosunku do SSI nieporównanie bardziej rozbudowany. Udostępniany jest na zasadach licencji open-source. Jego składnia bazuje na językach C, Java i Perl.

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 6 / 38 Język II może być używane nie tylko do tworzenia stron WWW. Jego modułowa budowa pozwala także na programowanie aplikacji z interfejsem graficznym (rozszerzenie -GTK), a także na wykonywanie z linii poleceń (podobnie jak Perl i Python). umożliwia także współpracę z wieloma systemami relacyjnych baz danych (np. MySQL, Oracle, PostgreSQL, SQLite) oraz korzystanie z alternatywnych sposobów przechowywania danych - plików tekstowych i XML-owych. Może być uruchamiane na większości systemów operacyjnych (uwzględniajac najpopularniejsze) oraz serwerów sieciowych. w środowisku Linux wraz z serwerem Apache i silnikiem baz danych MySQL stanowi popularna platformę serwerowa, tzw. LAMP. Od wersji 5 udostępnia wydajne mechanizmy obiektowe.

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 7 / 38 Popularność Rok 2016. TIOBE (http://www.tiobe.com/tiobe-index/) 7: Java, C,C++, Python, VB.NET, C#,, PYPL (http://pypl.github.io/pypl.html) 3: Java, Python,, IEEE SPECTRUM (http://spectrum.ieee.org) 7: C, Java, Python, C++, R, C#,.

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 8 / 38 Charakterystyka I Interpreter. Zastosowania Internetowe. Interpreter Stand-alone. Możliwości: TCP/IP, DNS. http, https, ftp, gopher, telnet, ldap, irc, snmp, ssh. email. IMAP (Internet Message Access Protocol, Internet Mail Access Protocol), POP3 (Post Office Protocol), NNTP (Network News Transfer Protocol). dbase, DBM (BerkeleyDB, GDBM), PostgreSQL, Oracle, MySQL, SQL Server, FrontBase, ODBC, Sybase, SQLite, InterBase, Firebird, IBM DB2, Informix, msql, Paradox.

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 9 / 38 Charakterystyka II Niskopoziomowe I/O. Expect: Interakcja z zewnętrznymi aplikacjami poprzez stdin/stdout/stderr. gnupg. ID3, oggvorbis. Transofrmacje: PNG, JPEG, GIF, TIFF. Exif. Kerberos. Uruchamianie metod obiektów Java. Przetwarzanie XML, XSLT. Kompresja: bzip2, lzf, gzip, zip. Mimetype (jaki typ pliku?). PDF, Postscript.

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 10 / 38 Charakterystyka III Wyrażenia Regularne. Konwersja znaków diakrytycznych: GNU Recode. Obsługa Sesji za pomoca cookies. Obliczenia Statystyczne. ncurses: interakcja w środowisku tekstowym.

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 11 / 38 Osadzanie I Instrukcje zakończone średnikiem (;) [1] <?php echo("tralala Bum!\n");?> <?php if (2+2==4) {?> <strong>prawda </strong> <?php else {?> <strong>fałsz </strong> <?php?>

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 12 / 38 Komentarze I jak dla języka C: /*... */ jak dla języka C++ (do końca linii): // jak dla powłoki sh (do końca linii): #

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 13 / 38 Typy Danych I obsługuje osiem typów prostych. boolowski (boolean): True/False $foo = True; liczba całkowita (integer) moga być zapisane w notacji dziesiętnej, szesnastkowej (0x) lub ósemkowej (0), liczba zmiennoprzecinkowa (float) $a = 1.234; $a = 1.2e3; $a = 7E-10;

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 14 / 38 Typy Danych II łańcuch znaków (string), ciag bajtów echo 'przykładowy tekst'; podwójne cudzysłowy, interpretacje większej ilości sekwencji cytowania dla znaków specjalnych. echo "tab \t nowa\n"; heredoc $str = <<<EOD Przykład łańcucha znaków, zajmującego kilka linii, zapisanego w składni heredoc. EOD;

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 15 / 38 Typy Danych III tablica (array) $tablica=array(1,2,3,'cos',5); echo $tablica[0]; $inna=array( 1 => 'jeden', 5 => 'piec', 'trzy' => 3 ); echo $inna[5]; echo $inna['trzy']; obiekt (object)

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 16 / 38 Typy Danych IV identyfikator zasobów (resource) jest specjalna zmienna, przechowujac a odnośnik do zewnętrznego źródła zasobów. Identyfikatory zasobów sa tworzone i wykorzystywane przez specjalne funkcje (zobacz suplement z lista tych funkcji i powiazanych z tym typów zasobów w dokumentacji ). Uwaga: Identyfikator zasobów został wprowadzony w 4. NULL wartość specjalna oznacza, że zmienna nie przechowuje żadnej wartości. Uwaga: typ NULL został również wprowadzony w 4 ustala typ danych na podstawie kontekstu.

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 17 / 38 Zmienne I Każda zmienna w zapisuje się, poprzedzajac jej nazwę znakiem dolara $. Dostępne sa funkcje które moga sprawdzić typ danych: is_array(), is_int(), is_float()... itp. oraz istnienie samej zmiennej i jej wartości: isset(), is_null() uwaga na różnicę, zobacz: unset()! Wielkość liter w nazwie zmiennej jest rozróżniana (w nazwach funkcji i słowach kluczowych nie!).

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 18 / 38 Zmienne II Referencje: & (od 4) <?php $foo = ''; $bar = &$foo; $bar = "To jest $bar"; echo $bar; echo $foo;?> Zasięg zmiennej ogranicza blok, w którym jest zdefiniowana. static zmienne statyczne (w ramach funkcji!!!) Zmienne jako nazwy zmiennych ${$var=5;

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 19 / 38 Zmienne Globalne I $_GLOBALS referencje do zmiennych globalnych, nazwa zmiennej = klucz $_SERVER tworzone przez serwer http $_GET $_POST zmienne dostarczone do skryptu metoda GET lub POST $_COOKIE zmienne dostarczone przez mechanizm COOKIES $_REQUEST zawiera informacje z get/post/cookie $_FILES zmienne dostarczone przez przesłanie plików $_ENV zmienne środowiskowe, kontekst uruchomienia skryptu 1 Dla wersji poniżej 4.1 obowiazywały nazwy zmiennych globalnych w formacie: $HTTP_*_VARS. 2 Dla 3 dane przekazywanem przez POST/GET były zmiennymi globalnymi.

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 20 / 38 Stałe I Stała jest identyfikatorem (nazwa) dla prostej wartości. Jak sama nazwa wskazuje, wartość ta nie może się zmieniać podczas działania skryptu (poza wyjatkami: FILE i LINE ). Domyślnie, przy stałych uwzględniana jest wielkość liter. Przyjęto, że stałe sa pisane dużymi literami. define('web_master','nczbik@cyf-kr.edu.pl'); echo WEB_MASTER;

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 21 / 38 Operatory Arytmetyczne - analogiczne do C: + - / * % Przypisania: = += -= Bitowe: & ~ ^ << >> Porównania: == ===!= <>!== <= < >= > (5===5); (5=== 5 ); (5===(int) 5 ); (5== 5x ); (5=== 5x ); Warunkowe: (expr)? (expr1) : (expr2); Wykonania: ` ` Inkrementacji/Dekrementacji: ++ -- Logiczne: and or xor! && Konkatencja łańcuchów znaków:..= Łaczenie tablic: +

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 21 / 38 Operatory Arytmetyczne - analogiczne do C: + - / * % Przypisania: = += -= Bitowe: & ~ ^ << >> Porównania: == ===!= <>!== <= < >= > (5===5); (5=== 5 ); (5===(int) 5 ); true false true (5== 5x ); (5=== 5x ); Warunkowe: (expr)? (expr1) : (expr2); Wykonania: ` ` Inkrementacji/Dekrementacji: ++ -- Logiczne: and or xor! && Konkatencja łańcuchów znaków:..= Łaczenie tablic: +

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 21 / 38 Operatory Arytmetyczne - analogiczne do C: + - / * % Przypisania: = += -= Bitowe: & ~ ^ << >> Porównania: == ===!= <>!== <= < >= > (5===5); (5=== 5 ); (5===(int) 5 ); true false true (5== 5x ); (5=== 5x ); true false Warunkowe: (expr)? (expr1) : (expr2); Wykonania: ` ` Inkrementacji/Dekrementacji: ++ -- Logiczne: and or xor! && Konkatencja łańcuchów znaków:..= Łaczenie tablic: +

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 22 / 38 Struktury Sterujace I if elseif else <?php if (2*2==4) echo 'prawda';?> <?php if (2*2==5) { echo 'prawda'; else { echo 'fałsz';?>

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 23 / 38 Struktury Sterujace II if (wyrażenie) { //1 postać // jeśli wyrażenie jest prawdziwe if (wyrażenie) { //2 postać // jeśli wyrażenie jest prawdziwe else { // jeśli wyrażenie jest jest fałszywe

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 24 / 38 Struktury Sterujace III if (wyrażenie1) { //3 postać // jeśli wyrażenie1 jest prawdziwe elseif (wyrażenie2) { // jeśli wyrażenie2 jest prawdziwe else { //wykonywane jest jeśli wszystkie //wyrażenia są fałszywe

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 25 / 38 Struktury Sterujace IV switch, analogicznie do C switch (zmienna) { case WARTOSC_1: //instrukcje do wykonania... break; case WARTOSC_2: break; case WARTOSC_n: break;

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 26 / 38 Struktury Sterujace V for for (INICJACJA; WARUNEK; OPERACJA) { //blok instrukcji while while (WARUNEK) { // blok instrukcji do do { // blok instrukcji while (WARUNEK); break, continue, analogicznie jak w języku C.

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 27 / 38 Struktury Sterujace VI $j=0; for ($i=1; $i<5; $i++) { $j+=$i; $j=0; $i=1; while ($i<5) { $j+=$i; $i++; $j=0; $i=1; do { $j+=$i; $i++; while ($i<5);

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 28 / 38 Struktury Sterujace VII foreach, iteracja na elementach tablicy (od 4) foreach(tablica as $wartosc)... foreach(tablica as $klucz => $wartosc)...

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 29 / 38 Struktury Sterujace VIII $a=array(1=>'jeden', 'piec'=>5); foreach ($a as $k => $w) { echo $k.' '.$w."\n";

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 30 / 38 Struktury Sterujace IX funkcje function nazwa ($arg1, $arg2) { //wiersze kodu return $my_var; // opcjonalne require, include wczytanie skryptu z innego pliku, w przypadku niepowodzenia include generuje ostrzeżenie, require bład krytyczny. include 'vars.php'; require 'A.php';

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 31 / 38 Funkcje I Funkcji nie można przeciażać... bo zbyt ciężkie się zepsuja. Przekazywanie argumentów przez wartość. Przekazywanie argumentów przez referencje: function dodaj_cos_extra(&$string) { $string.= 'i coś extra.'; Wartości domyślne argumentów. function robkawe ($typ = "cappucino") { return "Robię kubek $typ.\n";

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 32 / 38 Funkcje II Zwracanie referencji. function &zwrocreferencje(){ return $jakasref; $nowaref =& zwrocreferencje();

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 33 / 38 Funkcje III Nazwa funkcji jako zmienna. function foo(){ echo "W foo()<br>\n"; function bar($arg = ''){ echo "W bar(); argumentem jest '$arg'.<br>\n"; $func = 'foo'; $func(); $func = 'bar'; $func('test');

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 34 / 38 Interakcje z Serwerem WWW I Formularze. <form action="foo.php" method="post"> Name:<input type="text" name="username"><br> <input type="submit"> </form> zmienna $_POST["username"] otrzyma wartość wprowadzona przez użytkownika. Cookies. Analogicznie jak $_POST/$_GET, wszystkie cookies sa przeslane w tablicy $_COOKIE, funkcja setcookie() tworzy/modyfikuje wartości cookies (funkcja może być użyta jedynie zanim skrypt cokolwiek wygeneruje na wyjściu).

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 35 / 38 Przykładowa Obsługa Formularza I Dane klineta w polach formularza: DATA_* Zakupione produkty: PROD_* <html>... <body> <?php $to = "kowalski@serwer.poczta.pl"; $subject = "Zamowienie"; $body = "Zamowienie:\n\n"; foreach ( $_POST as $k => $v ) { if (!strncmp($k,"data_",5)){ if ($v!= "") { $n=substr($k,5); $body="${body${n: $v \n";

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 36 / 38 Przykładowa Obsługa Formularza II $body="${body\n"; foreach ( $_POST as $k => $v ) { if (!strncmp($k,"prod_",5)){ if ($v!= "") { $n=substr($k,5); $body="${bodyprodukt: $n ilosc: $v \n"; $body="${body\n Razem do zaplaty:$_post[total]"; if (mail($to, $subject, $body))

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 37 / 38 Przykładowa Obsługa Formularza III {?> <p> Dziękuję za złożenie zamówienia<br> <?php else {?> <p> Błąd!!! Zamówienie nie zostało wysłane!!! <?php?> </body> </html>

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 38 / 38 UTF8 Uwaga: łańcuchy znaków w sa ciagami bajtów. Istnieje zbiór funkcji do przetwarzania ciagów dla kodowań wielobajtowych: mb_. echo strlen('abół'); 6 echo mb_strlen('abół'); 4

Igor Wojnicki (AGH, KIS) 7 stycznia 2017 38 / 38 Podręcznik. http://www.php.net/manual/pl/.