W miarę poznaliśmy podstawy języka PHP, ale trzeba liznąć też HTMLa do niektórych opcji, jak np. formularze. Dzisiaj opowiemy o wysyłaniu danych używając GET i POST. Zachęcam do czytania ;)
Formularz to tzw. element Web 2.0 - pewna forma komunikacji między człowiekiem, a stroną internetową. W dawnych czasach nie było żadnej formy między tymi elementami - dopiero z czasem powstały różnego rodzaju formy "komunikacji".
GET vs POST
Mamy dwa sposoby wysłania danych do strony internetowej - używając metody GET lub POST. GET jest metodą najbardziej widoczną - wszystko co wpiszemy (lub nie - niekoniecznie musimy coś wpisywać) jest zawarte w adresie strony.
Dla przykładu w busy:
https://staging.busy.org/editor?draft=81b84e20(...)
Dla strony staging.busy.org/editor jest zawarta w GET zmienna draft z wartością 81b (...)
Powoduje to ciekawą rzecz, użytkownik może wysłać taki link komuś i ta osoba (jeśli link nie wymaga rejestracji itd) zobaczyć tą samą zawartość.
Oczywiście można wiele wartości w ten sposób przechowywać, dla przykładu link z DuckDuckGo.
https://duckduckgo.com/?q=steemit&t=ffsb&ia=web
Kolejne parametry oddziela się znakiem "&". Mamy więc w tym linku trzy parametry:
q równe steemit
t równe ffsb
ia z wartością web.
Jak to wyświetlić?
Ogólnie wkraczamy tutaj w PHP z wykorzystaniem serwera WWW, więc nie można w CLI już się bawić. Ogólnie wszystkie dane są przechowywane teraz w tablicy $_GET, która jest tablicą asocjacyjną, a index to nazwa "zmiennej" (czy raczej coś co tak określałem).
Stwórzmy plik index.php, a w nim dajmy
<?php
print_r($_GET);
Teraz tworząc link odpowiedni z tymi parametrami dostaniemy informacje z wartościami od programu. Dla przykładu:
index.php?q=steemit&t=ffsb&ia=web
Zwrócił:
Array ( [q] => steemit [t] => ffsb [ia] => web )
Ok, ale może to wyglądać brzydko. Chcemy odczytać samo q. Jak to zrobić?
echo $_GET['q'];
Wyświetli informacje zapisane w parametrze "Q" (w tym przypadku "steemit"). Możemy oczywiście ręcznie modyfikować wartość manipulując adresem strony.
Formularz
<?php
print_r($_GET);
?>
<form>
<input type="text" name="imie">
<button type="submit">Podaj imię</button>
</form>
Oto przykładowy prosty program. Na początku działa kod PHP, który wyłącza się z "?>". Na dole już działa HTML. Pierwsza linijka to form, czyli pewne rozpoczęcie formularza. Nie podaliśmy metody jaka będzie używana (o tym w następnym tekście) więc domyślną metodą jest GET.
- Tworzy okienko tekstowe (jednolinijkowe - type text). Name oznacza nazwę jaką przybierze GET. Czyli w naszym starym przypadku to by było "q", czyli pod które miejsce to co wpiszemy zostanie zapisane.
X Button type submit oznacza, że zostaje dodany przycisk, który wysyła dane (po jego naciśnięciu). X to nazwa przycisku (w sensie co na nim jest napisane).POST będzie za tydzień ;)
POST będzie za tydzień, ogólnie zasada jest podobna i warta omówienia ;)
Poprzednie zadanie domowe:
function co_to_jest($dane) {
if(gettype($dane)=="integer") { return "liczba"; }
if(gettype($dane)=="string") { return strlen($dane); }
if(gettype($dane)=="array") { return count($dane); }
}
Zadanie domowe
Zrobić formularz, który po wpisaniu imienia wyświetla "Witaj, X". Jeśli nie zostały wprowadzone dane to wyświetla "Witaj nieznajomy, podaj swoje imię!".
To co? Do zobaczenia za tydzień! :)
Można zasymulować wysyłanie formularza z poziomu CLI , wystarczy użyć cURL 😉
Przykład z wiki dla(POST):
$hand = curl_init();
curl_setopt($hand, CURLOPT_URL, 'http://pl.wikipedia.org/w/index.php');
curl_setopt($hand, CURLOPT_POST, 1);
curl_setopt($hand, CURLOPT_POSTFIELDS, 'title=CURL&action=edit');
curl_exec($hand);
curl_close($hand);
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Zgadza się, nawet nie trzeba tak radykalnie ;) Bo można użyć "file" do tego
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Zdaje się, że tu chodziło o to, że żeby użyć GET, PHP musi (albo nie musi, nie wnikam) być uruchomione jako interpreter dla serwera www, a nie jako skrypt z linii komend. Wikipedia działa na jakimś serwerze, więc dalej jest to obsługa przez serwer, a nie przez CLI. Poza tym CURL to w zasadzie przeglądarka, tylko z mniej graficznym interfejsem :) Równie dobrze można by było użyć jakiegoś wgeta, netcata, a być może nawet jakiejś dziwnej tekstowej przeglądarki w jakimś dziwnym trybie.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit