PHP - GET i POST


Metode slanja informacija na server

Web pretraživač komunicira s poslužiteljem uobičajeno koristeći jednu od dvije metode HTTP (protokola prenosa hiperteksta) - GET i POST. Obe metode prenose informacije različito i imaju različite prednosti i nedostatke, kao što je opisano u nastavku.



GET metoda

U GET metodi podaci se šalju kao URL parametri koji su obično stringovi parova imena i vrijednosti odvojeni znakom (&). Uglavnom, URL sa GET podacima izgledat će ovako:

http://www.example.com/action.php?name=john&age=24

Podebljani dijelovi (name, age) u URL-u su parametri GET, a dijelovi koji su nakošeni (john, 24) su vrijednost tih parametara. Više URL-a = vrijednost može biti ugrađeno u URL povezivanjem s (&). Jednostavne tekstualne podatke možete poslati samo putem GET metode.



Prednosti i nedostaci upotrebe GET metode

  • Budući da su podaci poslani GET metodom prikazani u URL-u, stranicu je moguće postaviti pomoću oznaka s određenim vrijednostima string upita.
  • Metoda GET nije prikladna za prosljeđivanje osjetljivih podataka poput korisničkog imena i lozinke, jer su one u potpunosti vidljive u stringu upita URL-a kao i potencijalno pohranjene u memoriji pretraživača klijenta kao posjećene stranice.
  • Budući da metoda GET dodjeljuje podatke varijabli okruženja poslužitelja, dužina URL-a je ograničena. Dakle, postoji ograničenje za ukupne podatke koji se šalju.

PHP superglobalnoj varijabli $_GET pruža pristup svim informacijama koje su poslane bilo putem URL-a ili preko HTML obrasca pomoću method="get".

<!DOCTYPE html>
<html lang="en">
<ead>
    <title>Primjer PHP GET metode</title>
</head>
<body>
<?php
if(isset($_GET["name"])){
    echo "<p>Hi, " . $_GET["name"] . "</p>";
}
?>
<form method="get" action="<?php echo $_SERVER["PHP_SELF"];?>">
    <label for="inputName">Name:</label>
    <input type="text" name="name" id="inputName">
    <input type="submit" value="Submit">
</form>
</body>


POST metoda

U POST metodi podaci se šalju poslužitelju kao paket u zasebnoj komunikaciji u skripti za obradu. Podaci poslani metodom POST neće se vidjeti u URL-u.



Prednosti i nedostaci upotrebe POST metode

  • Sigurniji je od GET-a metode, jer se informacije koje unose korisnici nikada ne vide u stringu upita URL-a ili u zapisnicima poslužitelja.
  • Postoji mnogo veće ograničenje količine podataka koji se mogu proslijediti i mogu se poslati tekstualni i binarni podaci (upload datoteke) pomoću POST-a.
  • Pošto su podaci poslani metodom POST nisu vidljivi u URL-u, pa nije moguće markirati stranicu određenim upitom.

Poput $_GET metode, PHP pruža još jednu superglobalnu varijablu $_POST za pristup svim informacijama koje su poslane post metodom ili poslane preko HTML obrasca pomoću method="post".

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Primjer PHP POST metode</title>
</head>
<body>
<?php
if(isset($_POST["name"])){
    echo "<p>Hi, " . $_POST["name"] . "</p>";
}
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
    <label for="inputName">Name:</label>
    <input type="text" name="name" id="inputName">
    <input type="submit" value="Submit">
</form>
</body>


Varijabla $_REQUEST

PHP pruža još jednu superglobalnu varijablu $_REQUEST koja sadrži vrijednosti varijabli $_GET i $_POST kao i vrijednosti superglobalne varijable $_COOKIE.

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Primjer PHP $_REQUEST varijable</title>
</head>
<body>
<?php
if(isset($_REQUEST["name"])){
    echo "<p>Hi, " . $_REQUEST["name"] . "</p>";
}
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
    <label for="inputName">Name:</label>
    <input type="text" name="name" id="inputName">
    <input type="submit" value="Submit">
</form>
</body>

Saznaćete više o PHP kolačićima i rukovanju obrascima u naprednim lekcijama.