Und ich dachte ich veröffentliche es hier mal, evtl. kann ja irgendjemand Teile davon gebrauchen.
Es gibt 4 PHP-Scripte und zusätzlich die adressen.txt, in der die E-Mail Adressen der Abonnenten gespeichert sind.
Da die eintragen.php und abbestellen.php zum Einbinden in bestehende Seiten gedacht sind, enthalten sie nicht das
komplette HTML-Gerüst.
pruefen.php
- Code: Alles auswählen
<?php
// Diese Funktion prüft E-Mail Adressen auf ihre Gültigkeit.
// Quelle: http://aktuell.de.selfhtml.org/artikel/programmiertechnik/email/
function check_email($email)
{
$nonascii = "\x80-\xff";
$nqtext = "[^\\\\$nonascii\015\012\"]";
$qchar = "\\\\[^$nonascii]";
$protocol = '(?:mailto:)';
$normuser = '[a-zA-Z0-9][a-zA-Z0-9_.-]*';
$quotedstring = "\"(?:$nqtext|$qchar)+\"";
$user_part = "(?:$normuser|$quotedstring)";
$dom_mainpart = '[a-zA-Z0-9][a-zA-Z0-9._-]*\\.';
$dom_subpart = '(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*';
$dom_tldpart = '[a-zA-Z]{2,5}';
$domain_part = "$dom_subpart$dom_mainpart$dom_tldpart";
$regex = "$protocol?$user_part\@$domain_part";
return preg_match("/^$regex$/",$email);
}
?>
eintragen.php
- Code: Alles auswählen
<form name="eintragen" method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
<input type="text" name="email" />
<input type="submit" value="Newsletter bestellen" />
</form>
<?php
include ("pruefen.php");
if (isset($_POST["email"])) // Prüft, ob überhaupt eine Mailadresse angegeben wurde.
{
if (!check_email($_POST["email"]))
{
// Fehlermeldung ausgeben, wenn die eigegebene E-Mail Adresse ungültig ist.
echo "<script language=\"JavaScript\">alert('Ungültige E-Mail Adresse angegeben !')</script>";
}
else
{
if (!file_exists("adressen.txt")) // Falls noch keine Adressen-Datei existiert, wird sie erstellt.
{
$handle = fopen("adressen.txt", "a");
fclose($handle);
}
$adressen = file_get_contents("adressen.txt"); // Datei in einen String lesen
$adr_array=explode(";", $adressen);
if (!in_array($_POST["email"],$adr_array)) // Nur eintragen, wenn EMail nicht schon vorhanden
{
$handle = fopen("adressen.txt","a"); // Adressen-Datei zum Schreiben öffnen
array_push($adr_array, trim($_POST["email"])); // E-Mail Adresse hinzufügen
$adr_neu = implode(";",$adr_array); // Neuen Adressen-String erstellen
fclose($handle); // Datei schließen
unlink("adressen.txt"); // alte Datei löschen
$handle = fopen("adressen.txt", "a"); // Adressen-Datei neu erstellen
fwrite($handle, $adr_neu); // Neue Adressen reinschreiben
fclose($handle); // Datei schließen
echo "<script language=\"JavaScript\">alert('Newsletter-Bestellung war erfolgreich !')</script>";
}
}
}
?>
abbestellen.php
- Code: Alles auswählen
<?php
$adressen = file_get_contents("adressen.txt"); // Datei in einen String lesen
$adr_array=explode(";", $adressen);
if (in_array($_GET["adr"], $adr_array))
{
$loeschen = array_search($_GET["adr"], $adr_array); // Adresse suchen
unset ($adr_array[$loeschen]); // eigentlisches Löschen
unlink("adressen.txt"); // Adressen-Datei löschen
$handle = fopen("adressen.txt", "a"); // Adressen-Datei neu erstellen
fwrite($handle, implode(";", $adr_array)); // Array reinschreiben
fclose($handle);
echo "<script language=\"JavaScript\">alert('Newsletter-Abbestellung war erfolgreich !')</script>";
}
?>
abbestellen.php
- Code: Alles auswählen
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title>Newsletter verschicken</title>
<style type="text/css">
<!--
* {
padding: 0;
margin: 0;
}
body {
font: 10pt Arial, Verdana, sans-serif;
color: black;
background-color: white;
}
input, textarea {
background-color:#fff;
font-size: 1em;
margin-top: 1em;
width: 15em;
}
input:focus, textarea:focus { /* Funktioniert im IE noch nicht, ist aber ein ganz netter Effekt... */
background-color: #eee;
}
legend {
font-weight:bold;
background-color: #F4F4F4;
border: 1px solid #ccc;
padding: 4px;
text-align:center;
margin: 1em;
}
fieldset {
border: 1px solid #ccc;
margin: 10px;
width: 25em;
padding-bottom: 10px;
display: block;
}
label {
float: left;
text-align: right;
width: 8em;
margin-right: .3em;
margin-top: 1em;
}
form br {
clear:left;
}
fieldset.button {
background-color:#F4F4F4;
padding: 1em 0;
text-align: center;
}
.button .submit {
margin: 0 auto;
display: block;
width: 8em;
border: 2px solid;
border-color: #F2F2F2 #C0C0C0 #C0C0C0 #F2F2F2;
}
-->
</style>
</head>
<body>
<form action="<?php echo $_SERVER["PHP_SELF"]?>" method="post" name="verschicken">
<fieldset>
<legend> Newsletter verschicken</legend>
<label for="vorname">Absender:</label>
<input type="text" name="absender" id="absender" size="50" />
<br />
<label for="betreff">Betreff:</label>
<input type="text" name="betreff" id="betreff" size="50" />
<br />
<label for="text">Nachricht</label>
<textarea name="text" id="text" cols="50" rows="10"></textarea>
<br />
</fieldset>
<fieldset class="button">
<input type="submit" class="submit" value="Versenden" />
</fieldset>
</form>
<?php
include ("pruefen.php");
if ((isset($_POST["absender"])) and (isset($_POST["betreff"])) and (isset($_POST["text"]))) // Prüft, ob alle Felder ausgefüllt wurden
{
if ((file_exists("adressen.txt")))
{
$adressen = file_get_contents("adressen.txt"); // Datei in einen String lesen
$adr_array=explode(";", $adressen); // Array der Adressen erstellen
foreach ($adr_array as $empfaenger)
{
if (check_email($empfaenger))
{
$abbestellung = "\r\n\r\n ============================================\r\n"; // Absatz zur Newsletter-Abbestellung
$abbestellung.= "Wenn Sie diesen Newsletter nicht mehr erhalten möchten, klicken Sie bitte auf folgenden Link:\r\n";
$abbestellung.= "http://www.meine-domain.de/abbestellen.php?adr=".$empfaenger;
if (mail($empfaenger, $_POST["betreff"], $_POST["text"].$abbestellung,"From:".$_POST["absender"]))
{
echo "<p>Der Newsletter wurde erfolgreich versendet !</p>";
}
}
}
}
}
?>
</body>
</html>
So, das wärs. Da ich ich mich hier noch nicht so gut auskenne, bin ich natürlich auf Reaktionen und Verbesserungsvorschläge gespannt.
MfG
FireFoxFan