Warum kostenlos registrieren?

Nur als registriertes Mitglied hast Du vollen Zugriff auf alle Funktionen unserer Website. So kannst Du eigene Fragen stellen und hast die volle Übersicht über neue interessante Themen im Forum.
Jetzt kostenlos registrieren.

Login


PHP - einfaches Newsletterscript

Vorschläge für Artikel hier posten.

PHP - einfaches Newsletterscript

Beitragvon FireFoxFan am 27.10.2007, 16:54

Ich weiß nicht ob es jemanden interessiert, ich habe vor einiger Zeit mal ein PHP-Script zum Newsletter verschicken geschrieben.
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
FireFoxFan
 
Beiträge: 172
Registriert: 23.04.2006, 10:40



Ähnliche Themen


Zurück zu Artikeleingang

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste