PHP
Transkrypt
PHP
Sieci komputerowe i bazy danych
Wykład nr 5
PHP
Wprowadzenie
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 klientserwer.
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
<html>
<head>
<title>Przykład</title>
</head>
<body>
<?php
echo "Hej, to jest skrypt PHP!";
print("<H2>A to też PHP<H2>");
?>
</body>
</html>
STRONA PRZEGLĄDARKI
<html>
<head>
<title>Przykład</title>
</head>
<body>
Hej, to jest skrypt PHP!
<H2>A to też PHP<H2>
</body>
</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
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
<?
echo "To jest test";
?>
<? echo "To jest test" ?>
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)
PHP potrafi konwertować zmienne całkowite
zapisane w różnych formatach liczbowych:
<?
$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)
?>
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
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
<?
$liczba_calkowita = 10;
$liczba_rzeczywista = (real) $liczba_calkowita;
?>
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
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.
●
●
__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.
Operatory
Najprościej mówiąc są to symbole, które służą do operacji na
zmiennych. Operatory dzielą się na:
●
●
●
●
●
●
●
●
●
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.
Operatory arytmetyczne
Operator przypisania
<?
$nazwa = $inna_nazwa = $trzecia_nazwa = 5;
?>
Operatory operacji bitowych
Operatrory operacji bitowych pozwalają na przestawianie
pojedyńczych bitów zmiennych.
Operatory porównania
Operator kontroli błędów
Operator 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łania
Operator 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 logiczne
Operatory logiczne służą do budowania bardziej skomplikowanych
instrukcji warunkowych - do łączenia kilku warunków w jednej
instrukcji.
Operator ciągu
Operator 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 warunkowe
Uż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 warunek
else if(inne_wyrażenie_warunkowe)
instrukcja wykonywana jeśli spełniony zostanie drugi warunek, a pierwszy nie
else
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ń
}
?>
Przykład:
<?
for( $x = 1; $x <= 10; $x++ )
echo $x."<br>";
?>
Pętla while
<?
while( warunek ){
...
instrukcje
...
}
?>
Przykład:
<?
$x=1;
while($x <= 10){
echo $x."<BR>";
$x++;
}
?>
Pętla do...while
Od 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ętli
Czasem 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;
for($x = 0; $x<10; $x++) {
echo $x." ";
}
?>
if($nazwa == "Test1")
break;
}
?>
<?
switch($zmienna){
case 'wartość1':
...
instrukcje
...
break;
case 'wartość2':
...
instrukcje
...
break;
default:
...
instrukcje
...
}
?>
Składnia switch
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";
}
?>
Tablice
Tablice 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 asocjacyjna
W 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
Zwykła tablica indeksowana
Tablica asocjacyjna
<?
<?
$tbl[] = 1;
$tbl[] = 2;
$tbl[] = 3;
$tbl[] = 4;
$tbl[] = 5;
$tablica["imie"] = "Jan";
$tablica["nazwisko"] = "Kowalski";
$tablica["adres"] = "Polna 1";
for( $x = 0; $x < count($tbl); $x++ )
{
echo $tbl[$x];
}
?>
while( list($klucz, $wartosc) = each($tablica) )
echo "$klucz => <BR>";
?>
Sortowanie tablic
asort() - sortuje tablice asocjacyjne zachowując przypisanie kluczy
do wartości
<?
$owoce = array (
"d"=>"mango", "a"=>"papaja", "b"=>"banan", "c"=>"aronia");
asort ($owoce);
// Funkcja ta powoduje powrót do pierwszego elementu tablicy
reset ($owoce); while (list ($klucz, $wartosc) = each ($owoce)) {
echo "$klucz = $wartosc\n";
}
?>
Wynikiem działania powyższego przykładu powinno być:
c = aronia
b = banan
d = mango
a = 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.
Tworzenie tablic z ciągów
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 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);
?>
Funkcje
Funkcja 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.
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
<?php
function suma($parametr1 = 0, $parametr2 = 0)
{
$wartosc = $parametr1 + $parametr2;
return $wartosc;
}
?>
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 lik 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 tr u k c ja .
inc lude - p lik 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 tr u k c ja
ta n a d a je s i ę d o d o łą c z a n ia p lik ó 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.
rea dfile - d a n e p o b r a n e z p lik 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 ę ty lk o d o w y ś w ie tla n ia p lik ó w
H T M L b ą d ź c z y s to te k s to w y c h .
Zasięg zmiennych
Zmienne globalne
<?
$a = 23;
<?
$a = 23;
function aaa(){
function aaa(){
global $a;
echo $a;
}
aaa();
?>
echo $a;
}
aaa();
?>
Wyniki wykonania programu:
nic
23
Zmienne statyczne
<?
function aaa(){
$a = 0;
echo $a;
$a++;
}
<?
function aaa(){
static $a = 0;
echo $a;
$a++;
}
aaa();
aaa();
aaa();
?>
aaa();
aaa();
aaa();
?>
0
0
0
0
1
2
Tablice superglobalne
Tworzone 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 sesji
Umoż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.
Obsługa sesji
<?
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';
?>
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
substr
<?
<?
$data = "1992/11/19";
$tekst = "To jest tekst. Tego zdania nie będzie widać.";
$rok = substr($data, 0, 4);
$zdanie = substr($tekst, 0, strpos($tekst, "."));
?>
?>
explode
split
<?
<?
$data = "1992/11/19";
$tekst = "19/11/1982 01:43:12.10";
$tablica = explode("/", $data);
$tablica = split("[ /:.]", $tekst);
?>
?>
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ągach
Funkcja 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 < 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 ó.
●
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.
●
Komunikacja z bazą MySQL
$host
$baza
$user
$pwd
= "149.156.115.209";
= "skbd";
= "reader";
= "";
$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];
}
}