wprowadzenie - skibd -...

59
PHP Wprowadzenie Wykład nr 5 Sieci komputerowe i bazy danych

Upload: phungbao

Post on 28-Feb-2019

215 views

Category:

Documents


0 download

TRANSCRIPT

PHPWprowadzenie

Wykład nr 5

Sieci komputerowe i bazy danych

Informacje podstawowe

• Twórca: Razmus Lerdorf

• oficjalna nazwa „PHP: Hypertext Preprocessor”,• język skryptowy osadzany w dokumentach HTML• działa po stronie serwera – w trakcie konfiguracji

wymaga się dołączenia do oprogramowania serwera modułów obsługujących PHP

• służy do tworzenia dynamicznych stron WWW

Zalety PHP

● PHP jest dostępne bezpłatnie (pliki wykonywalne oraz kod źródłowy),

● PHP działa w systemie Unix, Windows 9x, Windows NT oraz Macintosh,

● PHP doskonale integruje się z serwerem WWW Apache jak i z serwerem Microsoft-u Internet Information Server (IIS),

● PHP zaprojektowano w języku C, co daje możliwość przyszłego rozszerzania jego możliwości funkcjonalnych,

● PHP jest technologią popularną,

Wady PHP● PHP jest językiem interpretowanym, skrypty nie są wykonywane

tak szybko jak programy kompilowane● PHP nie udostępnia wskaźników. Autorzy nie uważają braku

wskaźników za wadę, lecz jako zaletę PHP● PHP nie dysponuje możliwościami wykorzystania standardu

CORBA. Jeśli byłyby one dostępne, to PHP dysponowałoby możliwością pobierania danych z istniejących systemów klient-serwer.

● HTTP jest protokołem bezstanowym, a skrypty CGI i PHP są ulotne – serwer wykonuje je, zamyka i zapomina, co działo się przed chwilą. Wprowadza to konieczność wykorzystania unikalnych identyfikatorów.

● System transakcyjny. Nawet jeśli system bazy danych obsługuje transakcje, to nie są one przydatne, kiedy nie wszystkie aktualizowane dane znajdują się na serwerze bazy danych.

Porównanie z innymi rozwiązaniami● PHP a skrypty CGI

– skrypty CGI produkują dane wyjściowe w postaci HTML,– skrypty PHP są osadzone w dokumencie HTML,

● PHP a JavaScript– polecenia języka JavaScript są interpretowane po stronie

klienta,– polecenia języka PHP są interpretowane po stronie

serwera,– w przypadku JavaScript przeglądarka (interfejs

użytkownika) musi umieć interpretować JavaScript,– w przypadku PHP serwer musi umieć interpretować

PHP,

Podstawowe cechy● Możliwości PHP

– obsługa formularzy,– generowanie dynamicznej zawartości na stronach,– odbiór / nadawanie cookies, – wsparcie dla różnorodnych baz danych: mySQL,

PostgreSQL, Sybase, Oracle, dBase, ODBC,...– możliwość współpracy z innymi protokołami sieciowymi:

IMAP, POP3, SNMP, NNTP, HTTP,– możliwość operowania na „surowych” gniazdach sieciowych,

● Wersje PHP– PHP4 (PHP 4.0.4), PHP5.2.6– implementacje na różne platformy,– www.php.net

Przykładowy skrypt STRONA SERWERA STRONA PRZEGLĄDARKI

<html> <html><head> <head> <title>Przykład</title> <title>Przykład</title></head> </head><body> <body><?phpecho "Hej, to jest skrypt PHP!"; Hej, to jest skrypt PHP!print("<H2>A to też PHP<H2>"); <H2>A to też PHP<H2>?></body> </body></html> </html>

Wstawianie skryptów PHP● Aby plik był rozpoznany przez serwer WWW jako

skrypt PHP musi on mieć odpowiednie rozszerzenie.● Rozszerzenia te można zdefiniować w konfiguracji

serwera WWW, ale zazwyczaj jest to .php3 (dla PHP w wersji 3), .php lub php4 (dla PHP w wersji 4) i .phtml (dla PHP w wersji starszej niż 3).

● Po nadaniu plikowi takiego rozszerzenia serwer będzie wiedział, że plik ten nie jest przeznaczony do bezpośredniego wyświetlenia (jak w przypadku plików HTML), ale że najpierw trzeba go przepuścić przez parser PHP.

Wstawianie skryptów PHP● <? echo ("to jest najprostsza metoda, podobna do

SGML'u\n"); ?>;

● <?php echo("jeśli serwujesz pliki XML, użyj tej metody\n"); ?&>; ● <script language="php">

        echo ("niektóre edytory (np. FrontPage) nie              lubią przetwarzania instrukcji");</script>

● <% echo ("Możesz też użyć metody podobnej do tej z ASP"); %>    <%= ; # To jest skrót dla "<%echo .." %>;

Zakańczanie instrukcji

<? echo "To jest test";?><? echo "To jest test" ?>

Jedną z głównych zasad języka PHP jest umieszczenie na końcu każdej instrukcji (nie koniecznie linii) znaku średnika (';'). Można go pominąć tylko jeśli w danym miejscu następuje przejście do trybu HTML

Komentarze● <?

   echo "To jest test komentarzy"; // Ta metoda znana jest //z języków C/C++

      echo "A to drugi test"; # A ta z powłok Uniksowych   ?>

● <?

   echo "Test komentarzy"; /* Tu jest początek komentarza   tu dalej trwa   a tu się kończy */

?>

Zmienne● Zmienna jest to identyfikator znakowy, któremu

przypisano jakąś wartość. ● W języku PHP zmienne oznacza się za pomocą znaku

dolara ('$') przed wspomnianym identyfikatorem. ● Obsługa zmiennych w PHP jest uproszczona do

minimum. ● Zmienna jest inicjalizowana (to znaczy rezerwowany

jest dla niej pewien obszar w pamięci) przy pierwszym jej użyciu.

Zmienne● Nazwy zmiennych muszą zaczynać się od litery

(dużej lub małej) lub "underscore" (dolna kreska - '_')

● Dalej mogą się składać z dowolnej ilości liter, cyfr i znaków o kodzie ASCII powyżej 127.

● Przy nazwach zmiennych respektowana jest wielkość znaków - zmienne $Test i $test to dwie różne zmienne.

Zmienne<?

$nazwa = 1; // Zmiennej "nazwa" przypisywana jest wartość liczbowa 1   $druga_nazwa = "Tekst"; // Zmiennej "druga_nazwa" przypisany jest ciąg znaków "Tekst"   $trzecia_nazwa = $nazwa; // Zmiennej "trzecia_nazwa" przypisywana                            //jest wartość zmiennej "nazwa"   echo "To jest $druga_nazwa"; // Powinien wyświetlić się napis "To jest Tekst"   echo '$druga_nazwa'; // Powinien wyświetlić się napis "$druga_nazwa"   echo $nazwa; // Powinna wyświetlić się cyfra 1

?>

Typy zmienych● W PHP zmienne mają następujące typy:

– liczby całkowite (integer) – liczby rzeczywiste (double) – ciągi (string) – tablice (array) – obiekty (object)

<?$a = 1234; # liczba dziesiętna$a = -123; # liczba ujemna$a = 0123; # liczba ósemkowa (równoznaczne z dziesiętnym 83)$a = 0x12; # liczba szesnastkowa (równoznaczne z dziesiętnym 18)?>

PHP potrafi konwertować zmienne całkowite zapisane w różnych formatach liczbowych:

Zmiana typu

Zazwyczaj nie jest konieczne określenie typu zmiennej - PHP sam to ustala, zależnie od kontekstu. Przykład:

<?$blah = "0";  // $blah jest ciągiem (ASCII 48)$blah++;      // $blah jest ciągiem "1" (ASCII 49)$blah += 1;   // $blah jest teraz wartością całkowitą (2)$blah += 1.3;  // $blah jest wartością rzeczywistą (3.3)$blah = 5 + "10 Malutkich swinek"; //  jest wartością całkowitą (15)$blah = 5 + "10 Małych swiń";     //  jest wartością całkowitą (15)?>

Rzutowanie typów

<?$liczba_calkowita = 10;

$liczba_rzeczywista = (real) $liczba_calkowita;?>

Dozwolone typy rzutowań:(int), (integer) - t. całkowity(real), (double), (float) - t. rzeczywisty (string) - rzutuj do ciągu (array) - rzutuj do tablicy (object) - rzutuj do obiektu

Rzutowanie typów Użycie funkcji settype. Funkcja ta pobiera 2 argumenty. Pierwszym jest nazwa zmiennej do ustalenia typu, a drugim ciąg określający nowy typ zmiennej. Te typy to:●"integer" ●"double" ●"string" ●"array" ●"object"

<?    $a = 10.3;   echo "$a <br>"; // Wyświetlona wartość to "10.3"   settype($a, "integer");   echo "$a <br>"; // Wyświetlona wartość to "10"?>

Predefiniowane zmienne● Zmienne ustawiane przez serwer WWW

– np. SERVER_NAME - Nazwa hosta serwera na którym skrypt jest uruchamiany. Jeśli skrypt pracuje na wirtualnym hoście, to zmienna przyjmie jako wartość nazwę wirtualnego hosta.

● Zmienne ustawiane przez PHP– argv - Tablica argumentów przkazywanych do skryptu. Jeśli skrypt jest uruchamiany z linii

poleceń, to zmienna ta daję dostęp do argumentów w stylu języka C. Jeśli jest wywołany przez metodę GET, to zmienna ta zawierać będzie ciąg parametrów (query string).

– PHP_SELF - Nazwa pliku aktualnie wykonywanego skryptu, względna do katalogu głównego dokumentów. Ta zmienna jest niedostępna heśli PHP jest uruchamiany z linii poleceń.

– HTTP_GET_VARS - Tablica asocjacjna zmiennych przekazanych do skryptu przez metodę GET. Dostępna tylko jeśli włączone zostało śledzenie zmiennych przez ustawienie w konfiguracji PHP opcji track_vars lub komendą <?php_track_vars?>.

– HTTP_POST_VARS - Tablica asocjacjna zmiennych przekazanych do skryptu przez metodę POST. Dostępna tylko jeśli włączone zostało śledzenie zmiennych przez ustawienie w konfiguracji PHP opcji track_vars lub komendą <?php_track_vars?>.

Stałe

● __FILE__ - Nazwa pliku ze skryptem który jest aktualnie przetwarzany. Jeśli stała ta użyta jest wewnątrz pliku który został zainkludowany (o poleceniu include w dalszej części kursu), to podana zostanie nazwa pliku zainkludowanego, a nie pliku nadrzędnego.

● __LINE__ - Numer linii w skrypcie która aktualnie jest przetwarzana. Jeśli stała ta użyta jest wewnątrz pliku który został zainkludowany, to podany zostanie numer linii przetwarzanej w pliku zainkludowanym.

● PHP_VERSION - Ciąg reprezentujący wersję parsera PHP aktualnie używaną.

● PHP_OS - Nazwa systemu operacyjnego na którym uruchamiany jest parser PHP.

● TRUE - Logiczna wartość prawdy.

● FALSE - Logiczna wartość fałszu.

W PHP występują także tzw. stałe, czyli identyfikatory znakowe, których wartości nie można zmienić. Stałych, w odróżnieniu od zmiennych, używa się bez znaku dolara na początku.

Operatory

● operatory arytmetyczne, które służą do operacji na liczbach,● operatory przypisania służące do przypisywania zmiennym

wartości, ● operatory operacji bitowych, ● operatory porównania niezbędne do instrukcji warunkowych,● operator kontroli błędów, ● operator wykonania służący do uruchamiania zewnętrznych

programów, ● operatory inkrementacji i dekrementacji, ● operatory logiczne,● operatory ciągu.

Najprościej mówiąc są to symbole, które służą do operacji na zmiennych. Operatory dzielą się na:

Operatory arytmetyczne

Operator przypisania<?

$nazwa = $inna_nazwa = $trzecia_nazwa = 5;?>

Operatory operacji bitowychOperatrory operacji bitowych pozwalają na przestawianie pojedyńczych bitów zmiennych.

Operatory porównania

Operator kontroli błędówOperator kontroli błędów ('@') powoduje, że wyrażenie przed którym postawiono ten znak nie spowoduje wyświetlenia się jakiegokolwiek błędu lub ostrzeżenia.

<?/* Jeden z najczęstszych błędów SQL (za dużo o jeden apostrof) */$res = @mysql_query ("select nazwa, kod from 'lista") or    die ("Zapytanie się nie powiodło: błąd to ''");?>

Operator wywołaniaOperator ten służy do uruchamiania zewnętrznych programów lub poleceń powłoki.

<?

  $wynik = `ls -l /home/`;    echo $wynik;

?>

Po uruchomieniu tego skryptu wy wietlona zostanie zawarto katalogu /home ś śćna serwerze.

Operatory inkrementacji i dekrementacji

Służą one do zmniejszenia lub zwiększenia wartości danej zmiennej o 1.

Operatory logiczneOperatory logiczne służą do budowania bardziej skomplikowanych instrukcji warunkowych - do łączenia kilku warunków w jednej instrukcji.

Operator ciąguOperator ciągu ('.' - kropka) służy do łączenia kilku ciągów w jedną całość.

<?

   $zmienna1 = "Wartość zmiennej \"zmienna2\" to";

   $zmienna2 = 5;      echo $zmienna1." ".$zmienna2; // Powinno się wyświetlić:                                 // "Wartość zmiennej "zmienna2" to 5"

?>

Instrukcje warunkoweUżywa się jej do wykonania pewnej instrukcji (lub bloku instrukcji), ale tylko w pewnych okolicznościach - zostanie spełniony określony warunek (lub cały zestaw warunków).

<?if(wyrażenie_warunkowe)    instrukcja wykonywana jeśli spełniony zostanie warunekelse if(inne_wyrażenie_warunkowe)    instrukcja wykonywana jeśli spełniony zostanie drugi warunek, a pierwszy nieelse   instrukcja wykonywana jeśli nie zostanie spełniony żaden z warunków?>

if( ($a > $b || $a > $c) && // Nawiasy klamrowe nie są potrzebne - to       $d == $e ) // 2 linie ale jedna instrukcja   echo 'Zmienna $a jest większa od $b a zmienna $d jest równa $e, '.       'więc ten tekst pokaże się.';   // Taka konstrukcja jest dozwolona

Pętla FOR<?

for ( inicjalizacja zmiennych ; sprawdzenie warunku ; modyfikacja zmiennych) 

{         blok wyrażeń    

}?>

<?

for( $x = 1; $x <= 10; $x++ )   echo $x."<br>";

?>

Przykład:

Pętla while<?

while( warunek ){   ...   instrukcje   ...}

?>

Przykład:

<?

$x=1;while($x <= 10){   echo $x."<BR>";   $x++;}

?>

Pętla do...whileOd zwykłej pętli while różni się ona tym, że polecenia zawarte w pętli będą przynajmniej raz wykonane - w przypadku pętli while tak być nie musi, to znaczy jeśli za pierwszym razem warunek nie zostanie spełniony to polecenia z pętli nigdy nie zostaną wykonane.

<?

do{   ...   instrukcje   ...}while( warunek );

?>

Przerywanie wykonań pętliCzasem zachodzi potrzeba przerwania danej iteracji (powtórzenia) pętli i przejścia do następnej iteracji.

Istenie też polecenie, które powoduje całkowite wyjście z pętli - nie tylko z bieżącej iteracji.

<?

for($x = 1; $x<=100; $x++) {   if($x % 2 != 0)      continue;

   echo $x." ";}

?>

<?

for($x = 0; $x<10; $x++) {

   if($nazwa == "Test1")      break;}

?>

Składnia switch<?

switch($zmienna){   case 'wartość1':      ...      instrukcje      ...      break;   case 'wartość2':      ...      instrukcje      ...      break;   default:      ...      instrukcje      ...}

?>

Składnia switch jest instrukcją warunkową, ale jedną zmienną można porównać nie z jedną wartością, ale z kilkoma.

<?

$i = 3;

switch($i){   case 0:   case 1:   case 2:   case 3:      echo "Zmienna $i jest mniejsza bądź równa od trzech\n";      break;   case 4:      echo "Zmienna $i jest równa cztery\n";      break;   default:      echo "Zmienna $i jest większa od czterech\n";}

?>

TabliceTablice są bardzo specyficznym typem zmiennych - są to, najprościej mówiąc, zmienne zawierające w sobie uporządkowany zbiór zmiennych. Do zmiennych tych uzyskuje się dostęp przez liczbę w nawiasie kwadratowym podane bezpośrednio po nazwie zmiennej - tablicy. Liczba ta to tak zwany indeks - numer kolejny zmiennej w tablicy. Tak samo przypisuje się wartość do tablicy.

<?

$tablica[0] = "Wpis numer 0";$tablice[1] = "Wpis numer 1";$tablica[2] = "Wpis numer 2";

?>

Tablica asocjacyjnaW PHP występuje też inny rodzaj tablic, tak zwane tablice asocjacyjne (zwane też czasem haszami - hash table). Są to tablice, w których zamiast indeksów liczbowych używa się identyfikatorów znakowych (kluczy)

<?

$tablica["imie"] = "Jan";$tablica["nazwisko"] = "Kowalski";$tablica["adres"] = "Polna 1";

echo $tablica["imie"]." ".$tablica["nazwisko"].", ul. ".$tablica["adres"]."\n";

?>

Przeglądanie tablic<?

$tbl[] = 1;$tbl[] = 2;$tbl[] = 3;$tbl[] = 4;$tbl[] = 5;

for( $x = 0; $x < 5; $x++ ) {   // Pętla wykona się 5 razy (0...4)      echo $tbl[$x];

}

?>

Przeglądanie tablic

<?

$tbl[] = 1;$tbl[] = 2;$tbl[] = 3;$tbl[] = 4;$tbl[] = 5;

for( $x = 0; $x < count($tbl); $x++ ){   echo $tbl[$x];}

?>

<?

$tablica["imie"] = "Jan";$tablica["nazwisko"] = "Kowalski";$tablica["adres"] = "Polna 1";

while( list($klucz, $wartosc) = each($tablica) )   echo "$klucz => <BR>";

?>

Zwykła tablica indeksowana Tablica asocjacyjna

Sortowanie tablic

<?$owoce = array ( "d"=>"mango", "a"=>"papaja", 

"b"=>"banan", "c"=>"aronia");asort ($owoce);// Funkcja ta powoduje powrót do pierwszego elementu tablicyreset ($owoce); while (list ($klucz, $wartosc) = each ($owoce)) {    echo "$klucz = $wartosc\n";}

?>

asort() - sortuje tablice asocjacyjne zachowując przypisanie kluczy do wartości

Wynikiem działania powyższego przykładu powinno być:c = aroniab = banand = mangoa = papaja

Sortowanie tablic● arsort() - sortuje w odwrotnej kolejności tablice asocjacyjne

zachowując przypisanie kluczy do wartości. Funkcja prawie identyczna jak poprzednia, tyle że dane sortowane są "od tyłu".

● ksort() - sortuje tablice asocjacyjne według kluczy. Poprzedni przykład po podmianie funkcji asort na ksort powinna dać taki wynik:

a = papaja, b = banan, c = aronia, d = mango● rsort() - sortuje zwykłe tablice (nie asocjacyjne) w odwróconej

kolejności ● sort() - sortuje zwykłe tablice (nie asocjacyjne) w kolejności

alfabetycznej ● uasort() - funkcja sortująca tablice asocjacyjne za pomocą

zdefiniowanej przez użytkownika funkcji porównującej elementy (nazwa funkcji jest podawana za pomocą drugiego parametru)

● usort() - funkcja sortująca zwykłe tablice za pomocą funkcji zdefiniowanej przez użytkownika

● uksort() - funkcja sortująca tablice asocjacyjne według klucza za pomocą funkcji zdefiniowanej przez użytkownika.

PHP umożliwia zamianę ciągów na tablice i odwrotnie. Zamiana ciągu na tablicę jest bardzo przydatna jeśli zachodzi potrzeba wyciągnięcie jakiegoś fragmentu danych z ciągu. Załóżmy że w odczytaliśmy z pliku z danymi linię z logu zapisanego przez licznik WWW: "12/11/2000;19:23:33;Netscape Navigator;192.168.1.1". Jak widać dane rozdzielone są średnikami. Do rozdzielania ciągów na tablicę służy funkcja explode().

<?

$tablica = explode(";", $dane);

?>

Tworzenie tablic z ciągów

Tworzenie ciągów z tablic

Czasem potrzebne jest działanie w drugą stronę: złącznie pól tablicy w jeden ciąg, w którym pola oddzielone są jakimś znakiem (lub kilkoma). Do tego służy funkcja implode().

<?

$dane = implode(";", $tablica);

?>

FunkcjeFunkcja jest kawałkiem kodu, który można wywołać podając jej nazwę. Wcześniej podane zostało kilka funkcji dostarczanych przez PHP, takich jak array(), each(), list(), explode() czy implode(). Jak można zauważyć, funkcje rozpoznaje się po nawiasach występujących po ich nazwie.

<?phpfunction suma($parametr1 = 0, $parametr2 = 0){   $wartosc = $parametr1 + $parametr2;

   return $wartosc;}?>

W nawiasach (jeśli funkcja tego wymaga) podaje się parametry dla danej funkcji. Niektóre funkcje zwracają jakąś wartość, a więc wywołanie takiej funkcji można wstawić jak dowolne inne wyrażenie do listy parametrów innej funkcji czy np. do obliczenia.

Przykładowa postać funkcji

Włączanie kodu z pliku

Instrukcje pozwalające na włączenie do kodu zawartość innego pliku także zawierającego kod PHP. Instrukcjom podaje się jeden parametr - nazwę pliku do włączenia do kodu.

require - p l ik i d o c z a n e s d o k o d u je s z c z e p r z e d łą ąp a r s o w a n ie m , w k a d y m m ie js c u g d z ie z n a jd u je s i in s t r u k c ja .ż ę

inc lude - p l ik i d o c z a n e s d o k o d u p o p a r s o w a n iu ; in s t r u k c ja łą ąt a n a d a je s i d o d o c z a n ia p l ik ó w k tó r y c h n a z w a p o b ie r a n a ę łąje s t z e z m ie n n e j.

readfile - d a n e p o b r a n e z p l ik u n ie s p r z e tw a r z a n e p r z e z ąP H P , w i c fu n k c ja ta n a d a je s i t y lk o d o w y w ie t la n ia p l ik ó w ę ę śH T M L b d c z y s t o te k s t o w y c h .ą ź

Zasięg zmiennych

<?$a = 23;

function aaa(){

   echo $a;

}aaa();?>

<?$a = 23;

function aaa(){   global $a;      echo $a;   }aaa();?>

<?function aaa(){   $a = 0;   echo $a;   $a++;}

aaa();aaa();aaa();?>

<?function aaa(){   static $a = 0;   echo $a;   $a++;}

aaa();aaa();aaa();?>

Zmienne globalne Zmienne statyczne

Wyniki wykonania programu:nic 23 0

00

012

Tablice superglobalneTworzone przez PHP - użytkownik nie może samemu tworzyć takich tablic. Zawierają one dane przekazywane do PHP :●metodami GET - $_GET, ●metodami POST - $_POST, ●informacje o przekazanych plikach - $_FILES,●dane z ciasteczek - $_COOKIE●sesji - $_SESSION

Mają one zastąpić tablice $HTTP_*_VARS, które ze względu na kompatybilność są jeszcze obecne. Różnica między tablicami superglobalnymi a tymi używanymi wcześniej jest taka, że tablice superglobalne dostępne są w dowolnym miejscu kodu, bez potrzeby użycia instrukcji global.

Formularze

Formularze HTML wykorzystywane są do pobierani informacji od użytkownika. ●Wszystkie dane z formularza trafiają do odpowiednich tablic asocjacyjnych o nazwach kluczy takich, jak nazwy pól formularza. ●Jeśli w konfiguracji PHP włączona zostanie opcja register_globals (jest ona domyślnie wyłączona od wersji 4.2.0), to stworzone zostaną od razu zmienne o nazwach takich jak nazwy pól formularza. ●Przekazywanie parametrów: metody GET i POST.

Zależnie od metody, zmienne trafiają do odpowiednich tablic asocjacyjnych. Dane przesłane metodą:●GET trafiają do tablicy $_GET (lub $HTTP_GET_VARS)●POST trafiają do tablicy $_POST (lub $HTTP_POST_VARS).

Formularze – plik jeden.html

<html><head>  <title>   Test formularza  </title></head><body><form action="dwa.php" method="GET">  Imię: <input type=text name="imie"/><br/>  Nazwisko: <input type=text name="nazwisko"/><br/>  Proszę o fakturę do zamówienia: <input type=checkbox name="faktura"/><br/>  Chcę zamówić:<br/>  <input type=radio name=zamow value="kola"/>Coca-colę<br>  <input type=radio name=zamow value="fanta"/>Fantę<br>  <input type=radio name=zamow value="sprite"/>Sprite'a<br>  <input type=submit value="Wyślij"/>  </form></body></html>

Formularze – plik dwa.html

<html><head>  <title>   Wyniki  </title></head><body>  Imię: <?php echo $_GET['imie']?><br>  Nazwisko: <?php echo $_GET['nazwisko']?><br>  Faktura: <?php echo ($_GET['faktura'] == 'on' ? 'Tak' : 'Nie')?><br>  Zamówienie: <?php switch($_GET['zamow']){   case "kola":     echo "Coca-cola";     break;   case "fanta":     echo "Fanta";     break;   case "sprite":     echo "Sprite";     break;   }?> </body></html>

Odnośniki

Istnieje możliwość przekazywania niedużej liczby parametrów za pomocą zwykłych odnośników dostępnych w języku HTML. W takim przypadku wykorzystuje się metodę GET - konstruuje się odnośnik, na końcu którego należy umieścić znak zapytania a po nim oddzielone ampersandami (&) pary parametr=wartość, np:

<a href="strona.php?imie=Franek&nazwisko=Kowalski">Kliknij tu</a>

Obsługa sesjiUmożliwia on przekazywanie parametrów między stronami w łatwy sposób. Zmienne są przechowywane po stronie serwera a u klienta trzymane jest tylko ID sesji. Obsługa sesji wymaga to posiadania PHP skompilowanego z opcją --enable-trans-sid.

● session_start() - rozpoczęcie sesji; PHP sprawdza, czy przypisano już ID sesji. Jeśli tak, to odczytuje zmienne zarejestrowane w tej sesji. Jeśli nie, generowany jest nowy, unikalny identyfikator sesji.

● session_register( nazwa_zmiennej ) - rejestracja zmiennej w celu rozpoczęcie śledzenia jej wartość

● session_unregister( nazwa_zmiennej ) - powoduje, że PHP "zapomina" o zmiennej

Zmienne zarejestrowane w sesji przechowywane są w tablicy $_SESSION. Kluczem tej tablicy jest oczywiście nazwa zarejestrowanej zmiennej.

<?

session_start(); 

if (!isset($_SESSION['count'])) { // jeśli zmienna nie jest zarejestrowana    $_SESSION['count'] = 0;       // przypisz jej początkową wartość} else {                           // jeśli jest zarejestrowana    $_SESSION['count']++;        // zwiększ jej wartość}

echo 'Strona odczytana '.$_SESSION['count'].' razy w ciągu tej sesji';

?>

Obsługa sesji

Porównywanie ciągów● strcmp() - podstawową funkcją służącą do porównywania

ciągów. Parametrami są dwa ciągi tekstowe, które mają być porównane. Funkcja ta zwraca wartość 0 jeśli ciągi są takie same, wartość większą od zera jeśli pierwszy ciąg jest większy od drugiego lub wartość mniejszą od zera jeśli pierwszy ciąg jest mniejszy od drugiega. Funkcja ta rozróżnia wielkość znaków.

● funkcji strcasecmp() porównuje dwa ciągi nie biorąc pod uwagę wielkości znaków (parametry i wartości zwracane takie jak przy funkcji strcmp).

● funkcja strncmp() porównuje tylko taką ilość początkowych znaków z podanych ciągów, jaka została podana jako trzeci parametr tej funkcji.

● strncasecmp() wersja funkcji strncmp() ignorująca wielkość znaków.

Wyciąganie fragmentów ciągów

<?

$data = "1992/11/19";

$rok = substr($data, 0, 4);

?>

<?

$data = "1992/11/19";

$tablica = explode("/", $data);

?>

<?

$tekst = "19/11/1982 01:43:12.10";

$tablica = split("[ /:.]", $tekst);

?>

<?

$tekst = "To jest tekst. Tego zdania nie będzie widać.";

$zdanie = substr($tekst, 0, strpos($tekst, "."));

?>

substr

explode split

Podmienianie fragmentów ciągów<?

$tekst = "Jeśli jesteś za podnieś rękę";

$wynik = str_replace("za", "przeciw", $tekst);

?>

Podmienianie znaków w ciągachFunkcja strtr - przyjmuje 3 parametry: ●ciąg w którym będą podmieniane znaki, ●ciąg zawierający znaki do podmiany●ciąg zawierający znaki, na które te podane w drugim parametrze będą podmienione.

Inne funkcje● htmlspecialchars($string) - funkcja ta zamienia znaki używane w kodzie HTML na takie,

które zostaną wyświetlone prawidłowo, a nie będą interpretowane przez przeglądarkę jako znacznik HTML. Wszystkie wystąpienia znaku < zostają zamienione na znak &lt; a znaku > na &apm;gt;. Funkcja ta jest bardzo przydatna gdy zachodzi potrzeba wyświetlenia kodu źródłowego HTML, który nie powinien być interpretowany przez przeglądarkę.

● htmlentities($string) - jest to rozszerzona wersja funkcji htmlspecialchars(). Zamienia wszystkie znaki na odpowiadające im kody HTML, jeśli takowe istnieją. Np. wszystkie wystąpienia znaku ó zamieniane są na &oacute.

● chop($string), trim($string), ltrim($string), rtrim($string) - funkcje te mają za zadanie usunięcie 'białych znaków' (spacja, tabulator, znacznik nowego wiersza) z początku lub końca ciągu. Funkcja chop(), tak jak i rtrim(), usuwa te znaki z końca ciągu, ltrim() z początku a trim() i z początku i końca.

● nl2br($string) - bardzo przydatna funkcja służąca do zamiany znaków końca wiersza na HTML'owe znaczniki <BR> (bardzo przydatne przy wyświetlaniu sformatowanego tekstu w oknie przeglądarki).

● strip_tags($string) - usuwa wszystkie znaczniki HTML z podanego jako parametr ciągu. Możliwe jest podanie opcjonalnego drugiego parametru - ciągu, który zawiera nazwy znaczników HTML, które mają zostać pozostawione.

$host = "149.156.115.209";$baza = "skbd";$user = "reader";$pwd = "";

$connection = mysql_connect($host, $user, $pwd) or die("Couldn't connect :(.");$db = mysql_select_db($baza, $connection) or die("Couldn't select database.");$sql = "SELECT indeks,grupa,kierunek FROM `studenci` ORDER BY 1; ";

$result = @mysql_query($sql,$connection) or die("Couldn't execute query.");$num = mysql_num_rows($result);

if($num>0)while($res = mysql_fetch_array($result)){

echo $res[0] . $res[0] . $res[0];}

}

Komunikacja z bazą MySQL