1. Strona główna
  2. Strony www
  3. Krótki kurs języka PHP

Krótki kurs języka PHP

Wstęp

PHP to skryptowy język programowania służący do generowania stron internetowych po stronie serwera.

Różni on się od rozwiązań działających po stronie odwiedzającego (np. JavaScriptu) tym, iż osoba ta widzi jedynie rezultat działania skryptu. Kod źródłowy pozostaje tylko i wyłącznie na serwerze.

PHP jest przy tym bardzo łatwy do opanowania przez początkujących, ale posiada wiele cech przydatnych także zaawansowanym programistom.

Podstawy

Szkielet pliku

Plik ze skryptem PHP powinien składać się z trzech części:

  • Znacznik otwierający:
    <?php

    Nakazuje on włączenie interpretowania kodu PHP.

  • Kod wykonywany przez interpreter.
  • Znacznik zamykający:
    ?>

    Mówi on serwerowi, aby dalszą część kodu traktował ponownie jako zwykły HTML.

Komentarze

W każdym języku programowania bardzo ważne jest komentowanie pisanego kodu. Dzięki temu inne osoby, jak i też my sami po dłuższym czasie będziemy mogli orientować się w źródle skryptu. W PHP możliwe jest stosowanie trzech typów komentarzy:

  • Komentarz jednowierszowy oznaczony znacznikami //
    Po umieszczeniu go dalszy ciąg linijki jest pomijany przez parser.
  • Komentarz jednowierszowy oznaczony znacznikiem #
    W tym przypadku także parser pomija wszystko po tym znaku.
  • Komentarz wielowierszowy oznaczony znacznikami /* i */
    Serwer nie analizuje kodu umieszczonego pomiędzy znakami początku (/*) i końca (*/) komentarza.

Zmienne

W skryptach PHP wykorzystanie zmiennych jest dużo prostsze niż w wielu innych językach. Nazwy zmiennych zawsze zaczynają się od znaku $. Dodatkowo nie jest konieczne wcześniejsze deklarowanie typów stosowanych zmiennych.

$zmienna = 'ciąg tekstowy';
$zmienna = 123456;
$zmienna = true;

Tablice

Tablica to wiele zmiennych ułożonych kolejno, do których można dostać się za pomocą indeksu. Tak samo jak w przypadku zwykłych zmiennych, aby stworzyć tablicę wystarczy przypisać wartość któremuś z jej pól.

$tablica[1] = 'wartość';
$tablica[2] = 'inna wartość';

// Automatyczne wypełnianie indeksu 
$tablica[] = 'wartość';
$tablica[] = 'drugawartosc';

Indeksem tablicy nie musi być liczba. Może to być także ciąg tekstowy. Mówimy wtedy o tablicy asocjacyjnej.

$tablica['imie'] = 'Jan';
$tablica['nazwisko'] = 'Kowalski';

Operatory

Logiczne

Operator
Nazwa Składnia Opis
==
Równość wyrażenie == wyrażenie Zwraca prawdę, jeżeli oba wyrażenia mają identyczną wartość.
===
Równość wyrażenie === wyrażenie Zwraca prawdę, jeżeli oba wyrażenia mają identyczną wartość oraz typ.
!=
Nierówność wyrażenie != wyrażenie Zwraca prawdę, jeżeli oba wyrażenia mają różne wartości.
!==
Nierówność wyrażenie !== wyrażenie Zwraca prawdę, jeżeli oba wyrażenia mają różne wartości i/lub typ.
<
Mniejsze niż wyrażenie < wyrażenie Zwraca prawdę, jeżeli lewe wyrażenie ma mniejszą wartość od prawego.
>
Większe niż wyrażenie > wyrażenie Zwraca prawdę, jeżeli lewe wyrażenie ma większą wartość od prawego.
<=
Mniejsze lub równe wyrażenie <= wyrażenie Zwraca prawdę, jeżeli lewe wyrażenie ma mniejszą lub równą wartość prawemu.
>= Większe lub równe wyrażenie >= wyrażenie Zwraca prawdę, jeżeli lewe wyrażenie ma większą lub równą wartość prawemu.
!
Negacja (nie) !wyrażenie Zwraca prawdę, jeżeli wyrażenie jest fałszywe i fałsz, jeśli prawdziwe.
&&
Koniunkcja logiczna (i) wyrażenie && wyrażenie Zwraca prawdę, jeżeli oba wyrażenia są prawdziwe.
| | Alternatywa logiczna (lub) wyrażenie | | wyrażenie Zwraca prawdę, jeżeli przynajmniej jedno z wyrażeń jest prawdziwe.

Matematyczne

Operator
Nazwa Składnia Opis
/
Dzielenie wyrażenie / wyrażenie Reprezentuje wynik dzielenia. Drugie wyrażenie nie może być zerem.
%
Dzielenie modulo wyrażenie % wyrażenie Reprezentuje resztę z dzielenia. Drugie wyrażenie nie może być zerem.
*
Mnożenie wyrażenie * wyrażenie Reprezentuje iloczyn dwóch wyrażeń.
+
Dodawanie wyrażenie + wyrażenie Reprezentuje sumę dwóch wyrażeń.
Odejmowanie wyrażenie – wyrażenie Reprezentuje różnicę dwóch wyrażeń.
.
Łączenie (Konkatenacja) wyrażenie . wyrażenie Reprezentuje połączenie dwóch wyrażeń w ciąg tekstowy.
++ Inkrementacja (zwiększenie) $zmienna++ Reprezentuje wartość zmiennej, a następnie zwiększa ją o 1.
++
Inkrementacja (zwiększenie) ++$zmienna Reprezentuje wartość zmiennej powiększoną o 1.
Dekrementacja (zmniejszenie) $zmienna– Reprezentuje wartość zmiennej, a następnie zmniejsza ją o 1.
Dekrementacja (zmniejszenie) –$zmienna Reprezentuje wartość zmiennej pomniejszoną o 1.

Instrukcje warunkowe

IF

Instrukcja IF pozwala na wykonanie części kodu tylko wtedy, gdy spełniony jest odpowiedni warunek.

Jej składnia jest następująca:

if (wyrażenie) {
    // kod wykonywany, gdy wyrażenie będzie prawdziwe
} 
else {
    // kod wykonywany gdy wyrażenie będzie fałszywe
}

Przy konstrukcji wyrażeń korzystamy z Operatorów logicznych

Szczególnie często popełnianym przez programistów błędem jest stosowanie operatora przypisania “=” (pojedynczy znak równości) zamiast operatora porównania “==” (podwójny znak równości).

Wówczas aplikacja zachowuje się tak, jakby warunek był zawsze prawdziwy.

Przykładowy kod wykorzystujący instrukcję IF – dzielenie dwóch liczb uwzględniając dzielnik różny od zera.

<?php
$a = 10;
$b = 0;


if ($b == 0) {
        echo 'Nie można dzielić przez zero!';
}
else {
        echo 'Wynik to: '.$a/$b;
}
?>

SWITCH

Instrukcja switch nazywana jest często instrukcją wyboru. Spośród dostępnego zbioru wyszukuje określoną wartość na podstawie pewnego wyrażenia i wykonuje zdefiniowany dla niej kod.

W nawiasie polecenia switch definiujemy, jakiemu wyrażenia wartość pragniemy sprawdzić. Wewnątrz nawiasów klamrowych używamy struktury case wartość:, aby zdefiniować dopuszczalne wartości, czyli stany wyrażenia. Po dwukropku piszemy odpowiedni kod. Jeżeli żaden ze stanów nie spełnia naszych oczekiwań, istnieje także klauzula default: pisana na samym końcu opisująca domyślne zachowanie.

Przykładowy kod:

switch {$dzien} {
                case '1': 
                        echo 'Dziś jest poniedziałek';
                        break;
                case '2': 
                        echo 'Dziś jest wtorek';
                        break;
                case '3': 
                        echo 'Dziś jest środa';
                        break;
                case '4': 
                        echo 'Dziś jest czwartek';
                        break;
                case '5': 
                        echo 'Dziś jest piątek';
                        break;
                case '6':
                case '7':
                        echo 'Dziś jest weekend';
                        break;
                default: 
                        echo 'Gdzieś jest najprawdopodobniej błąd ;)';    
                        break;
}

Pętle

Pętlą nazywamy strukturę kontrolną powtarzającą dany kod do czasu spełnienia określonego warunku.

FOR

Pętla FOR używana jest w przypadku zdefiniowania skończonej ilości powtórzeń. Jej składnia jest następująca:

for (wyrazenie_startu; wyrazenie_zakonczenia; wyrazenie_iteracji) {
    // instrukcje
}

Wyrażenie startu to zazwyczaj inicjalizacja licznika ilości wykonanych powtórzeń, zakończenia – warunek zakończenia wykonywania pętli, a iteracji to zazwyczaj zwiększanie bądź zmniejszanie licznika.

// Przykład wypisujący wszystkie liczby od 100 do 1
for ($i=0; $i>=100; $i++) {
    echo $i;
}

Możliwe jest także odwrotne formułowanie warunków.

// Przykład wypisujący wszystkie liczby od 100 do 1
for ($i=100; $i>=1; $i--) {
    echo $i;
}

WHILE

Pętla WHILE jest prostszym odpowiednikiem FOR. Podawany jest w niej tylko warunek zakończenia, a serwer wykonuje blok kodu, dopóki będzie on spełniony.

$a = 100;
$b = 50;
while($a > $b) {
    echo $a;
    $a = $a - 10;
}

DO – WHILE

Podana struktura jest to lekko zmodyfikowane WHILE. W tym przypadku warunek sprawdzany jest pod koniec wykonania pętli. Składnia jest dosyć nietypowa:

do {
    // instrukcje pętli
}
while (warunek);


$a = 1;
$b = 10;
do{
    echo $b;
    $b = $b - $a;
}
while ($b == 0);

FOREACH

Ta instrukcja służy wyłącznie do przeglądania zawartości typów złożonych: tablic oraz obiektów.

Kod wewnątrz niej jest powtarzany dla każdego z elementów tablicy, a on sam jest na ten czas przenoszony do tworzonej przez pętlę zmiennej.

Składnia:

foreach ($zasob as $wartosc) {
// operacje (elementy tablicy pod $wartosc)
}



$tablica = array('poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota', 'niedziela');
foreach ($tablica as $dzien) {
    echo($dzien);
}

Sesje

Opis

Protokół HTTP jest protokołem bezstanowym. Oznacza to, że serwer WWW rozpatruje każde żądanie niezależnie od innych, nie szukając żadnych powiązań w stylu wysyłania ich przez tego samego internautę. Utrudnia to teoretycznie tworzenie wszelkich systemów autoryzacji, które wymagają śledzenia poczynań użytkownika na naszej stronie i przenoszenia jego danych autoryzacyjnych między kolejnymi żądaniami, czyli krótko mówiąc – wymagają obecności systemu sesji. Używając PHP lub innego dynamicznego języka server-side można je jednak zasymulować. “Nasz” język jest o tyle prosty, iż posiada już zaimplementowane stosowne funkcje. My tylko musimy zacząć ich używać.

Działanie sesji w PHP jest bardzo proste. W momencie pierwszego trafienia na stronę interpreter tworzy specjalny, losowy oraz unikalny identyfikator przesyłany między żądaniami za pomocą ciastek lub parametru PHPSESSID doklejanego automatycznie do adresów URL. Na jego podstawie odczytywany jest później odpowiedni plik z danymi sesji zapisany gdzieś na serwerze. Pod koniec przetwarzania żądania wszystkie wprowadzone przez skrypt zmiany są z powrotem zapisywane do wspomnianego pliku tak, aby były widoczne przy wejściu na kolejną podstronę.

Praktyczne wykorzystanie

Aby zainicjować mechanizm sesji, należy wywołać funkcję session_start();

Należy pamiętać, iż przed zainicjowaniem sesji nie wolno wysłać żadnych innych danych do przeglądarki!

Uzyskujemy wtedy superglobalną tablicę $_SESSION, która przechowuje dane dot. bieżącej sesji.

// Plik: logowanie.php
<?php
Session_start();
if($_POST['login'] == 'jan' AND $_POST['haslo'] == 'kowalski') 
{
        $_SESSION['zalogowany'] = 1;
        header('Location: tajne.php');
}
else
{
        ?>
                <!-- Formularz logowania - zwykły HTML --> 
        <?php
}
?>
// Plik: tajne.php
<?php
session_start();
if($_SESSION['zalogowany'] != 1)
{
        header('Location: logowanie.php');
}
else
{
        // kod przeznaczony dla zalogowanego użytkownika
}

Obsługa plików

INCLUDE i REQUIRE

Funkcje te służą do dołączenia kodu umieszczonego w innym pliku PHP.

Różnicą między nimi jest jedynie sposób zgłaszania błędów w przypadku braku dostępu do żądanego zasobu.

Require zgłasza błąd krytyczny, przerywając przy tym wykonywanie istniejącego skryptu, a include jedynie ostrzeżenie, kontynuując przy tym działanie skryptu.

Składnia:

include('nazwa_pliku');
require('nazwa_pliku');

Odczyt z plików

Czasami istnieje konieczność odczytu zawartości plików tekstowych. Odczyt gotowych, przetworzonych danych z plików jest znacznie szybszy niż odczyt z bazy danych i często wykorzystywany przez różne aplikacje jako pamięć podręczna (cache).

Aby pobrać zawartość pliku do zmiennej stosujemy funkcję file_get_contents(), której jako argument podajemy nazwę pliku, który chcemy otworzyć.

$jakas_zmienna = file_get_contents('plik.txt');

Zapis do plików

W nowych wersjach PHP także zapis do plików został maksymalnie uproszczony. Służy to tego funkcja file_put_contents(). Jej składnia jest następująca:

file_put_contents('nazwa_pliku', dane);

$zmienna = 'Litwo, Ojczyzno moja';
file_put_contents('pan_tadeusz.txt', $zmienna);
Aktualizacja - 30 października 2018

Czy ten artykuł był pomocny?

Podobne artykuły