Script Newsletteranmeldung

Erster Programmteil für die Newsletter-Bestellung

PHP-Quellcode: Beispielscriüpt Newsletteranmeldung
<?php
define ("ZEILENUMBRUCH", "\r\n");
// 1. Schritt: Formularerstellung,
// 2. Schritt: Kontrolle und
// 2.5 Speicherung der eingegebenen Daten
// 3. Schritt: E-Mail erstellen und versenden,
// 4. Schritt: Kontrolle des letzten Anmeldeschritte
//    (Link in E-Mail Anklicken durch Bezieher).
 
// Zur Kontrolle von ?bergebenen Variablen
// echo "<pre>";
// print_r ($_GET);
 
// Schritt 2: Kontrolle, ob Formular ausgef?llt wurde
if ( $_GET['aktion']        <> 'form_ausg' OR
     $_GET['emailadresse']  == "" OR
     $_GET['einverstanden'] <> "v"
   )
{
    // Schritt 1: Formular anzeigen
    formular_erstellen ( $_GET['emailadresse'],
                         $_GET['gender'],
                         $_GET['vorname'],
                         $_GET['nachname'],
                         $_GET['einverstanden'] );
 
}
else
{
    echo "<h1>Best?tigungs-Mail erstellt</h1>";
 
    // erstellen der Kontrollzahl
    $kontrollzahl = date("syhdim");
 
    // Schritt 2.5: Speichern der eingegeben Daten
    speichern_datei ( $_GET['emailadresse'],
                         $_GET['gender'],
                         $_GET['vorname'],
                         $_GET['nachname'],
                         $kontrollzahl  );
 
    // E-Mail senden mit Funktion
    mail_zur_kontrolle ( $_GET['emailadresse'],
                         $_GET['gender'],
                         $_GET['vorname'],
                         $_GET['nachname'],
                         $kontrollzahl  );
 
}
 
function speichern_datei  ($emailadresse = "",
                           $gender="",
                           $vorname="",
                           $nachname="",
                           $kontrollzahl="" )
 
{
    $handle = fopen ( "nl-anwaerter.txt", "a" );
 
    // schreiben des Inhaltes von emailadresse
    fwrite ( $handle, $emailadresse );
 
    // Trennzeichen einf?gen, damit Auswertung m?glich wird
    fwrite ( $handle, "|" );
 
    // schreiben des Inhalts von gender
    fwrite ( $handle, $gender );
    fwrite ( $handle, "|" );
 
    // schreiben des Inhalts von vorname
    fwrite ( $handle, $vorname );
    fwrite ( $handle, "|" );
 
    // schreiben des Inhalts von vorname
    fwrite ( $handle, $nachname );
    fwrite ( $handle, "|" );
 
    // schreiben des Inhalts der Kontrollzahl
    fwrite ( $handle, $kontrollzahl );
 
    fwrite ( $handle, "\r\n" );
 
    // Datei schlie?en
    fclose ( $handle );
}
 
 
function mail_zur_kontrolle ($email, $gender, $vorname,
                             $nachname, $kontrollzahl )
{
 
    if ( $gender == "w")
    {
        $mailtext = "Sehr geehrte Frau $vorname $nachname,";
    }
    elseif ( $gender == "m" )
    {
        $mailtext = "Sehr geehrte Herr $vorname $nachname,";
    }
    else
    {
        $mailtext = "Hallo $vorname $nachname,";
    }
    $mailtext .= ZEILENUMBRUCH;
    $mailtext .= ZEILENUMBRUCH;
 
    $mailtext .= "Sie haben den Newsletter von ... bestellt. ";
    $mailtext .= "Um sicherzustellen, dass die E-Mail-Adresse ";
    $mailtext .= "funktioniert und Sie den Newsletter erhalten ";
    $mailtext .= "m?chten, klicken Sie bitte auf folgenden Link:";
    $mailtext .= ZEILENUMBRUCH;
    $mailtext .= ZEILENUMBRUCH;
    $mailtext .= 'http://localhost/newsletter-freischalten.php';
    $mailtext .= '?mail=';
    $mailtext .= $email;
    $mailtext .= '&id=';
    $mailtext .= $kontrollzahl;
    $mailtext .= ZEILENUMBRUCH;
    $mailtext .= ZEILENUMBRUCH;
    $mailtext .= "Wenn Sie den Newsletter nicht angefordert haben,";
    $mailtext .= "entschuldigen Sie bitte diese E-Mail. ";
    $mailtext .= "Dann hat sich wahrscheinlich jemand vertippt. ";
    $mailtext .= "Ignorieren Sie einfach die Mail ";
    $mailtext .= "und l?schen Sie diese.";
 
    // Nur zur Kontrolle beim Programmieren, ob E-Mail-Text
    // sauber zusammengestellt wird
    echo '<textarea name="" rows="10" cols="80">';
    echo $mailtext;
    echo "</textarea>";
 
    mail ($email,
          "Kontrolle E-Mail-Adresse Newsletter XYZ",
          $mailtext,
          "From: axel@example.com\nReply-To: axel@example.com"
          );
}
 
 
 
 
function formular_erstellen ($emailadresse = "",
                             $gender="",
                             $vorname="",
                             $nachname="",
                             $einverstanden="" )
{
    echo '<form name="" action="';
    echo $_SERVER['PHP_SELF'];
    echo '" method="GET" enctype="text/html">';
 
    echo '<p>';
    echo 'Ihre E-Mail-Adresse:<br />';
    echo '<input type="Text" name="emailadresse" value="';
    // Inhalt, falls das Formular bereits unvollst?ndig
    // ausgef?llt wurde (also zweiter Aufruf)
    echo $emailadresse;
    echo '" size="50">';
    echo '</p>';
 
    echo '<p>';
    echo 'Anrede: (optional)<br>';
    echo '<input type="Radio" name="gender" value="w" ';
    // Inhalt, falls das Formular bereits unvollst?ndig
    // ausgef?llt wurde (also zweiter Aufruf)
    if ( $gender == "w")
    {
        echo 'checked="checked" ';
    }
    echo '/>';
    echo 'Frau   ';
 
    echo '<input type="Radio" name="gender" value="m" ';
    // Inhalt, falls das Formular bereits unvollst?ndig
    // ausgef?llt wurde (also zweiter Aufruf)
    if ( $gender == "m")
    {
        echo 'checked="checked" ';
    }
    echo '/>';
    echo 'Mann';
    echo '</p>';
 
    echo '<p>';
    echo 'Vorname: (optional)<br />';
    echo '<input type="Text" name="vorname" value="';
    // Inhalt, falls das Formular bereits unvollst?ndig
    // ausgef?llt wurde (also zweiter Aufruf)
    echo $vorname;
    echo '" size="" />';
    echo '</p>';
 
    echo '<p>';
    echo 'Nachname: (optional)<br />';
    echo '<input type="Text" name="nachname" value="';
    // Inhalt, falls das Formular bereits unvollst?ndig
    // ausgef?llt wurde (also zweiter Aufruf)
    echo $nachname;
    echo '" size="" />';
    echo '</p>';
 
    echo '<p>';
    echo '<input type="Checkbox" name="einverstanden" value="v"> ';
    echo 'hiermit bin ich einverstanden, dass meine Daten ';
    echo 'elektronisch gespeichert werden, damit mir die';
    echo 'gew?nschte Newsletter zugestellt werden kann ...';
    echo '(gesetzliches Blahblah zum Datenschutz und Speicherung';
    echo 'der Daten ....)';
    echo '</p>';
 
    echo '<input type="hidden" name="aktion" value="form_ausg" />';
 
    echo '<p>';
    echo '<input type="Submit" value="speichern">';
    echo '</p>';
    echo '</form>';
}
?>

Der Programmteil newsletter-freischalten.php zum überprüfen der Rückmeldung

PHP-Quellcode: Newsletter freischalten
<?php
// newsletter-freischalten.php
 
// ?bergebene Daten anzeigen zur Kontrolle beim Programmieren
// sp?ter ausblenden !
echo "<pre>";
print_r ( $_GET );
 
 
// Datei ?ffnen zum Lesen
$handle = fopen ("nl-anwaerter.txt", "r");
 
while ( $inhalt = fgets ($handle, 4096 ))
{
  $inhalt = trim ( $inhalt );
  echo "<li> |". $inhalt ."| </li>";
 
  list($email, $gender, $vorname, $nachname, $kontrollzahl) =
    split("\|", $inhalt, 5);
 
  echo "<li>$email, $gender, $vorname, $nachname, $kontrollzahl</li>";
 
  if ( $email == $_GET['mail'] AND $kontrollzahl == $_GET['id'])
  {
        echo "<h1>Sie wurden freigeschaltet</h1>";
        speichern ($email, $gender, $vorname, $nachname, $kontrollzahl);
  }
}
 
fclose($handle);
 
 
function speichern ($email, $gender, $vorname, $nachname, $kontrollzahl)
{
    $handle = fopen ( "nl-bestaetigt.txt", "a" );
 
    // schreiben des Inhaltes von emailadresse
    fwrite ( $handle, $email );
 
    // Trennzeichen einf?gen, damit Auswertung m?glich wird
    fwrite ( $handle, "|" );
 
    // schreiben des Inhalts von gender
    fwrite ( $handle, $gender );
    fwrite ( $handle, "|" );
 
    // schreiben des Inhalts von vorname
    fwrite ( $handle, $vorname );
    fwrite ( $handle, "|" );
 
    // schreiben des Inhalts von vorname
    fwrite ( $handle, $nachname );
    fwrite ( $handle, "|" );
 
    // schreiben des Inhalts der Kontrollzahl
    fwrite ( $handle, $kontrollzahl );
 
    fwrite ( $handle, "\r\n" );
 
    // Datei schlie?en
    fclose ( $handle );
}
?>