Hvordan bruke POST til å linke til sider

Vi er alle kjente med at man kan bruke GET for å velge side, eksempel:


<a href="index.php?side=Hjem">Hjem
<a href="index.php?side=Info">Info

*Ulempen* ved å bruke denne metoden er at man får den kanskje skjemmende teksten "?side=blahblahblah" etter url'en. Ved å bruke POST-metoden istedenfor GET kan man fjerne denne teksten, noe som bidrar til å lage en ryddigere hjemmeside. (selv om kildekoden ikke akkurat blir så mye ryddigere)

For å bruke POST-metoden istedenfor GET, kan man ikke bruke den vanlige metoden, med såkalt 'querystring' etter url'en. Måten man gjør dette på, er å opprette et skjema som bare inneholder en input, som er skjult. Dette skjemaet pleier jeg for ordens skyld å legge inn i kildekoden, rett etter -flagget. Koden for dette skjemaet blir da:

<form name="navigasjon" method="post" action="index.php">
<input type="hidden" name="side" value="" />
</form>

Når noen trykker på en link, bruker vi javascript for først å forandre verdien til "side". Deretter bruker vi javascript til å sende skjemaet. Koden vil da ligne noe slikt:

<a href="javascript:document.navigasjon.side.value='Hjem'; document.navigasjon.submit();">Hjem
<a href="javascript:document.navigasjon.side.value='Info'; document.navigasjon.submit();">Info

PHP-delen er nesten helt lik den som brukes ved GET, bortsett fra at man bruker $_POST.



Vår samlede kode, med POST-metoden, ser da slik ut:

<html>
<head>
</head>
<body>
<form name="navigasjon" method="post" action="index.php">
<input type="hidden" name="side" value="" />
</form>

Velkommen til denne siden!

<a href="javascript:document.navigasjon.side.value='Hjem'; document.navigasjon.submit();">Hjem
<a href="javascript:document.navigasjon.side.value='Info'; document.navigasjon.submit();">Info

Eventuell forbedring: Når man holder musen over linken, vil status-linja vise javascriptet. For å holde hjemmesida like ren som den ble ved bruk av POST-metoden, kan man forandre statuslinjeteksten manuelt. For å gjøre dette legges det til to javascript- kommandoer i linkene, eksempel:

<a OnMouseOver="window.status='Hjem'; return true;" OnMouseOut="window.status=''; return true;" 
href="javascript:document.navigasjon.side.value='Hjem'; document.navigasjon.submit();">Hjem

Lykke til med bruken av POST!
- Eirik Sletteberg