Opret en formular (2)
Sat på siden 17-10-2003
En HTML-formular er ikke meget værd uden et script til at udføre en handling. Dette script ser vi på nu.
Som nævnt i sidste uge kan et sådan script laves både med CGI/Pearl, JavaScript eller PHP. Jeg kender ikke meget til CGI, men til gengæld synes jeg, at PHP er logisk opbygget og let at finde rundt i. Desuden er PHP uafhængigt af gæstens browser og mailprogram, så scriptet vil blive lavet i PHP. Hvis du ikke ved, om din server understøtter PHP, kan du undersøge det fra http://www.netcraft.com - bare skriv din hjemmesides adresse i feltet [What's that site running?...] øverst i venstre side.
Du kan skrive php-koden fx i Notesblok. Før du skriver en kode, der skal udføres, skal du skrive
<?php
- Dette fortæller serveren, at det følgende er en php-kode, som den skal tolke.
Herefter skal vi have opbygget brevhovedet i den mail, som din formular skal sende af sted:
$navn = $_POST["navn"];
$email = $_POST["email"];
$header =
"From: Britt Malka <britt@tips-og-tricks.com>
De kantede parenteser er felterne fra formularen. Indholdet af disse felter skal hentes over i PHP, og det gør vi med $_POST og navnet på feltet.
$header er ikke strengt nødvendig, men uden den får du en sjov afsender som fx WWW.ditdomæne.
Hvis du selv vil have en kopi af den mail, som du sender til gæsten, skal du tilføje din adresse i headeren:
$header = "From: Britt Malka <britt@tips-og-tricks.com>\nBCC: Britt Malka <britt@malka.it>";
\n er koden for et linjeskift.
Vi lavede et checkfelt, så vi kunne se, om gæsten ville have kaffe og æg eller ej. Til at finde ud af det, laver vi en HVIS (if) sætning, ligesom du måske kender det fra Excel. Altså, hvis der er sat flueben i feltet "kryds", så skal der stå "Du får kaffe...", hvis ikke (else) skal der ingenting stå ("").
if ($kryds) {
$kaffe = "Du får kaffe og blødkogt æg
hver morgen.";
} else {
$kaffe = "";
}
Nu mangler vi bare emnet og selve beskeden i mailen:
$emne = "Tilmelding til superservice";
$besked = "Hej $navn\n\nDu er nu
tilmeldt vores superservice.\n\n$kaffe";
Her nedenfor sættes mailen sammen af de forskellige enkeltdele:
mail($email, $emne, $besked, $header);
Gæsten skal også lige have besked om, at tilmeldingen er sendt af sted. Det får han omgående på hjemmesiden:
echo "Hej $navn.<br><br>Tak for din tilmelding. Der er sendt en e-mail til dig på adressen $email";
Slut PHP-koden af med følgende tegn:
?>
Her følger hele koden
<?php
$navn = $_POST["navn"];
$email =
$_POST["email"];
$header = "From: Britt Malka <britt@tips-og-tricks.com>\nBCC:
Britt Malka <britt@malka.it>";
if ($kryds) {
$kaffe = "Du får kaffe og
blødkogt æg hver morgen.";
} else {
$kaffe =
"";
}
$emne = "Tilmelding til superservice";
$besked = "Hej
$navn\n\nDu er nu tilmeldt vores superservice.\n\n$kaffe";
mail($email, $emne, $besked, $header);
echo "Hej $navn.<br><br>Tak for din tilmelding. Der
er sendt en e-mail til dig på adressen $email";
>
Gem dit dokument under navnet formular.php - upload dokumentet til din server samme sted som din formular fra sidste uge.
Sådan en formular kan naturligvis gøres meget mere effektiv med check af e-mail-adresse og lignende. Når jeg modtager sådan en mail fra en af mine formularer, kan jeg også altid se, hvilken IP-adresse brugeren har benyttet. Du kan lære mere om PHP ved at læse to rigtigt gode bøger/hæfter fra Libris - www.libris.dk. Jeg kan varmt anbefale: "Start på PHP" og "Avanceret PHP ". Begge bøger har jeg brugt flittigt og ville nødigt undvære.
Obs! Denne formular er desværre ikke sikker over for spammere. For at sikre den skal du bl.a. installere et script, der opretter et CAPTCHA. Det er et billede med bogstaver og/eller tal, som gæsten skal skrive af for at vise, at der er tale om et levende menneske og ikke en robot. Du kan købe en forklaring på, hvordan dette laves, her: http://www.hackademi.com/content/view/69/25/ - opgaven er ikke for begyndere!
Begyndere - og alle, der ikke gider at spilde deres tid - kan i stedet benytte disse formularer, som er lige til at sætte op på ti minutter, og de er med CAPTCHA og det hele: www.tips-og-tricks.com/anbefaler/formularer.html