Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] $_GET & $_POST
Forum PHP.pl > Forum > Przedszkole
gladiror
Witam!
Potrzebuje troszke teorie z wiązanych z tytułem tematu, a mianowicie:

1) Którą metodą - $_GET czy $_POST lepiej jest przekazywać zmienne, których użytkownik nie powinien widzieć?

2) Jaka jest różnica między $_GET i $_POST? W jakich przypadkach używać pierwsze a w jakich drugie??

Głównie chodzi mi o te 2 pytania... Z góry THX za odpowiedź!
Athlan
ad 1. Dane z formularzy itp przysyłać należy formą POST
ad 2. zależy co chcesz osiągnąć:

a ) jeżeli wywołujesz jakiś dział, np newsy to użyjesz GETa z pasku adresu...
b ) ...ale jak chcesz np. aby user komentował jakieś newsy, wówczas użyjesz POSTa. Takie są standardy...

poczytaj też o funkcjach htmlspeciachars(), trim(), htmlentiles() - przydadzą się smile.gif

pozdro smile.gif
gladiror
Np.:

2a) przesyłanie danych produktu - cena, ilosc, itp. (przy wrzuceniu np. do koszyka) wtedy użyje post?

Czyli w głównej mierze chodzi o to, ze metoda GET przesylamy dane, które sa mało istotne dla bezpieczenstwa a metoda POST ktore sa istotne?questionmark.gif
Athlan
Cytat
2a) przesyłanie danych produktu - cena, ilosc, itp. (przy wrzuceniu np. do koszyka) wtedy użyje post?


w post przesyłasz tylko ilość i id produktu, cena wybiera się z bazy, bo każdy będzie mógł ją sobie zmienić w źródle strony i wysłać formularz z localhosta tongue.gif

Cytat
Czyli w głównej mierze chodzi o to, ze metoda GET przesylamy dane, które sa mało istotne dla bezpieczenstwa a metoda POST ktore sa istotne?questionmark.gif


nie... chodzi głónie o wygodę... $_GET przesyłasz w linkach a $_POST w formularzach smile.gif

pozdrawiam smile.gif
Ludvik
Nie ma to żadnego związku z bezpieczeństwem... Dane przesyłane GET-em są dodawane do URL żądania, natomiast dane przekazywane POST-em są dostarczane wewnątrz żądania. I jedne i drugie można ukraść.

Pierwszą metodą przekazujesz dane krótkie, ale ważne dla funkcjonalności strony. Potrzebny jest prosty sposób, żeby przesyłać właśnie szczegóły żądania. Z resztą sama nazwa GET mówi, że zmienne te raczej określają żądanie.

POST z kolej nadaje się do przesyłania większych danych, takich jak te pochodzące z formularzy. Przesyłanie jest mało wygodne, nie sprawdza się przy konstruowaniu żądania.
gladiror
No dobra, wszystko jasne tylko nie rozumiem po co wyłączane są teraz global_register... Global register czyli zmienne globalne... Przecież w URL zmienie wartosc nacisne ENTER i zmieni mi... Nie da sie tego jakos zabezpieczyc przed takim czyms??

A jeszcze jedno Ludvik - napisałeś, że "Przesyłanie jest mało wygodne, nie sprawdza się przy konstruowaniu żądania." Tutaj chodzi o to, ze getem moge pobrać wartość z np. <A href="plik.php?cos=www"></a> zmiennej cos, a przy pomocy POST'a nie moge?
siemakuba
Cytat
Tutaj chodzi o to, ze getem moge pobrać wartość z np. <A href="plik.php?cos=www"></a> zmiennej cos, a przy pomocy POST'a nie moge?
Nie możesz tak jak piszesz. Wszystkie zmienne jakie widzisz w adresie URL i przekazujesz je za pomocą adresu to zawsze tylko i wyłącznie zmienne $_GET.

Cytat
No dobra, wszystko jasne tylko nie rozumiem po co wyłączane są teraz global_register... Global register czyli zmienne globalne... Przecież w URL zmienie wartosc nacisne ENTER i zmieni mi... Nie da sie tego jakos zabezpieczyc przed takim czyms??

Masz rację - wklepiesz ręcznie inną wartośc zmiennej w $_GET i zostanie ona zastąpiona. Tak samo, możesz spreparować formularz i przesłać jakiekolwiek zmienne za pomocą $_POST. Ale nie o to chodzi z register_globals. O tym powinineś poczytać w manualu i na forum - przewijało się wiele, wiele razy.
Generalnie, przy włączonym register_globals możesz za pomocą modyfikacji zmiennych $_GET/$_POST nadpisać dowolną inną zmienną w kodzie.

pozdr.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.