Formularz i metoda GET - PHP

in polish •  6 years ago 

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).

obraz.png

obraz.png

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ń! :)

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

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);

Zgadza się, nawet nie trzeba tak radykalnie ;) Bo można użyć "file" do tego

  ·  6 years ago (edited)

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.