Send info mellem php-sider

Man bruger arrays til at sende info mellem php-sider

En PHP side bygger ofte noget op ud fra opslag i databasen. Den kan for eksempel vise en bestemt begivenhed og håndtere tilmelding til netop den ting. Og hvis php-siden skal slå en bestemt begivenhed op i databasen, må den jo have en reference – et nummer eller et navn eller lignende – så den kan hente lige netop den begivenhed.

Andre gange skal PHP siden måske gemme noget bestemt i databasen – for eksempel info om en ny bruger: brugernavn, password og den slags. Også her skal siden have noget “at vide” fra den forrige side. Typisk når nogen har udfyldt en eller anden form, som nu skal gemmes i databasen.

I begge tilfælde skal vi bruge en metode til at sende info fra den ene php-side til den anden. Der findes to metoder til at gøre det: GET og POST. Begge dele er arrays, og man slår op i dem sådan her:

echo $_GET["brugernavn"];     #Udskriver for eksempel 'per'

echo $_POST["brugernavn"];    #Udskriver også for eksempel 'per'

Så hvornår skal man bruge det ene og det andet array? Som hovedregel er det nemmere at sætte noget i GET arrayet – men det bliver fuldkommen synligt for slutbrugeren: det står nemlig i browserens URL. Når vi skal sende fortrolig information mellem sider (som brugernavne eller passwords), bruger vi derfor som hovedregel POST arrayet.

GET: Variable efter spørgsmålstegn i URL’en

GET arrayet kan sættes direkte efter en url i et link. Forestil dig for eksempel følgende link:

<a href="begivenhed.php?id=127">Vis en bestemt begivenhed</a>

På siden begivenhed.php kan vi nu hente variablen “id” i GET arrayet:

$id = $_GET["id"];     # variablen $id sættes til 127. Vi kan nu slå den rigtige begivenhed op i databasen

Til gengæld står der så også ?id=127 i browserens URL – hvilket er fint hvis det er et ligegyldigt tal. Men knap så smart hvis variablen var et cpr-nummer.

POST: Variable gemt i en form

Når man bruger metoden POST via en form, gemmes variable til næste side usynligt. Man kan for eksempel bygge en form op sådan her:

<form action="/opret_bruger.php" method="post">
  Brugernavn: <input type="text" name="brugernavn"><br>
  <input type="submit" value="Send">
</form>

Og når man så vil hente værdierne på den næste side, skriver man ligesom før:

$brugernavn = $_GET['brugernavn'];    # $brugernavn indeholder nu det brugernavn der blev indtastet i tekstfeltet

Man kan forresten også skrive method=”get” i en form – men så printes værdierne altså som før i sidens URL.

Fordele og ulemper ved GET og POST

GET:

Appends form-data into the URL in name/value pairs
The length of a URL is limited (about 3000 characters)
Never use GET to send sensitive data! (will be visible in the URL)
Useful for form submissions where a user want to bookmark the result
GET is better for non-secure data, like query strings in Google

POST:

Appends form-data inside the body of the HTTP request (data is not shown is in URL)
Has no size limitations
Form submissions with POST cannot be bookmarked

Leave a comment