PHP

Metoda GET

cisu

Co to jest metoda GET?
Metoda ta jest stosowana głównie w formularzach, aczkolwiek nie tylko. Polega ona na pobieraniu danych z paska adresu przeglądarki. Jest ona raczej rzadziej stosowana niż metoda POST z racji na bezpieczeństwo, lecz nadal w wielu miejscach można ją spotkać.

Stosowanie w formularzach
Aby formularz przesłany był metodą GET należy to zadeklarować w podany niżej sposób:

<form action="jakisplik.php" method="get">


Kiedy wyśle się taki formularz, w następnym dokumencie po nazwie pliku otrzymamy dane. Przykład:

<code class="html4strict"><form action="jakisplik.php" method="get">
  Podaj imię: <input type="text" name="imie" /><br />
  Podaj wiek: <input type="text" name="wiek" /><br />
  <input type="submit" value="Wyślij" />
</form>

Po wykonaniu tego formularza otrzymamy adres dokumentu z przykładowymi danymi:

http://jakas-domena.pl/jakisplik.php?imie=Janek&wiek=15

Stosowanie w odnośnikach
Aby zastosować metodę GET, można użyć także zwykłych odnośników, co jest już częściej stosowane niż w przypadku formularzy. Przykładowy odnośnik może wyglądać tak:

Klik


W efekcie uzyskamy to samo co w przypadku formularzy.

<b>Wykorzystanie w PHP</b>
Mając do dyspozycji PHP możemy odczytać dane przesłane metodą GET poprzez instrukcję np. przypisania danych do zmiennej:

```php
$nazwa = $_GET['imie'];

Jeśli podana zmienna nie została przesłana, zmienna $nazwa będzie miała wartość równą 0.

Można pobrać te dane również bez podstawiania pod zmienną, przykład:

Witaj <?=$_GET['imie'] ?>
PHP

11 komentarzy

Bez wątpienia jest to świetna metoda, zdobyłem dużo wiedzy po przeczytaniu powodzenia. Ale metoda POST jest również dobra.

ŁF napisał(a)

kolejna poprawka - o jeden średnik za daleko

Toż ze średnikiem również jest poprawnie ;)

Qyon: to akurat poprawka językowa - nie "metoda" tylko "metoda przesyłania danych"

jak się nazywa ta metoda przesyłania danych nie przez get i post tylko tak z ukośnikami?;p wiem ciężko zrozumieć o co mi chodzi, ale chce żeby na końcu strony było .html a nie "id=34" czy coś takiego

a jak np masz "mojastrona.pl/kontakt.php" to zrób nowy folder o nazwie "kontakt", plik "kontakt.php" wrzuć do środka i zmień na "index.php".

Dziękuję, ja już od dawna poszukuje tej metody
192.168.0.1

get to nie metoda. to sposób na przesyłanie danych.
pasek adresu przeglądarki tutaj nie jest źródłem wysyłanych danych, tylko przy okazji pokazuje informację o tym, co zostało wysłane.
bezpieczeństwo get jest takie samo jak post, różnica polega na tym, że get w niektórych przeglądarkach ma ograniczenie długości, oznacza to, że można w ten sposób wysłać tylko małą ilość danych. post nie ma takich ograniczeń.
Twój html jest średniowieczny; wartości atrybutów umieszcza się w cudzysłowach, każdy tag musi być domknięty (xhtml), nazwy atrybutów małymi literami:
<form action="jakisplik.php" method="get">
Podaj imię: <input type="text" name="imie" />

Podaj wiek: <input type="text" name="wiek" />

<input type="submit" value="Wyślij" />

</form>

kolejna poprawka - o jeden średnik za daleko
```php
Witaj <?=$_GET['imie']?>

zmienna $nazwa będzie miała wartość 0 tylko, jeśli potraktujesz ją jako liczbę; jako string zawiera pusty łańcuch.

get w "zwykłych" odnośnikach jest używana zawsze, chyba, że po drodze wplącze się js.

popracuj jeszcze nad tym tekstem, poczytaj RFC...

@ŁF: GET to metoda wysyłania danych i o tym wyraźnie mówi specyfikacja protokołu HTTP https://tools.ietf.org/html/rfc2616#page-36 zob. także https://www.w3.org/2001/tag/doc/whenToUseGet.html Bezpieczeństwo nie jest takie samo jak przy metodzie POST z kilku względów. Odsyłam do specyfikacji protokołu, a nie wyssanych z palca wymysłów.

Dobra metoda. Często go używam.
192.168.l.l