Guide: PHP- & MySQL-innføring: Kapittel 6
Ta imot data fra brukeren
For å lage dynamiske websider i PHP er man nødt til å ta imot og behandle data fra brukeren. Bare slik kan man tilpasse nettsiden til brukeren.
Feilmeldinger
Det er viktig å gi brukeren tilbakemelding dersom det oppstår feil med valideringen av data som har blitt innsendt. Den gjerne enkleste måten å gjøre dette på, er ved bruke funksjonen die(), og la skriptet avslutte med en feilmelding. Brukeren må så bruke tilbake-knappen i nettleseren for å rette opp feilene.
En mer behagelig måte, for brukeren i alle fall, er å sette opp igjen det originale skjemaet med de korrekte verdiene ferdig innfylt. Felt som brukeren har glemt lar du stå tomme, og marker dem gjerne med en bakgrunnsfarge eller en godt synlig stjerne bak feltet.
En enkel måte å gjøre dette på, er ved å sørge for at utfyllingsskjemaet og logikk-koden ligger i samme PHP-fil. Her er et enkelt eksempel;
<?php
$fornavn = "";
$etternavn = "";
if ($_REQUEST['fornavn'] && $_REQUEST['etternavn'])
{
$fornavn = htmlentities(strip_tags(
stripslashes($_REQUEST['fornavn'])));
$etternavn = htmlentities(strip_tags(
stripslashes($_REQUEST['etternavn'])));
$gyldig = ($fornavn == 'Vegard') &&
($etternavn == 'Larsen');
}
if (!$gyldig)
{
?>
<form method="POST" action="6-12.php">
<p>Fornavn: <input type="text" name="fornavn"
value="<?php
echo $fornavn;
?>" />
</p>
<?php
if ($fornavn != 'Vegard' && $fornavn != '')
echo "<p style=\"color: red;\"><b>Du får kun logge " .
"inn om du heter Vegard til fornavn</b></p>";
?>
<p>Etternavn: <input type="text" name="etternavn"
value="<?php
echo $etternavn;
?>"/>
</p>
<?php
if ($etternavn != 'Larsen' && $etternavn != '')
echo "<p style=\"color: red;\"><b>Du får kun logge " .
"inn om du heter Larsen til etternavn</b></p>";
?>
<p><input type="submit" value="Send inn" /></p>
</form>
<?php
}
else
{
echo "Velkommen tilbake, Vegard!";
}
?>
Vi viser kun feilmeldingene dersom brukeren allerede har forsøkt å logge inn en gang tidligere. Koden ovenfor er også et godt eksempel på at det er fullt mulig å blande PHP-kode og HTML-kode, men man ser også hvor fort det blir rotete.
På et senere tidspunkt i denne artikkelserien kommer vi til å gå gjennom såkalte template-systemer, som lar deg skrive mye ryddigere kode.