» direct naar zoek en menu

Tijdschrift voor webwerkers » Artikel #26

Mail-een-vriend script - Een snelle-en-simpele oplossing

Bij elke site komt er wel eens een deel interactiviteit kijken. Hoe graag je ook het geheel zo kaal mogelijk wilt houden zonder enige tussenkomst van databases en scriptjes, er zal altijd wel een moment zijn dat er iets ‘server-side’ nodig is. Bijvoorbeeld voor een mailformulier of voor de aanvraag van een brochure.

Wij hebben echter iets anders essentieels nodig, namelijk een mail-een-vriend (mail-a-friend) script voor Naar Voren. Heel handig voor het op de hoogte houden van je collega’s of vrienden van interessante artikelen op onze favoriete site.

Werking

Bezoeker website ziet leuk artikel. Vult haar naam en e-mail adres in, daarna de naam en e-mail adres van een bekende. Druk op ‘verstuur’ en de link naar het artikel, de beschrijving en andere gegevens worden naar de bekende gestuurd.

Opzet

Laten we meteen beginnen. Allereerst waren er van te voren enkele strikte eisen gesteld aan het geheel:

Daarnaast de standaard eisen:

Uitwerking

Voor de scripting gebruiken we de scripting taal PHP. De pagina zelf komt uiteraard gewoon in XHTML te staan. Zo, aan de slag.

Metafysica?

Laten we de auteur, beschrijving en titel vermelden in de meta-tags aan het begin van het document:

<meta name="title" content="een mail-een-vriend script" />
<meta name="author" content="michel honig" />
<meta name="description" content="scriptje ter test" />

Formulier

Allereerst het gedeelte in de HTML pagina. Laten we het PHP script ‘mailafriend.php’ noemen in dit voorbeeld.

Let op de velden:
naam = volledige naam van de afzender
from = e-mail adres van de afzender
vriend = volledige naam van de geadresseerde
to = e-mail adres van de geadresseerde

<form method="post" action="mailafriend.php">
<input type="text" name="naam" />
<input type="text" name="from" />
<input type="text" name="vriend" />
<input type="text" name="to" />
<input type="submit" value="verstuur" />

Zo! Dat is de basis-code voor het formulier. Nu verder met het script.

We gaan beginnen met het PHP-script.

LET OP de \-escapes van de "

Daarna gaan we kijken of één van de bovenstaande velden leeg is ( == "") en we controleren ook of een e-mail veld misschien geen ‘@’ bevat (substr_count($from,"@')=="0"). Dan moeten we namelijk ‘oops.inc’ (de foutpagina die we zometeen behandelen) includen zodat de gebruiker het form nogmaals kan posten.

Dan een exit; om het script voortijdig af te breken! We gebruiken operator || in deze if-statement (|| = OR), je doet het volgende:

if ($to == "" || $from == "" || $vriend == "" || $naam == "" || substr_count($from, "@") == "0"|| substr_count($to, "@") == "0
  {
    include 'oops.inc';
    exit;
  };

Hmm, we mogen geen database gebruiken. Toch willen we de waarden uit de meta-tags gebruiken. De snelle en simpele oplossing: ‘grep’ de waarden uit het HTML-bestand. Het script moet dan weten welk HTML-bestand het is. Voorwaarde: het PHP-script moet in dezelfde directory staan als de HTML-bestanden.

De volgende variabelen halen we op met PHP of staan al in het form (‘oops.inc’)

Zo hebben we http://www.test.nl/testje.html omgedraaid (strrev) tot lmth.ejtset/ln.tset.www//:ptth en nemen we het eerste element ($htmlfile) : lmth.ejtset.

Dit draaien we om tot testje.html en we hebben $bestand. Waarom deze truuk? Zo kunnen we altijd de bestandsnaam afleiden, ongeacht hoe lang de URL is.

if (!isset($linkje)) { $linkje = getenv(HTTP_REFERER);}

Als $linkje al bestaat, wordt het script blijkbaar vanuit ‘oops.inc’ aangeroepen, dus hoef je de referrer niet meer te weten (die staat in de HIDDEN value ‘linkje’).

$tags = get_meta_tags($linkje);

Hiermee maken we een mooie array van de meta-tags gevonden in de pagina waaruit het script wordt aangeroepen.
We hoeven alleen nog maar de variabelen in de mail te koppelen aan de diverse meta-tags die nu in array tags zit:

$auteur = $tags['author'];
$titel = $tags['title'];
$desc = $tags['description'];

Vervolgens het bericht zelf. Let op de \n (regeleinde) en \r (harde return) codes en het invoeren van de variabelen boven verkregen.

$message = "
Beste $vriend

$naam denkt dat jij dit een interessant artikel vindt.

$titel- $auteur$desc$linkje

--
naar voren - van kladblok tot factuur
e-mail: redactie@naarvoren.nl
http://www.naarvoren.nl
";

Dan het onderwerp, de afzender en de headers (altijd leuk voor de header-kijkers ;))

$subject = "[Naar Voren] $titel";
$headers .= "From: ".$naam." <".$from.">\r\n";
$headers .= "X-Mailer: Naar Voren Mail-A-Friend v1.1b";

Het geheel mailen!

mail($to, $subject, $message, $headers);

Toon het ‘dank-u-wel’ scherm, dat is een HTML-bestand genaamd ‘klaar.html’.

readfile("klaar.html");

Als laatste het ‘oops.inc’ bestandje, waar we het volgende dienen in te zetten. In feite hetzelfde als in het eigenlijke HTML-bestand, maar we weten waarschijnlijk een paar niet-vergeten waarden al:

<form method="post" action="mailafriend.php">
<input type="hidden" name="linkje" value="<?echo $linkje;?>" /> <input type="text" name="naam" value="<?echo $naam;?>" />
<input type="text" name="from" value="<?echo $from;?>" />
<input type="text" name="vriend" value="<?echo $vriend;?>" />
<input type="text" name="to" value="<?echo $to;?>" />
<input type="submit" value="verstuur" />
</form>

En als je dit in ‘oops.inc’ ingevoerd hebt, ben je klaar met het mail-een-vriend-scriptje! Veel succes ermee.


Hebben?

» mailverstuur.zip |
» mailverstuur.phps

Auteur

Michel Honig

is onder andere bekend als de oprichter van Endoria Networks, de nationaal bekende organisatie voor het gratis webhosten van studenten en scholieren.

Daarnaast werkt Michel als network engineer, ict-adviseur en systeem / netwerkbeheerder voor bekende Nederlandstalige sites zoals Scholieren.com en Tweakers.net.

Michel wil met Endoria.net scholieren en studenten met webdesigntalenten een kans geven deze te tonen aan de internet-wereld.

Publicatiedatum: 28 november 2002

Let op

Naar Voren is op 18 juli 2010 gestopt met publiceren. De artikelen staan als een soort archief online. Het kan dus zijn dat de informatie verouderd is en dat er inmiddels veel betere of makkelijkere manieren zijn om je doel te bereiken.

Copyright © 2002-heden » NAAR VOREN en de auteurs