Dzisiaj7 lipca, 2020

PHP i HTML

Ostatnio uczyliśmy się zmiennych. Jednak programując jakąś aplikację chcemy operować na zmiennych, które dostarcza nam użytkownik. Dane przekazujemy przez metody HTTP. Do najczęściej używanych metod zaliczamy metody POST i GET.

Metody HTTP

GET – używamy kiedy chcemy uzyskać dostęp do zasobów i uzyskać dane, ale nie musimy zmieniać ani modyfikować stanu tych danych. Dane pobierane są z URI.

POST – kiedy musimy wysłać dane do serwera np. przez formularz.

Dodatkowo istnieją metody takie jak HEAD, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH. Jako, że w tym kursie nie będziemy z nich korzystać, nie zamierzam ich teraz opisywać, dla zainteresowanych odsyłam do tej strony.

Osadzanie kodu PHP w HTML

Dla przykładu stworzymy teraz prostą stronę, która będzie wyświetlała wartości z danych metod w przeglądarce. Uruchamiamy więc serwer WWW, tworzymy plik i uruchamiamy przeglądarkę z odpowiednim adresem. Zaznaczę, że potrzebna ci będzie podstawowa znajomość HTML, jeśli nigdy wcześniej nic o nim nie słyszałeś to nadrób zaległości i wróć wcześniej do tego wpisu. Nasz testowy plik (oczywiście zapisany z rozszerzeniem .php):

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>PHP i HTML</title>
    <style>
        header {
            text-align: center;
            padding: 2em;
            background: silver;
        }
    </style>
</head>
<body>
<header>
    <h1>
    <?php echo "Witaj świecie!"; ?>
    </h1>
</header>
</body>
</html>

Kod PHP umieszczamy oczywiście między znaczniki <?php oraz ?> lub w przypadku samego kodu PHP używamy tylko <?php. Istnieje jeszcze jeden sposób osadzania kodu PHP w HTML. Jeśli zamierzamy wyświetlić tekst, korzystając z jednej instrukcji, możemy zastosować short_open_tags. Tak prezentuje się skrócony zapis:

<?= "Witaj świecie"; ?>

Oznacza ono to samo co fragment odpowiadający za wyświetlanie tekstu znajdujący się powyżej.

Pobieranie danych od użytkownika

Pobierzmy teraz dane od użytkownika za pomocą metody GET, czyli przez URI. Zmień kod PHP na następujący:

<?= "Witaj, " . ($_GET['imie'] ?? "nieznajomy") . "!"; ?>

Dla początkujących, powyższy kod może wydawać się skomplikowany. Po odświeżeniu przeglądarki powinieneś zobaczyć napis „Witaj, nieznajomy!”. Opiszę ten kod dokładnie. Skorzystaliśmy z krótkich tagów <?= ?> służących do wyświetlania tekstu, który złączyliśmy za pomocą konkatenacji. Po części „Witaj” znajduje się wyrażenie w nawiasie, które mówi: Jeśli istnieje klucz w tablicy $_GET to go zwróć jego wartość, jeżeli nie, to zwróć napis „nieznajomy”. $_GET to zmienna globalna, przypisywana automatycznie (zmienna ta jest tablicą, omówimy ich własności później). Operator ?? to nowość wprowadzona w wersji PHP 7 (Null coalescing operator). Gdybyśmy nie użyli tego operatora, a użytkownik nie wpisałby żadnej wartości, PHP pokazał by błąd.

Operator ?? zwróci nam: element po jego lewej stronie, jeśli istnieje, w przeciwnym razie, element po prawej stronie.

Zmienimy teraz wyświetlany tekst na inny, w tym celu po prostu dopisz do pasku adresu:

Teraz wyświetli nam się napis „Witaj, tekst!”. Nasz kod nie został jednak odpowiednio zabezpieczony. Co jeśli użytkownika wpisze np. kod HTML zamiast zwykłego tekstu? Sprawdźmy to:

Wynik:

Jak widać wartość z metody GET została zainterpretowana jako kod HTML.

Filtracja danych

W tym wpisie, do filtracji danych posłużymy się funkcją htmlspecialchars. która służy do konwertowania specjalnych znaków na encje HTML. Argumenty funkcji umieszczamy w nawiasach. W tym przypadku nasz kod będzie wyglądał tak:

<?= htmlspecialchars("Witaj, " . ($_GET['imie'] ?? "nieznajomy") . "!"); ?>

A wynik, tym razem będzie wyświetlał się poprawnie:

Komentarze

Warto wspomnieć tutaj o tworzeniu komentarzy w PHP. Znacznie poprawiają one czytelność i zrozumienie kodu, gdy zajrzymy do niego po dłuższym czasie. Mamy do dyspozycji 2 rodzaje komentarzy – blokowe oraz liniowe. Blokowy komentarz prezentuje się następująco:

<?php

// echo "Komentarz blokowy";
// lub
# to to samo

Używamy // lub #. Powyższy kod się nie wyświetli, ponieważ jest on zakomentowany, więc nie zostanie zinterpretowany przez interpreter PHP.

A tutaj komentarz liniowy (używamy /* oraz */)

<?php

/* 
echo "Komentarz liniowy";
echo "Komentarz liniowy";
echo "Komentarz liniowy";
*/

Podobnie jak w ostatnim przykładzie – część zakomentowana się nie wyświetli.

Udostępnij artykuł
guest
0 komentarzy
Inline Feedbacks
View all comments