W poprzednim artykule pisałem o tworzeniu stron internetowych od strony frontendu, czyli tego co widzi użytkownik. W tym skupię się na stronie backendowej, czyli na tym co dzieje się po stronie serwera www.
Komunikacja przeglądarka-serwer
Na początku musisz uświadomić sobie jak to się dzieje, że użytkownik po wpisaniu adresu otrzymuję stronę. Wszystko odbywa się za pomocą mechanizmu KLIENT-SERWER. Klient jest to aplikacja, która wysyła i odbiera informacje z serwera, czyli na przykład klient mówi „poproszę stronę www o adresie kontakt.html”, a serwer wysyła mu taką stronę, następnie klient ją wyświetla. Wszystko odbywa się najczęściej przez port 80(HTTP) lub 443(HTTPS).
Dokładniej wygląda to tak. Założmy, że wpisujesz w przeglądarce adres http://rpodwika.pl/kontakt.html czyli tak zwany URL(Uniform Resource Locator). Przeglądarka przetłumaczy to żądanie zgodnie ze specyfikacją HTTP 1.1
GET /kontakt.html HTTP/1.1 Host: www.rpodwika.pl
Następnie domena zostanie przetłumaczona na adres serwera IP za pomocą DNS(Domain Name Server). Mając IP zostanie otwarte połączenie na porcie 80 i wysłane zostaną powyższe polecenia. Serwer www na podstawie konfiguracji przypiszę lokalizacje dokumentu i go prześle do klienta(przeglądarki) kod html. Następnie przeglądarka za pomocą kodu HTML odtworzy stronę, którą widzi użytkownik.
Do najpopularniejszych serwerów stron www należą:
- Apache 53% udziału w rynku,
- IIS 16,69% udziału w rynku,
- Ngix 15,52% udziału w rynku,
- GWS 3,42 % udziału w rynku.
Przekazywanie parametrów do serwera www
By użytkownik mógł wykonać jakieś akcje na stronie, np kupić produkt, zalogować się, dodać artykuł, dodać zdjęcie; potrzebny jest mechanizm. Do tego właśnie służą języki takie jak PHP oraz technologie .NET ASP. Założmy, że gdy chcemy pobrać stronę wpisujemy http://rpodwika.pl/pobierz.php?id=4 wtedy przekazujemy do strony php parametr id o wartości 4 w pliku php możemy odpowiednio zareagować na taki parametr pseudocod:
<?php $id = intval($_GET['id'], 0); //zwróć uwagę na funkcję intval każda dana wejściowa powinna być walidowana i odpowiednio parsowana by uchronić się przed atakami typu XSS if($id == 4) { // pobieramy stronę nr 4 } ?>
Protokół http obsługuje kilka rodzajów danych wejściowych najpopularniejsze to GET oraz POST. GET służy do przesłania małych ilości danych, które zwykle służą do pobrania zawartości strony na podstawie tych danych. Natomiast POST służy do wysyłania dużych ilości danych np. wpis na blogu, artykuł.
Zapisywanie danych przekazanych przez użytkownika
Aby zapisać dane potrzebujemy albo obsługi plików np xml, json, csv, albo co jest w 99% lepszym rozwiązaniem – bazy danych. Połączenie z bazą danych realizowane jest za pomocą języka programowania np. PHP. Aby zapisać coś do bazy danych musimy:
- Stworzyć bazę danych,
- Stworzyć odpowiednią strukturę bazy: tabele, widoki itp.
- Połączyć się z bazą danych
- Przesłać do niej dane
Tworzenie baz danych to materiał na kolejny artykuł i na pewno wkrótce pojawi się on na tej stronie. Samo połączenie w php z bazą danych możemy osiągnać za pomocą PDO lub MYSQLi.
Nie polecam używania funkcji z przedrostkiem mysql_* gdyż wkrótce przestaną być wspierane przez PHP.
Przykład połączenia z bazą danych
<?php /* Połączenie z bazą mysql */ $dsn = 'mysql:dbname=testdb;host=127.0.0.1'; $user = 'dbuser'; //użytkownik bazy $password = 'dbpass'; //hasło do bazy try { $db = new PDO($dsn, $user, $password); } catch (PDOException $e) { echo 'Połączenie nieudane: ' . $e->getMessage(); } ?>
Gdy mamy takie połączenie możemy używać funkcji bazy danych np pobieranie rekordów (SELECT), wstawianie(INSERT), usuwanie(DELETE) itd.
Przykład pobrania rekordów z bazy z tabeli owoce
$sql = 'SELECT nazwa, kolor, kalorie FROM `owoce` ORDER BY nazwa'; foreach ($db->query($sql) as $row) { echo $row['nazwa'] . "\t"; echo $row['kolor'] . "\t"; echo $row['kalorie'] . "\n"; }
Więcej o PDO znajdziesz tutaj
I to tyle jeśli chodzi o stronę backendową. Jeżeli chcesz poczytać więcej powinieneś poszukać informacji na temat modułów serwera, którego używasz najpopularniejsze to rewrite, gzip. Mam nadzieję, że pomogłem naświetlić Ci temat backendowej strony programowania aplikacji internetowych.
Zostaw komentarz