Informatyka dla klas III

Komunikacja z użytkownikiem w PHP

Tablice w PHP

Z nauki o języku C++ w klasie II pamiętasz zapewne, że zmienna jest obiektem przechowującym informację określonego typu. Dlatego każdą zmienną należało zdefiniować przed pierwszym użyciem. W języku PHP definicja jest nieco prostsza. Zmienna jest obiektem przechowującym dane. Typ danych jest tutaj dynamiczny i zostaje określony w czasie wpisywania tych danych do zmiennej. Uruchom poniższy skrypt (wpisz go do sekcji body w kodzie strony, którą zapiszesz w katalogu c:\wamp\www pod nazwą index.php):

 

Skrypt PHP uruchamiasz przez wpisanie localhost w pasek adresowy przeglądarki.

W programie zmienna $x rozpoczyna życie jako zmienna liczbowa. Następnie zostaje przemianowana na zmienną tekstową. W tym trybie nie reaguje na operacje arytmetyczne. Natomiast można do niej stosować operacje łańcuchowe, np. operator kropka służy w PHP do łączenia ze sobą dwóch łańcuchów tekstowych.

Tablica jest zmienną złożoną, która może przechowywać dane w swoich komórkach. Rodzaj przechowywanych danych jest dynamiczny i zostaje określony w czasie przypisania. Do tworzenia tablic wykorzystujemy wbudowana funkcję array(), jeśli chcemy zdefiniować zawartość komórek. Uruchom poniższy skrypt:

W tablicy przechowujemy jednocześnie teksty i liczby. Skrypt objęliśmy znacznikiem <FONT>, aby na stronie WWW pojawiła się czcionka o stałej szerokości znaków.

Tablicę możemy również utworzyć za pomocą ciągu instrukcji przypisania:

Jeśli dane chcemy dopisać na końcu tablicy, to nie podajemy indeksu:

Co ciekawe, indeksy tablicy nie muszą tworzyć spójnego ciągu liczb i nie muszą być dodatnie. Jeśli w numeracji indeksów są przerwy, to w tablicy brak komórek o niezdefiniowanych indeksach. Obrazowo można powiedzieć, że tablica jest dziurawa. Dostęp do elementów takiej tablicy wymaga sprawdzenia, czy dany element w niej występuje. Używamy do tego celu funkcji isset(zmienna), która zwraca true, jeśli zmienna została ustawiona w programie (przypisano jej jakąś wartość). Inaczej zwraca false:

Indeksy elementów tablicy mogą również być tekstami. W takim przypadku dostęp do poszczególnych komórek uzyskamy za pomocą nowej pętli foreach, która ma dwie postacie:

 

foreach($tablica as $w) ...      // Przy każdym obiegu w zmiennej $w otrzymujemy zawartość komórki tablicy
foreach($tablica as $i => $w)... // Przy każdym obiegu w $i otrzymujemy indeks, a w $w zawartość komórki

 

Prześledźmy to na prostym przykładzie:

 

Przesyłanie danych metodą GET

W języku JavaScript mogliśmy współpracować z użytkownikiem za pomocą obsługi zdarzeń. Było to możliwe, ponieważ kod JavaScript był wykonywany przez przeglądarkę na komputerze użytkownika. W przypadku PHP nie jest to bezpośrednio możliwe, ponieważ kod wykonuje się na innym komputerze (na serwerze) niż pracuje użytkownik (można stosować techniki mieszane, tzn. skrypt PHP tworzy dynamicznie odpowiedni skrypt JavaScript, który jest następnie przesyłany na komputer użytkownika. Nie jest to jednak takie proste i nie będziemy się tym zajmować na lekcjach. Chętnych zapraszam na koło informatyczne w środy od 14:25 w sali K). Jak zatem wygląda komunikacja pomiędzy użytkownikiem a skryptem PHP? Stosuje się tutaj dwie techniki: GET i POST. Technika GET polega na tym, iż dane dla skryptu PHP przesyłamy w adresie strony z tym skryptem.

Utwórzmy stronę index.php, na której będą znajdowały się trzy linki do pliku user.php (plik ten utworzymy za chwilę). W każdym linku prześlemy inną nazwę użytkownika:

W Expression Web 4 utwórz nowy plik i zapisz go w katalogu C:\wamp\www pod nazwą user.php. Kod pliku jest następujący:

Jest to przykład współdziałania ze skryptem PHP. W adresie url pliku PHP w linkach umieszczamy za nazwą pliku dodatkową informację o postaci:

 

plik.php?zmienna=wartość

 

Skrypt umieszcza zmienne przesłane w adresie url w tablicy systemowej $_GET. Dostęp do poszczególnych zmiennych odbywa się poprzez indeksy będące nazwą zmiennej. W naszym przypadku przesłaliśmy zmienną user.

Zmiennych można przesłać więcej, rozdzielając je znakiem &amp; (jest to znak &, lecz w kodzie musimy go wpisywać jako &amp;). Zmodyfikuj plik index.php:

W pliku user.php wprowadź poniższe zmiany:

Teraz przesyłamy do skryptu PHP dwie zmienne w adresie url: user i konto. PHP umieszcza je w tablicy $_GET pod indeksami odpowiednio user i konto, skąd mogą być łatwo odczytane i przetworzone przez skrypt.

Dane do skryptu PHP możemy wysłać ze strony WWW za pomocą formularza. Zmodyfikuj plik index.php:

 

Przesyłanie danych metodą POST

Metoda GET posiada kilka istotnych wad:
  • Przesłane dane są widoczne w pasku adresowym przeglądarki i mogą być zmienione przez osobę do tego niepowołaną.
  • Adres url posiada ograniczenia co do długości, zatem nie można przesyłać dowolnej liczby danych.

Zaletą jest to, że można tę metodę stosować w zwykłych łączach.

Istnieje druga metoda przesyłania danych do serwera, która nosi nazwę POST. W metodzie tej dane są przesyłane w sposób niewidoczny dla użytkownika. Metoda ta wymaga również zmiany w skrypcie PHP: dane odczytujemy z tablicy $_POST. W pliku index.php zmień w znaczniku form metodę get na post:

W pliku user.php zmień tablicę $_GET na $_POST:

Zwróć uwagę, że teraz dane nie pojawią się w adresie url po kliknięciu przycisku Wyślij na formularzu.

Jeśli dane są lub mogą być przesyłane do skryptu w sposób mieszany (raz za pomocą GET, a innym razem za pomocą POST), to możemy wykorzystać tablicę $_REQUEST, w której znajdą się wszystkie zmienne z tablic $_GET i $_POST. Zmień skrypt PHP w pliku user.php:

Po tej modyfikacji skrypt PHP zadziała poprawnie zarówno dla formularza z metodą GET jak i POST.

 



List do administratora Serwisu Edukacyjnego Nauczycieli I LO

Twój email: (jeśli chcesz otrzymać odpowiedź)
Temat:
Uwaga: ← tutaj wpisz wyraz  ilo , inaczej list zostanie zignorowany

Poniżej wpisz swoje uwagi lub pytania dotyczące tego rozdziału (max. 2048 znaków).

Liczba znaków do wykorzystania: 2048

 

W związku z dużą liczbą listów do naszego serwisu edukacyjnego nie będziemy udzielać odpowiedzi na prośby rozwiązywania zadań, pisania programów zaliczeniowych, przesyłania materiałów czy też tłumaczenia zagadnień szeroko opisywanych w podręcznikach.



   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2017 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.