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

9 komentarzy

@Ł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.

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

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

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

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

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

ŁF napisał(a)

kolejna poprawka - o jeden średnik za daleko

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