Podstawy PHP

Podstawy PHP

PHP to skryptowy język ogólnego przeznaczenia typu open source,  służący do tworzenia stron internetowych – skrypty mogą być również osadzone w dokumentach HTML. Język został stworzony w 1994 roku przez  Rasmusa Lerdorfa jako zestaw skryptów Perla, mających za zadanie monitorowanie użytkowników odwiedzających witrynę www. Dwaj izraelscy programiści: Zeev Suraski i Andi Gutmans przepisali kod PHP od nowa, tworząc nową architekturę, która znacznie zwiększała wydajność. W 1999 roku ukazuje się nowy silnik języka PHP Zend Engine (dodano wiele nowych narzędzi, konstrukcji językowych oraz bezpieczniejszy system wejścia/wyjścia). Najnowsza wersja PHP o numerze 8 została wydana w 2020 roku.

Istnieją trzy główne obszary wykorzystania PHP:

  • tworzenie skryptów przetwarzanych przez serwer (obszar docelowy) – szczególnie dobrze nadaje się do tworzenia aplikacji internetowych
  • tworzenie skryptów przetwarzanych przez wiersz poleceń – wymagany jest parser PHP; służy do skryptów regularnie wykonywanych za pomocą crona (Linux) lub harmonogramu zadań (Windows)
  • tworzenie aplikacji desktopowych (sytuacje specyficzne)

Aby uruchomić skrypt PHP w tradycyjnym sposób wymagane są trzy rzeczy: parser PHP, serwer WWW i przeglądarka internetowa.



PHP – wprowadzenie

Strona WWW to plik zawierający kod HTML. Taki plik jest umieszczany na serwerze www. Jeżeli plik ma rozszerzenie php (lub takie, które na serwerze WWW zostało zarezerwowane są dla skryptów PHP) i nastąpiło żądanie jego przesłania, to wtedy serwer pobiera stronę z dysku lub pamięci i wysyła do interpretera PHP żądanie z przetworzeniem danych znajdujących się w tym dokumencie. Moduł PHP przetwarza dane (wykonuje skrypt) i wynik przesyła do serwera. Na końcu serwer wysyła tak przetworzony kod do przeglądarki klienta.

 

Wynika z tego, że do pracy ze skryptami PHP wymagany jest serwer www z zainstalowanym interpreterem PHP – najprostsze rozwiązanie polega na instalacji aplikacji XAMPP, która zawiera lokalny serwer www, interpreter PHP oraz m.in. serwer bazodanowy.

Powrót do góry

Znaczniki PHP

Aby plik był parsowany przez interpreter PHP, musi mieć rozszerzenie php (np. index.php). Treść skryptu PHP należy oddzielić od kodu HTML specjalnymi
znacznikami. Wewnątrz pliku kod PHP rozpoczyna się od tagu <?php. Tag zamykający ?> nie zawsze jest wymagany. Stosuje się go w sytuacji standardowego wykorzystania znaczników HTML.

Od  PHP7 wyróżnia się dwa typy znaczników:

  • kanoniczny – znacznik standardowy: <?php ?>

  • SGML: znacznik skrócony: <?= ?>

Powrót do góry

Komentarze i wyświetlanie danych

Komentarze pozwalają na umieszczenie w kodzie uwag, które mogą być przydatne podczas jego analizy, ale w trakcie przetwarzania skryptu są ignorowane. W PHP warto wyróżnić dwa rodzaje komentarzy:

  • komentarz  liniowy – ten rodzaj komentarza został zaczerpnięty ze składni klasycznych języków programowania takich jak C i C++. Rozpoczyna się od znaków // i kończy w bieżącej linii skryptu
  • komentarz blokowy – ten rodzaj komentarza zaczyna się znakami /*, a kończy się sekwencją */. Wszystko to, co znajduje się między tymi znakami, zostanie zignorowane przez PHP

Wyświetlanie danych

Do wyświetlania danych służą dwie instrukcje: echo oraz print. Instrukcje ten nie są funkcjami, ale konstrukcjami językowymi. Instrukcja print zachowuje się tak jak funkcja i zwraca wartość, w związku z czym może być wykorzystywana w bardziej złożonych wyrażeniach, natomiast echo — nie.

W instrukcjach echo oraz print możliwe jest stosowanie cudzysłowów lub apostrofów. Wszystkie wartości umieszczone między apostrofami traktowane są dosłownie, natomiast wartości zapisane w cudzysłowach są interpretowane – jeżeli w cudzysłowie znajdzie się nazwa zmiennej, to zostanie wyświetlona odpowiadająca jej wartość.

Powrót do góry

Zmienne, typy danych i operatory

Zmienne to konstrukcje, które pozwalają tymczasowo przechowywać pewne wartości (np. liczbę, tekst lub bardziej złożone struktury). Zmienne w PHP rozpoczynają się od znaku $ (np. $imie), po którym następuje nazwa zmiennej. Nazwa ta zaczyna się od litery lub znaku podkreślenia, po których może nastąpić dowolna kombinacja liter, cyfr i znaków podkreślenia. Typ zmiennej jest przypisywany automatycznie w momencie nadania jej wartości. Dodatkowo zmienne można usunąć za pomocą funkcji unset, np. unset($imie).

Podział zmiennych ze względu na zasięg

Zasięg to miejsca, w których zmienna jest ważna i można się do niej bezpośrednio odwoływać. Ze względu na zasięg zmiennych dzieli się je na:

  • zmienne superglobalne – to zestaw predefiniowanych tablic, do których można odwoływać się w każdym miejscu skryptu (pozwalają na uzyskanie informacji konfiguracyjnych oraz informacji związanych z bieżącym wywołaniem skryptu)
  • zmienne globalne – to zmienne utworzone przez użytkownika poza funkcją
  • zmienne lokalne – to zmienne utworzone w ciele funkcji

Zestawienie zmiennych superglobalnych:

$GLOBALS  Tablica zawierająca odniesienie do każdej zmiennej zdefiniowanej przez użytkownika, która ma zasięg globalny dla danego skryptu
$_SERVER  Tablica zawierająca informacje ustawiane przez serwer WWW. Można z niej odczytać m.in. dane dotyczące połączenia, które wywołało dany skrypt, np. adres IP, port czy wartości nagłówków HTTP
$_GET  Tablica zawierająca dane przekazane do serwera WWW za pomocą metody GET
$_POST  Tablica zawierająca dane przekazane do serwera WWW za pomocą metody POST
$_COOKIE  Tablica zawiera cookies przekazane z serwera WWW
$_FILES  Tablica zawierająca elementy przekazane do skryptu za pomocą metody POST podczas przesyłania plików do serwera
$_REQUEST 
Tablica asocjacyjna zawierająca dane z $_GET, $_POST i $_COOKIE
$_SESSION 
Tablica asocjacyjna zawierająca dane związane z bieżącą sesją

Typy danych

W PHP typy danych podzieli się na:

  • typy proste
    • typ boolean – typ logiczny przyjmujący jedną z dwóch wartości: true lub false
    • typ integer – typ całkowitoliczbowy reprezentuje dodatnie i ujemne liczby całkowite. Liczby te mogą być zapisane w formatach: dziesiętnym, ósemkowym, szesnastkowym i dwójkowym (binarnym) – domyślnie stosowany jest format dziesiętny. Maksymalny zakres typu całkowitego zależy od platformy sprzętowo-systemowej
    • typ float – reprezentuje liczby zmiennoprzecinkowe float i double. Ich zakres zależy od platformy sprzętowo-systemowej. Typowy jest zapis z kropką dziesiętną, np.  $liczba=1.9
    • typ string – to typ łańcuchowy, który służy do zapamiętywania sekwencji bajtów (maksymalnie 2 GB). Do przechowywania łańcucha w zmiennej wykorzystuje się apostrofy lub cudzysłów. Aby połączyć zmienne typu string należy użyć kropki, np. echo Simie.’  ‘.$nazwisko
  • typy złożone
    • typ tablicowy
    • typ obiektowy
  • typy specjalne
    • typ resource – przechowuje odniesienie do zasobów zewnętrznych
    • typ null – typ ten informuje, że dana zmienna nie przechowuje żadnej wartości

PHP udostępnia funkcje pozwalające stwierdzić, jakiego typu jest zmienna

 Nazwa funkcji  Znaczenie działania
 gettype()  Zwraca ciąg znaków, który określa typ zmiennej, lub unknown, gdy typ jest nieokreślony
 is_int()  Zwraca true, jeżeli argument jest liczbą całkowitą, lub false
 is_double()  Zwraca true, jeżeli argument jest liczbą rzeczywistą, lub false
 is_float()  Zwraca true, jeżeli argument jest liczbą rzeczywistą, lub false
 is_bool()  Zwraca true, jeżeli argument jest zmienną logiczną, lub false
 is_array()  Zwraca true, jeżeli argument jest tablicą, lub false
 is_string()  Zwraca true, jeżeli argument jest ciągiem znaków, lub false
 is_null()  Zwraca true, jeżeli argument ma wartość null, lub false
 is_numeric()  Zwraca true, jeżeli argument jest numeryczny, lub false
 isset()  Zwraca true, jeżeli zmienna istnieje, lub false

Istnieje możliwość wymuszania typu zmiennej, chociaż w wielu przypadkach dochodzi do jego automatycznej zmiany:

Samodzielna zmiana typu zmiennej nosi nazwę rzutowania typów. Operację tę można wykonać m.in. za pomocą konstrukcji $zmienna = (nazwa_typu) $druga_zmienna:

Operatory

Występujące w PHP operatory, które służą do wykonywania różnorodnych operacji, można podzielić na kilka grup:

arytmetyczne – operatory z tej grupy służą do wykonywania operacji arytmetycznych (dodawania, odejmowania, mnożenia, dzielenia, potęgowania, dzielenie bez reszty)

**   Potęgowanie
 Mnożenie
 Dzielenie
 Dodawanie
–   Odejmowanie
 Modulo

bitowe – służą do wykonywania operacji na bitach

logiczne – pozwalają na wykonywanie operacji logicznych

and   Iloczyn logiczny
or   Suma logiczna
xor   Logiczna alternatywa wykluczająca
 Negacja logiczna
&&   Iloczyn logiczny
||   Suma logiczna

przypisania – operatory są dwuargumentowe i powodują przypisanie wartości argumentu znajdującego się z prawej strony operatora temu znajdującemu się z lewej, np. $stan= true

x += y x = x + y
x -= y x = x – y
x *= y x = x * y
x /= y x = x / y
x %= y x = x % y
x ^= y x = x ^ y

relacyjne (porównywania) – służą do porównywania argumentów; ich wynikiem działania jest wartość logiczna true lub false

==   Wynikiem jest true, jeśli argumenty są sobie równe; $a == $b
===   Wynikiem jest true, jeśli argumenty są sobie równe i są tego samego typu; $a === $b
 <>   Wynikiem jest true, jeśli argumenty są różne; $a <> $b
!=   Wynikiem jest true, jeśli argumenty są różne; $a != $b
!==   Wynikiem jest true, jeśli argumenty są różne lub są różnych typów; $a !== $b
 Wynikiem jest true, jeśli argument prawej jest mniejszy od lewego; $a > $b
 Wynikiem jest true, jeśli argument prawej jest większy od lewego; $a < $b
>=   Wynikiem jest true, jeśli argument prawej jest mniejszy od lewego lub równy jemu; $a >= $b
<=   Wynikiem jest true, jeśli argument prawej jest większy od lewego lub równy jemu; $a <= $b

inkrementacji/dekrementacji

  • operator inkrementacji – to operator ++, który zwiększa wartość zmiennej o jeden
  • operator dekrementacji – to operator (dwa minusy), który zmniejsza wartość zmiennej o jeden

Powrót do góry

Instrukcje sterujące – instrukcja IF

Instrukcja IF

Gdy należy sprawdzić, czy określona zmienna przyjęła oczekiwaną wartość, stosuje się instrukcję IF, która ma postać:

Jeśli warunek zostaje spełniony, to wykonywane są instrukcje wewnątrz nawiasów klamrowych (do skonstruowania warunku wykorzystuje się operatory relacyjne):

Instrukcja IF … ELSE

Instrukcję IF … ELSE stosuje się w przypadku sprawdzenia dwóch wykluczających się wzajemnie warunków i ma postać:

Przykład:

Instrukcja IF … ELSE IF

Tego rodzaju instrukcja pozwala badać wiele warunków. Na przykład:

Powrót do góry

Instrukcje sterujące – instrukcja wyboru

Instrukcja wyboru switch pozwala sprawdzić ciąg warunków i wykonać różne instrukcje w zależności od wyników porównywania. Instrukcja ta ma postać:

Zapis ten należy rozumieć w sposób następujący: sprawdź wartość wyrażenia,  jeśli wynikiem jest wartość1, to wykonaj instrukcję 1 i przerwij wykonywanie bloku (instrukcja break). Natomiast jeśli wynikiem jest wartość2, to wykonaj instrukcję 2 i przerwij wykonywanie bloku itd. Jeśli nie zachodzi żaden z wymienionych przypadków, wykonaj instrukcję domyślną – blok default jest opcjonalny i może być pominięty.

Powrót do góry

Instrukcje sterujące – operator warunkowy

Operator warunkowy to krótszy zapis instrukcji IF … ELSE i ma postać:

Oznacza on że, jeśli warunek jest prawdziwy, to ma zostać podstawiona za wartość całego wyrażenia wartość1, w przeciwnym razie wartość2, np.:

Powrót do góry

Instrukcje sterujące – pętle

Pętle to konstrukcje języka, które pozwalają na wielokrotne wykonywanie powtarzających się instrukcji.

Pętla FOR

Pętlę FOR wykorzystuje się najczęściej, gdy liczba powtarzanych operacji jest znana (np. jest zapisana w pewnej zmiennej). Pętla ta ma postać:

  • wyrażenie_początkowe – to zmienna inicjująca używana jako licznik liczby wykonań pętli
  • wyrażenie_warunkowe – to warunek jaki musi być spełniony, aby pętla się wykonała
  • wyrażenie_modyfikujące – wyrażenie modyfikującą wartość zmiennej

Pętla WHILE

Pętlę WHILE stosuje się , gdy liczby powtórzeń z góry nie jest znana, a zakończenie pętli jest uzależnione od spełnienia pewnego warunku. Pętla ta ma postać:

Instrukcje znajdujące się wewnątrz pętli wykonywane są tak długo, jak długo wartość zmiennej $i jest mniejsza od wartości warunkowej, na przykład:

Pętla będzie tak długo wykonywana, dopóki zmienna $i będzie mniejsza od 10.

Pętla DO … WHILE

Główna różnica między pętlą WHILE  a DO … WHILE jest taka, że w tej drugiej pętla najpierw są wykonywane instrukcje, a dopiero potem sprawdzany jest warunek. Instrukcje z wnętrza pętli DO … WHILE  są wykonywane zawsze przynajmniej jeden raz, nawet jeśli warunek jest fałszywy. Jej ogólna postać jest następująca:

Przykład wykorzystania pętli DO … WHILE:

Pętla FOREACH

Pętla FOREACH pozwala na iterowanie po tablicach i ma postać:

Przykład wykorzystania pętli FOREACH:

Powrót do góry

Funkcje – tworzenie funkcji

Funkcje są to wydzielone bloki kodu przeznaczone do wykonywania konkretnych zadań. Dzięki nim unika się wielokrotnego powtarzania tych samych instrukcji.  Tworzenie funkcji rozpoczyna się od użycia słowa kluczowego function, po której następuje jej nazwa i ta może się składać z liter, cyfr oraz znaków podkreślenia, nie może się jednak zaczynać od cyfry.

Przykład funkcji i jej wywołania:

Zmienne utworzone w obrębie funkcji mają zasięg lokalny. Aby w funkcji odwołać się do zmiennej spoza funkcji należy przekazać ją jako jej  argument lub odczytać ją z tablicy globalnej – $GLOBALS.

Funkcje – argumenty funkcji

Funkcjom można przekazywać argumenty. Listę argumentów należy umieścić w nawiasie okrągłym za nazwą funkcji, oddzielając je od siebie przecinkami. Na przykład:

PHP pozwala na budowanie funkcji z domyślnymi wartościami argumentów. W ten sposób ich część może być pominięta w wywołaniu. W ich miejsce zostaną wstawione wartości zdefiniowane podczas tworzenia funkcji. Funkcję z domyślnymi wartościami argumentów ilustruje poniższy przykład:

Funkcje – zwracanie wartości przez funkcje

Funkcje mogą one również zwracać różne wartości. Czynność ta jest wykonywana za pomocą instrukcji return. Oto schematyczna postać tej konstrukcji:

Przykład funkcji zwracającej wartość:

Począwszy od PHP7 dopuszcza się również deklarację typu wartości zwracanej przez funkcję. Nazwę typu należy umieścić po znaku dwukropka za nawiasem okrągłym przeznaczonym na argumenty funkcji. Schematycznie wygląda to następująco:

Przykład funkcji z deklaracją wartości zwracanej:

Jeżeli w instrukcji return użyta będzie wartości innego typu niż zadeklarowana, to nastąpi konwersja wartości zwracanej na typ występujący w deklaracji.

Powrót do góry

Obsługa daty i czasu

Funkcją pozwalającą na uzyskiwanie informacji o dacie jest date().Funkcja musi przyjąć przynajmniej jeden argument w postaci ciągu tekstowego i ma postać:

Parametr format określa, interesujące nas dane, a znacznik_czasu (argument opcjonalny) wskazuje istotną dla nas datę w formacie Uniksowym. Poniżej przykładowe znaczniki formatujące:

 Dzień miesiąca w formacie dwucyfrowym (od 01 do 31)
 Dzień tygodnia w formie skrótu trzyliterowego (od Mon do Sun)
 Pełna angielska nazwa miesiąca (od January do December)
 Godzina w formacie dwunastogodzinnym (od 1 do 12)
 Godzina w formacie dwudziestoczterogodzinnym (od 1 do 24)
 Godzina w formacie dwunastogodzinnym (od 01 do 12)
 Godzina w formacie dwudziestoczterogodzinnym (od 01 do 24)
 Liczba minut (od 01 do 59)
 Dzień miesiąca (od 1 do 31)
 Pełna nazwa dnia tygodnia (od Monday do Sunday)
 Miesiąc w postaci dwucyfrowej (od 01 do 12)
 Skrót nazwy miesiąca (od Jan do Dec)
 Miesiąc w postaci liczbowej (od 1 do 12)
 Liczba sekund (od 00 do 59)
 Liczba dni w podanym miesiącu (od 28 do 31)
 Liczba mikrosekund;
 Znacznik czasu Uniksa
 Dzień tygodnia w postaci numerycznej [od 0 (niedziela) do 6 (sobota)]
 Rok w postaci dwucyfrowej (np. 20)
 Rok w postaci czterocyfrowej (np. 2020)
 Numer kolejnego dnia w roku (od 0 do 365)

Przykład użycia funkcji date():

Znacznik czasu

Do utworzenia znacznika czasu Uniksa można wykorzystać funkcję mktime(), która przyjmuje 6 argumentów, ale wszystkie są opcjonalne. Jeśli interesuje nas znacznik czasu odpowiadający godzinie 10:21:30 w aktualnym dniu, należy zastosować zapis mktime(10, 21, 30), a jeśli należy utworzyć aktualny znacznik czasu należy użyć funkcji time() bez parametrów. Ogólna postać funkcji mktime() przedstawia się następująco:

Parametry pomija się od prawej do lewej, a to oznacza, że jeśli należy zrezygnować z miesiąca, to musimy również usunąć dzień i rok. Przykład użycia znacznika czasu do obliczeń pomiędzy datami:

  • 1 dzień to 86 400 sekund (60 sekund×60 minut×24 godziny)
  • ceil() – funkcja zaokrąglająca w górę
  • abs() – funkcja zwraca wartość absolutną

Powrót do góry

Tablice

Tablica to struktura danych pozwalająca na przechowywanie zbioru elementów. W PHP wyróżnia się dwa rodzaje tablic:

  • tablicę indeksową
  • tablicę asocjacyjna

Tablice (indeksową i asocjacyjną) można utworzyć m.in. za pomocą funkcji array(), która jako parametry przyjmuje dane stanowiące jej zawartość. Ogólna postać takiej konstrukcji wygląda w sposób następujący:

Każdą wartość identyfikuje indeks. Pierwsza ma indeks 0, druga indeks 1, trzecia indeks 2 itd. Przykład utworzenia tablicy:

Aby uzyskać dostęp do wartości zapisanej w danej komórce, należy podać jej indeks w nawiasie kwadratowym występującym za nazwą tablicy (indeksowania zaczyna się od 0), np. $kolory[0]. Jeśli tablica ma duży rozmiar, do odczytu jej zawartości lepiej użyć pętli. Na przykład:

W PHP wartości w poszczególnych komórkach tablicy nie muszą być tego samego typu (w odróżnieniu od wielu innych języków programowania). Prawidłową postać ma również poniższa tablica:

Aby dodać dane do tablicy należy podać nazwę tablicy, nawias kwadratowy oraz przypisać wartość (wielkość tablicy nie jest z góry ustalona i rośnie wraz z dodawaniem kolejnych elementów), np.:

Tablica asocjacyjna

W tablicach asocjacyjnych każdemu indeksowi można nadać unikalną nazwę. Na przykład:

Wyświetlenie danych przedstawia się w sposób następujący:

Do odczytu tablic asocjacyjnych można użyć pętli – najczęściej jest to pętla typu foreach. Na przykład:

Ustalanie liczby elementów

Podczas pracy z tablicami często przydaje się informacja o ilość elementów tablicy. Aby ją uzyskać należy wykorzystać funkcję count(), tj.

Sortowanie tablic

Sortowanie polega na ustawieniu elementów w określonym porządku, najczęściej rosnącym lub malejącym. PHP dysponuje kilkoma funkcjami sortującymi:

  • sort – sortuje tablice indeksowe
  • asort – sortuje tablice asocjacyjne względem wartości poszczególnych kluczy
  • ksort – sortuje tablice asocjacyjne względem nazw kluczy

Gdy chcemy ustawić elementy w kolejności od najmniejszego do największego, użyjemy funkcji sort(). Na przykład:

 

Powrót do góry

Odbieranie danych z przeglądarki

PHP wykorzystywane jest do odbierania i przetwarzania danych pochodzących z przeglądarki. Najczęściej polega to na tym, że użytkownik wprowadza informacje do formularza HTML które są wysyłane do serwera. Formularz definiowany jest za pomocą znacznika <form>, w którym jedynym obligatoryjnym atrybutem, zawierającym adres skryptu PHP, jest action. Często spotykanym opcjonalnym  atrybutem jest atrybut method, wskazującym metodę (GET lub POST) użytą do przesłania danych do serwera. Jeżeli ten atrybut nie zostanie użyty w formularzu to, przyjmuje się, że zostanie wykorzystana metoda GET. Przykład formularza:

Metoda GET

Przy wykorzystaniu metody GET dane są przesyłane w pasku adresu przeglądarki i z tego tytułu metoda ta jest przede wszystkich wykorzystywana do pobierania danych. Aby odczytać dane przekazane do skryptu, należy skorzystać z superglobalnej tablicy $_GET, np. $zmienna = $_GET[‘nazwa_pola’]. Dodatkowo przy przetwarzaniu formularzy przydatna jest funkcja isset, która sprawdza, czy dane pole formularza zostało ustawione (warto też sprawdzić długość wprowadzanego tekstu). Na przykład:

Metoda POST

Metoda ta daje możliwość przesłania dużo większej ilości dowolnych danych (domyślnie jest to 8 MB), których nie można zobaczyć w pasku adresu. Aby w skrypcie PHP wartości przesłane z formularza można było odczytać, należy się odwołać do superglobalnej tablicy $_POST, np. $zmienna = $_POST[‘nazwa_pola’]. Przykład:

Powrót do góry

Obsługa cookies

Cookies to niewielkie tekstowe dane wymieniane między serwerem a przeglądarką, które są przechowywane na komputerze użytkownika. Dane te do przeglądarki zostają przesłane w nagłówku HTTP, co wiąże się z użyciem funkcji w postaci: setcookie(nazwa, wartość, czas_życia, ścieżka_dostępu, domena, bezpieczne, tylko_http). Poszczególne argumenty mają następujące znaczenie:

nazwa   Nazwa identyfikująca cookie
wartość   Wartość cookie
czas_życia   Znacznik czasu Uniksa określający, kiedy wygasa ważność cookie (po tym czasie zostanie ono usunięte przez przeglądarkę)
ścieżka_dostępu   Ścieżka dostępu na serwerze, do której zostanie ograniczona dostępność cookie (ustawienie / powoduje, że dostęp cookie w całej domenie)
domena   Określa domenę, w której cookie będzie dostępne
bezpieczne   true – przesyłane przez HTTPS; false – przesyłanie przez HTTP oraz HTTPS
tylko_http   przesyłanie tylko przez HTTP

Parametrem obligatoryjnym jest nazwa, natomiast pozostałe parametry są opcjonalne. Jednak najczęściej wykorzystuje się: nazwę, wartość i czas_życia. Należy pamiętać, że funkcję setcookie wywołuje się przed wysłaniem jakichkolwiek innych danych. Na przykład:

Usuwanie cookie

Jeśli został określony czas ważności, to po jego upływie przeglądarka usunie cookie. W przypadku gdy czas ważności nie był określony przy wywołaniu funkcji setcookie, to jest ono ważne tylko do zamknięcia przeglądarki, a następnie zostaje skasowane. W przypadku samodzielnego usunięcia cookie, możemy to zrobić poprzez:

  • poprzez ustawienie czasu ważności,  który upłynął, np. setcookie(”Dane”, ”Treść ciasteczka”, time() – 100);
  • poprzez ustawienie wartość cookie jako pusty ciąg znaków, np. setcookie(”Dane”, ””);
  • poprzez ustawienie wartość cookie jako false, np. setcookie(”Dane”, false);

Dostęp do cookies

Przeglądarka podczas połączenia z serwerem sprawdza, czy ma na dysku zapisane cookies z tego serwera i jeśli tak, wysyła je w postaci nagłówka HTTP. W PHP do cookies mamy dostęp poprzez superglobalną tablicę $_COOKIES. Na przykład:

Powrót do góry

Sesje

W PHP wprowadzono mechanizm sesji. który pozwala na śledzenie postępowania danego użytkownika od połączenia z witryną aż do jej opuszczenia. Każda taka sesja ma przypisany unikatowy identyfikator (liczba losowa generowana przez PHP).

Rozpoczynanie  i kończenie sesji

Sesja może być rozpoczęta m.in. przez wywołanie funkcji session_start(), a zakończona funkcją session_destroy(). Start sesji dobrze jest umieścić na początku każdego skryptu korzystającego z sesji.

Tworzenie i usuwanie zmiennych sesyjnych

Zmienne sesyjne są zapisywane w globalnej tablicy o nazwie $_SESSION. Aby utworzyć zmienną sesyjną należy ją zarejestrować, na przykład: $_SESSION[‘nazwa_zmiennej’] = wartość. Natomiast do odczytania takiej zmiennej wykorzystuje się wzorzec: $zmienna = $_SESSION[‘nazwa_zmiennej’]. Do sprawdzenia jej istnienia służy funkcja isset w postaci: isset($_SESSION[‘nazwa_zmiennej’]). Natomiast aby ją usunąć korzysta się z funkcji unset wg wzorca: unset($_SESSION[‘nazwa_zmiennej’]).

Powrót do góry

Współpraca z bazą danych MySQL

PHP bardzo dobrze współpracuje z MySQL. Obsługa tej bazy może być realizowana m.in. za pomocą metody proceduralnej, która bardzo często występuje wraz z obsługą formularza na stronie www. W zadaniu tym można wyróżnić kilka etapów:

  • nawiązanie połączenia z bazą
  • wysłanie zapytania do bazy
  • obsługa odpowiedzi z bazy
  • zakończenie połączenia

Nawiązanie połączenia z bazą

Do nawiązania połączenia służy funkcja mysqli_connect, która przyjmuje przyjmuje zbiór argumentów w określonym porządku, tj. mysqli_connect(host, użytkownik, hasło, nazwa_bazy). Funkcja zwraca identyfikator połączenia lub wartość null.

Zapytanie do bazy

Zapytania są wysyłane do bazy za pomocą funkcji mysqli_query, który jako argument przyjmuje:

  • identyfikator połączenia
  • treść zapytania SQL

Wartość zwracana jest zależna od typu zapytania:

  • SELECT – zwraca identyfikator zasobów lub false, jeżeli wykonanie zapytania się nie powiodło
  • INSERT, UPDATE, DELETE – zwraca true, jeśli serwer przyjął zapytanie lub false, gdy zapytanie zostało odrzucone

Obsługa odpowiedzi z bazy

W przypadku uzyskania w odpowiedzi z bazy identyfikatora zasobu (co stanie się w przypadku zapytania SELECT) wykorzystuje się funkcje, które potrafią odczytać zawartość, tj.

  • mysqli_fetch_row() – zwraca pojedynczy rekord w postaci tablicy indeksowanej
  • mysqli_fetch_assoc() – zwraca pojedynczy rekord w postaci tablicy asocjacyjnej

Obie funkcje jako atrybut przyjmują identyfikator zasobów. Każde ich wywołanie zwraca kolejny rekord w postaci tablicy lub false, jeśli zostaną odczytane wszystkie rekordy – najczęściej do ich obsługi wykorzystuję się pętlę WHILE.

Zakończenie połączenia

Połączenie otwarte za pomocą funkcji mysqli_connect() zostanie zamknięte automatycznie, gdy skrypt zakończy działanie lub też gdy zostanie wywołana funkcja mysqli_close().

Przykład obsługi bazy danych za pomocą PHP

Powrót do góry