Metoda GET

Zauważyłem brak artykułu poświęconemu metodzie GET w PHP więc postanowiłem go napisać. Wszelkie ewentualne błędy proszę pisać w komentarzach, poprawię.

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:

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

<a href="index.php?imie=Janek">Klik</a>


W efekcie uzyskamy to samo co w przypadku formularzy.

Te dane można pobrać poprzez język PHP, o czym w dalszej części.


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

$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'] ?>






To mój pierwszy artykuł, proszę o wyrozumiałość. Mam nadzieję, że nie naruszyłem regulaminu iże komuś pomoże pomoże to, co tu napisałem. Proszę o komentarze.
Informacje
Ostatnia modyfikacja 06-10-2008 14:49 Ostatni autor ŁF
Ilość wyświetleń 3305 Wersja 3
Komentarz
bordeux dnia 29-12-2008 13:06
Od php 5.2.8 się pluje, że trzeba wcześniej sprawdzać czy jest ta zmienna.
czyli
if(isset($_GET['imie'])){
$nazwa=$_GET['imie'];
}

I tak jest teraz z reszta tablic. Nie wiem po co to zmienili :<
ŁF dnia 01-10-2008 10:43
Qyon: to akurat poprawka językowa - nie "metoda" tylko "metoda przesyłania danych"
Qyon dnia 01-10-2008 00:14
ŁF: oczywiście, że GET JEST metodą: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
Coldpeer dnia 30-09-2008 23:48
ŁF napisał:
kolejna poprawka - o jeden średnik za daleko

Toż ze średnikiem również jest poprawnie ;)
ŁF dnia 30-09-2008 22:33
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"/><br/>
Podaj wiek: <input type="text" name="wiek"/><br/>
<input type="submit" value="Wyślij"/>
</form>

kolejna poprawka - o jeden średnik za daleko
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...

Katalog
Copyright © 2000-2006 by Coyote Group 0.9.3-pre3
Czas generowania strony: 0.0775 sek. (zapytań SQL: 11)