2x bewertet

Newsletter

von Delite  |  08.08.2007 um 17:55 h
PHP Anwendungen
Typ: PHP Anwendungen
Stufe:Einfach Mittelmäßig
So dies hier war ein Wunschtutorial. Hier können sich User in eine Liste eintragen lassen und man kann dann E-Mails an sie verschicken.

Als erstes fügen wir folgenden Code in PHPMyAdmin > MySQL (lese hier):
My-SQL Code:
CREATE TABLE `newsletter` (
`id` INT( 150 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`email` VARCHAR( 150 ) NOT NULL ,
`ip` VARCHAR( 20 ) NOT NULL
) ENGINE = MYISAM ;


Jetzt habt ihr die Tabelle für die gespeicherten E-Mail erstellt.

Jetzt müssen wir noch Verbindung zur Datenbank aufnahmen, indem wir db.php erstellen (lese hier).

Nun erstellt ihr die datei registrieren.php:

<?php
    
include("db.php");
    if(isset(
$_REQUEST["submit"]) && !empty($_REQUEST["email"]) &&
!
mysql_fetch_object(mysql_query("SELECT id FROM newsletter WHERE ip =
'"
.getenv("REMOTE_ADDR")."'"))) { // Wenn Formular abgeschickt, E-Mail
leer und noch kein Newsletter auf die ip
        $eintragen 
mysql_query("INSERT INTO newsletter (email, ip) VALUES
('"
.strip_tags($_REQUEST["email"])."',
'"
.getenv("REMOTE_ADDR")."')");
        if(
mysql_errno() == 0) {
            echo 
"<br><br>Newsletter wurde bestellt.<br><br>";
        } else {
            echo 
"<br><br>Es ist leider ein Fehler aufgetreten "mysql_errno()
.
": ".mysql_error()."<br><br>";
        } 
    }
?>
<form action="registrieren.php" method=post>
    <b>Email:</b> <input type="text" name="email">
    <input type="submit" value="Newsletter bestellen" name="submit">
</form>


Auf dieser Seite können sich Leute in eure Liste eintragen lassen. Wenn die eigene IP dort schon eingetragen ist, dann kann man sich nicht erneut anmelden.

Danach erstellt ihr sendnewsletter.php:

<?php
    
include("db.php");
    if(isset(
$_REQUEST["submit"]) && !empty($_REQUEST["email"]) &&
!empty(
$_REQUEST["name"]) && !empty($_REQUEST["betreff"]) &&
!empty(
$_REQUEST["text"])) { // Ob alles ausgefüllt und abgeschickt
ist
        $abfrage 
"SELECT email FROM newsletter ORDER BY id";
        
$ergebnis mysql_query($abfrage);
        while(
$row mysql_fetch_object($ergebnis))
        {
            
mail($row->email$_REQUEST["betreff"], $_REQUEST["text"], "From:
\""
.$_REQUEST["name"]."\" <".$_REQUEST["email"].">"); // E-Mail wird
verschickt
        
}
        echo 
"<br><br>Newsletter wurde verschickt<br><br>";
    }
?>
<form action="sendnewsletter.php" method=post>
    <b>Absender-Email:</b> <input type="text" name="email"><br />
    <b>Absender-Name:</b> <input type="text" name="name"><br />
    <b>Betreff:</b> <input type="text" name="betreff"><br />
    <b>Text:</b><textarea cols=40 rows=10></textarea><br />
    <input type="submit" value="Newsletter Versenden" name="submit">
</form>


Mit dieser Datei könnt ihr E-Mails an alle E-Mailadressen in eurer Liste schicken ^^

Das wars auch schon das ergebnis könnt ihr HIER downloaden.



3 Kommentare




irgendwie klappt da sbei mir nicht....es wird nur alles gelöscht, wenn ich was bei sendnewsletter.php eintragen möchte, und es erscheint nicht "newsletter versendet"..
am 14.08.2007 um 19:38 Uhr


Ela

Ziemlich unsichere Sache. Stell dir vor, ich trag dich einfach mit sumsebiene ein... Dann bekommst du ständig Newsletter, die du gar nicht willst. Das Ganze könnte man erweitern mit 'nem Link in der E-Mail (Newsletter). Der Link weißt dann auf 'ne Datei "del_letterabo.php?id=45 (oder email=die@mail.com)" mit dem Text "Wenn du diesen Newsletter nicht bestellt hast, klicke auf diesen Link... Und dann löscht die del_letterabo.php die E-Mailadresse wieder raus.
Mit der ID wäre das natürlich eindeutiger, aber wenn jemand Ahnung und Langeweile hat, kann man dann von 1 bis unendlich hochgehen und alles löschen...
Vielleicht solltest du das nochmal in Augenschein nehmen und das Script verbessern. (:
Ansonsten weiter so! <:
am 21.08.2007 um 01:22 Uhr


CrazyMoFu

Wenn man es in das Login-Script macht mit "hohlemail" oder so also das die e-mail des angemeldeten users automatisch aus der datenbank in das script geht und dann so checkboxen mit abbestellen und bestellen wäre es doch besser aber ich wüsste jetzt nicht wie man das macht...
am 27.01.2010 um 20:46 Uhr