1. Wat is en waarom een nieuwsbriefsysteem?
Een nieuwsbriefsysteem is een systeem om nieuwsbrieven mee te versturen naar mensen die zich daarvoor aangemeld hebben.
Deze gaan we maken met HTML en PHP in één bestand.
Hij zal gaan bestaan uit:
Aanmelden voor nieuwsbrieven
Afmelden voor nieuwsbrieven
Verzenden van nieuwsbrieven (admin/cp)
Deze tutorial heb ik geschreven na aanleiding van dit topic.
Het is dan ook altijd handig om er iets over te weten, zeker voor de beginners (waar deze tutorial met name voor is).
Ook wordt hierin de functie fopen() gebruikt voor het opslaan van de e-mailadressen.
Als je nog niet met bestandssysteem overweg kunt raad ik je eerst aan deze tutorial eventjes door te lezen.
Alle benodigde uitleg staat in de code zelf.
Noot:
Er kwamen diverse reacties dat bij het uitvoeren van het script een lege pagina geretourneerd wordt: dat klopt, want je dient in de URL de actie mee te geven.
Dit houdt in dat je achter de URL ?admin of ?aanmelden of ?afmelden moet zetten.
2. Aanmeldingsscript
Maak een nieuw PHP-bestand aan, waarin we het systeem gaan schrijven (ik noem hem in deze tutorial even nieuws.php).
We gaan, zoals ik al zei, alles in één bestand verwerken.
We beginnen even met het aanmelden:
<?php
$file = "nieuws.log"; //de naam van het bestand waar de e-mailadressen inkomen
<form action="" method="post">
Voer uw e-mailadres in waarop u de nieuwsbrief wilt ontvangen:<br>
<input type="text" name="mailadres"><br><br>
<input type="submit" name="submit" value="Aanmelden">
</form>
<?php
}else{
//eerst even controleren of alles correct ingevult is
if(empty($_POST['mailadres']) OR !strpos($_POST['mailadres'], "@") OR !strpos($_POST['mailadres'], ".")){
exit("U hebt een ongeldig e-mailadres opgegeven!");
}else{
//als er niks mis mee is in een flatfile plaatsen
$fp = fopen($file, 'a');
fwrite($fp, $_POST['mailadres'].";
"); //we zetten naast het mailadres een ; als scheidingsteken
fclose($fp);
echo "U bent met succes aangemeld!";
}
}
}
?>
Houd er rekening mee dat je de juiste schrijfrechten hebt meegegeven aan de map, zodat het log-bestand voor de e-mailadressen aan kan worden gemaakt.
3. Afmeldingsscript
Als je geen nieuwsberichten meer wilt, dan wil je je natuurlijk afmelden.
Dat gaan we met hetvolgende script doen.
Zet dit script na de laatste } van het aanmeldingsscript!:
<form action="" method="post">
Voer uw e-mailadres in waarop u zich wilt afmelden:<br>
<input type="text" name="mailadres"><br><br>
<input type="submit" name="submit" value="Aanmelden">
</form>
<?php
}else{
// weer controleren
if(empty($_POST['mailadres']) OR !strpos($_POST['mailadres'], "@") OR !strpos($_POST['mailadres'], ".")){
exit("U hebt een ongeldig e-mailadres opgegeven!");
}else{
$inhoud = file_get_contents($file); // opvragen van de emailadressen
if(strpos($inhoud, $_POST['mailadres'])){
$inhoud = str_replace($_POST['mailadres'].";", "", $inhoud); //adres met ; verwijderen
$fp = fopen($file, 'w'); // $file leeg openen voor schrijven
fwrite($fp, $inhoud); //andere adressen terug plaatsen
fclose($fp);
echo "U bent afgemeld!";
}else{
exit("Het opgegeven e-mailadres is niet aangemeld in ons systeem.");
}
}
}
}
4. Admin/CP
Dan nu hetgene waar wij allen op gewacht hebben.....: het maken van de nieuwsbrief!
Dit doen we in een admin pagina, die uiteraard beveiligd moet zijn.
Deze beveiliging houden we zeer simpel, maar effectief.
Je typt de nieuwsbrief trouwens als HTML.
Als je hem in een WYSIWYG-editor zoals in Outlook (Express) wilt maken, maak dan gebruik van deze tutorial.
Maar hier het admin script, dat je weer na de }van het vorige script moet plaasten:
elseif(isset($_GET['admin'])){
$w8w = "qwerty"; //het wachtwoord om in te loggen
//ter beveiliging een loginformpje
if(!isset($_POST['submit']) OR (isset($_POST['wachtw']) && $w8w != $_POST['wachtw'])){
?>
Welkom admin.<br>
Hieronder kunt u een nieuwe nieuwsbrief verzenden.<br>
Deze maakt u in HTML, maar u hoeft geen <br> te gebruiken: dit wordt automatisch gedaan.<br><br>
<?php
// het verzenden
}elseif(isset($_POST['onderwerp'])){
/* we hebben een bestand volgepropt met emailadressen
deze emailadressen moeten dus van elkaar gescheiden worden
en elk moet dezelfde mail ontvangen
dit gaan we doen met explode() en een for-loop
ook gaan we headers gebruiken, deze zie je hieronder
*/
// HTML gebruiken
$headers = "MIME-Version: 1.0
";
$headers .= "Content-type: text/html; charset=iso-8859-1
";
// hieronder het adres waar het vandaan lijkt te komen
$headers .= "From: Jouw Naam <jij@domein.be>
";
Ja, ik weet het.
Het was geen echte tutorial, maar eerder een script met wat uitleg.
Maar aangezien het leerzaam is bereken ik het toch maar tot een tutorial.
Je weet nu in elk geval hoe je een nieuwsbriefsysteem kunt maken.
Je kunt hem ook altijd uitbreiden door databases of naam-notatie.