[PHP] Newsletterscript - Newslettersytem mit MySQL

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • [PHP] Newsletterscript - Newslettersytem mit MySQL

    Newsletterscript mit MySQL

    Wie schon im Blog versprochen zeige ich euch hier, wie ihr ein komplettes Newsletterscript programmieren könnt:

    1. Schritt:

    Erstellt eine MySQL-Datenbank und eine Tabelle mit 6 Feldern und führt folgenden MySQL-Befehl aus:

    [code:1]CREATE TABLE `newsletter` (
    `ID` int(11) NOT NULL auto_increment,
    `email` text NOT NULL,
    `bestellt` text NOT NULL,
    `abbestellt` text NOT NULL,
    `ip` text NOT NULL,
    `bestaetigt` int(11) NOT NULL default '0',
    PRIMARY KEY (`ID`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;[/code:1]

    2.Schritt:

    Erstellt eine Datei für die MySQL-Verbindung, am besten nach folgender
    Anleitung


    3. Schritt

    Erstellt eine Newsletteroberfläche für eure Besucher:

    newsletter.php
    [code:1]<?php

    include ('connect.php'); // MySQL-Verbindung aufbauen

    if(isset($_POST['anmelden']) && !empty($_POST['email']) && eregi('@',$_POST['email'])) // Formulardaten auf korrekte Eingabe überprüfen
    {

    $email = $_POST['email'];
    $text = "Bitte bestätigen Sie Ihre Newsletteranmeldung:\n\nhttp://www.domain.tld/?e=newsletter_bestaetigen&email=".$email; // Dieser Text wird in einer Bestätigunsemail an den Besucher geschickt, hier müssen Sie hier Domain eintragen!

    $handle = mysql_query("SELECT email,abbestellt FROM newsletter");
    if(mysql_num_rows($handle) > 0)
    {
    while($row = mysql_fetch_assoc($handle))
    {
    if(($_POST['email'] == $row['email']) && ($row['abbestellt'] == NULL))
    {
    $status = "Sie sind bereits Abonennt des Newsletters"; //, weil die Email-Adresse in der Datenbank schon vorhanden ist, aber noch nicht abbestellt wurde
    }
    else if(($_POST['email'] == $row['email']) && ($row['abbestellt'] != NULL))
    {
    mysql_query("INSERT INTO newsletter (email,bestellt,ip,bestaetigt) VALUES ('$email','$bestellt','$ip', 'nein')");
    mail($email, 'Bestätigung', $text);
    $status = "Eine Email wurde an Ihre Adresse geschickt, bitte clicken Sie dort auf den Bestätigungslink!"; //, zwar ist die Email-Adresse schon eingetragen, wurde aber bereits abbestellt, damit ist eine erneute Anmeldung wieder wirksam
    }
    else
    {
    $bestellt = date("Y-m-d");
    $ip = $_SERVER['REMOTE_ADDR'];
    if(mysql_query("INSERT INTO newsletter (email,bestellt,ip,bestaetigt) VALUES ('$email','$bestellt','$ip', 'nein')"))
    {

    mail($email, 'Bestätigung', $text);
    $status = "Eine Email wurde an Ihre Adresse geschickt, bitte clicken Sie dort auf den Bestätigungslink!";
    }
    else
    {
    $status = "Fehler beim Eintragen Ihrer Emailadresse, bitte probieren Sie es später noch einmal.";
    }
    }
    }
    }
    else
    {
    $bestellt = date("Y-m-d");
    $ip = $_SERVER['REMOTE_ADDR'];
    if(mysql_query("INSERT INTO newsletter (email,bestellt,ip,bestaetigt) VALUES ('$email','$bestellt','$ip', 'nein')"))
    {
    mail($email, 'Bestätigung', $text);
    $status = "Eine Email wurde an Ihre Adresse geschickt, bitte clicken Sie dort auf den Bestätigungslink!";
    }
    else
    {
    $status = "Fehler beim Eintragen Ihrer Emailadresse, bitte probieren Sie es später noch einmal.";
    }
    }
    }

    if(isset($_POST['abmelden']) && !empty($_POST['email'])) // Bedingung für das Abmelden
    {
    $abbestellt = date("Y-m-d");
    $email = $_POST['email'];
    if(mysql_query("UPDATE newsletter SET abbestellt = '$abbestellt' WHERE email = '$email'"))
    {
    $status = "Ihre Emailadresse ".$email." wurde erfolgreich aus unserem Newsletter entfernt.";
    }
    }
    ?>
    <h3 style="font-size:10pt;font-family:verdana;margin-top:40px;color:#000000;font-style:italic;text-decoration:underline;">Newsletter:</h3>
    <br><br>
    <form action="<?php echo$_SERVER['PHP_SELF']; ?>" method="POST">
    <input type="text" name="email" value="Ihre Email-Adresse"><br>
    <input type="submit" name="anmelden" value="anmelden"><br>
    <input type="submit" name="abmelden" value="abmelden">
    </form>
    <?php echo $status;?>[/code:1]

    4. Schritt:

    Ihr benötigt eine Datei, die beim Aufrufen des Bestätigungslinkes für den Besucher erscheint:

    newsletter_bestaetigung.php
    [code:1]<?php
    include_once ('connect.php');

    $email = $_GET['email'];

    if(mysql_query("UPDATE newsletter SET bestaetigt = 'ja' WHERE email = '$email'"))
    {
    $status = "Ihre Emailadresse wurde erfolgreich bestätigt.";
    }
    else
    {
    $status = "Fehler beim bestätigen Ihrer Email-Adresse";
    }

    ?>
    <h3 style="font-size:10pt;font-family:verdana;margin-top:40px;color:#000000;font-style:italic;text-decoration:underline;">Newsletterbestätigung:</h3>
    <?php echo $status;?>[/code:1]

    Nun seid ihr so weit, dass sich Besucher bei eurem Newsletter anmelden können, jetzt benötigt ihr als Webmaster aber auch noch eine Verwaltung der Adressen, so wie die Möglichkeit einen Newsletter zu verfassen, der sich an die Abonennten verschickt.

    5. Schritt

    Jetzt wollen wir die Verwaltung für die Abonennten einrichten, die uns auch die Möglichkeit des Löschens eines Abonennten gibt:

    newsletter_verwalten.php
    [code:1]<?php
    if(isset($_POST['abonennt_loeschen']) && isset($_POST['abonennt']))
    {
    $id = $_POST['abonennt'];
    if(mysql_query("DELETE FROM newsletter WHERE ID = '$id'"))
    {
    $status = "Abonennt wurde erfolgreich aus der Datenbank entfernt.";
    }
    else
    {
    $status = "Fehler beim Entfernen des Abonennts.";
    }
    }
    ?>
    <h3>Newsletter verwalten:</h3>
    <br><br>
    <form action="<?php echo$_SERVER['PHP_SELF']; ?>" method="POST">
    <table style="border:0px solid #ffffff;width:90%;" cellspacing="0" cellpadding="0">
    <tr>
    <td><b>Emailadresse:</b></td>
    <td><b>Bestellt am:</b></td>
    <td><b>Abbestellt am:</b></td>
    <td><b>IP-Adresse:</b></td>
    <td><b>Bestätigt:</b></td>
    <td><b>Löschen:</b></td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    </tr>
    <?php
    $handle = mysql_query("SELECT ID,email,bestellt,abbestellt,ip,bestaetigt FROM newsletter ORDER BY bestellt");
    if(mysql_num_rows($handle) > 0)
    {
    while($row = mysql_fetch_assoc($handle))
    {
    $result .= "<tr><td>".$row['email']."</td><td>".$row['bestellt']."</td><td>".$row['abbestellt']."</td><td>".$row['ip']."</td><td>".$row['bestaetigt']."</td><td><input type=\"radio\" name=\"abonennt\" value=\"".$row['ID']."\"/></td></tr>";
    }
    echo $result;
    }
    else
    {
    $status = "Keine Abonennten im Newsletter eingetragen";
    }
    ?>
    <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td><input type="submit" name="abonennt_loeschen" value="Abonennt entfernen" /></td>
    </tr>
    </table>
    </form>
    <br>
    <?php echo "<b>".$status."</b>"; ?>[/code:1]

    6. Schritt

    Zum Schluss noch die Datei, mit der Ihr eure Newsletter verfassen und an die bestätigten Abonennten verschicken könnt:

    [code:1]<?php
    if(isset($_POST['newsletter_senden']) && !empty($_POST['betreff']) && !empty($_POST['text']))
    {
    $handle = mysql_query("SELECT email,abbestellt FROM newsletter WHERE bestaetigt = 'ja'");
    if(mysql_num_rows($handle) > 0)
    {
    while($row = mysql_fetch_assoc($handle))
    {
    if(empty($row['abbestellt']))
    {
    $header = 'From: Domain.tld';
    mail($row['email'], $_POST['betreff'], $_POST['text'], $header);
    }
    else
    {
    $status = "Keine Abonennten zum Empfangen des Newsletters eingetragen.";
    }
    }
    if(empty($status))
    {
    $status = "Newsletter wurde erfolgreich versandt.";
    }
    }
    else
    {
    $status = "Keine Abonennten zum Empfangen des Newsletters eingetragen.";
    }
    }
    ?>
    <h3>Newsletter verfassen:</h3>
    <br>
    <form action="<?php echo$_SERVER['PHP_SELF']; ?>" method="POST">
    <table cellspacing="0" cellpadding="2">
    <tr>
    <td>
    <b>Betreff:</b>
    </td>
    <td><input type="text" name="betreff" style="width:300px" /></td>
    </tr>
    <tr class="farbig">
    <td valign="top" class="farbig">
    <b>Text:</b>
    </td>
    <td>
    <textarea name="text" rows="10" style="width:300px"></textarea>
    </td>
    </tr>
    <tr>
    <td valign="top">&nbsp;</td>
    <td>
    <input name="newsletter_senden" type="submit" value="Newsletter senden" />
    </td>
    </tr>
    </form>
    <?php echo "<b>".$status."</b>"; ?>[/code:1]

    Das wars auch schon, bei Fragen, Problemen oder Anregungen könnt ihr diese jederzeit hier posten!

    Viel Spaß mit dem Skript ;)
    Was wir wissen ist ein Tropfen, was wir nicht wissen ein Ozean.

    www.bussgeldkataloge.eu - Die Seite für Autofahrer