Newsletter-System



  • DAS ICH schrieb:

    Eigentlich wollte ich mir das Ding selber schreiben...aber das klingt recht umfangreich.

    Isses aber ganz und gar nicht. Am besten du lädst dir erst mal die Dokumentation von php.net runter. Eliste hat die grobe Strucktur schon ganz gut beschrieben. Versuch das doch erst mal irgendwie umzusetzen und wenn du Fragen hast kannst du sie doch hier stellen, ich werde sie gerne beantworten 😉 !



  • <html> 
      <head> 
        <title>Newsletter</title> 
      </head> 
      <body> 
        <?php 
    if (($action=="eintragen" || $action=="austragen") && strlen($mail)>0) 
    { 
      $mail=strtolower($mail); 
      //EMail auf Fehler untersuchen 
      $error=false; 
      $at=false; 
      for ($i=0;$i<strlen($mail);++$i) 
      { 
        if (!(
             ($mail[$i]>='0' && $mail[$i]<='9') 
        ||   ($mail[$i]>='a' && $mail[$i]<='z')
        ||   $mail[$i]=='.' 
        ||   $mail[$i]=='_' 
        ||   $mail[$i]=='-' 
        ||   $mail[$i]=='@')) 
        { 
          $error=true; 
          break; 
        } 
        if ($mail[$i]=='@') 
        { 
          if ($at) 
          { 
            $error=true; 
            break; 
          } 
          $at=true; 
        } 
      } 
      //Wenn kein Fehler gefunden, dann eintragen 
      if (!$error && $at) 
      { 
        //Textdatei oeffnen und auslesen 
        $handle=fopen("liste.txt","r"); 
        $list=fread($handle,filesize("liste.txt")); 
        fclose($handle); 
    
        if ($action=="eintragen")
        {
          //EMailadresse hinzufuegen 
          if ($list!="") 
            $list.="|"; 
          $list.=$mail; 
        }
        else
        {
          //EMailadresse loeschen 
          $list=preg_replace("\n".$mail,"",$list); 
          $list=preg_replace($mail,"",$list); 
        }
    
        //Liste neu eintragen 
        $handle=fopen("liste.txt","w"); 
        fwrite($handle,$list); 
        fclose($handle); 
        print "Sie wurden erfolgreich ";
        if ($action=="eintragen") echo "ein";
        else echo "aus";
        echo "getragen."; 
      } 
      else 
      { 
        print "Die EMailadresse ist ungültig.";
      } 
    } 
    else if ($action=="senden" && strlen($msg)>0 && strlen($sub)>0) 
    { 
      //Textdatei oeffnen und auslesen 
      $handle=fopen("liste.txt","r"); 
      $list=fread($handle,filesize("liste.txt")); 
      fclose($handle); 
    
      //EMail senden 
      $mail_list=explode("|",$list); 
      for ($i=0;$i<count($mail_list);++$i) 
        mail($mail_list[$i],$sub,$msg,"From: mail@domain.de"); 
    
      print "Newsletter wurde erfolgreich gesendet."; 
    } 
    else if ($action=="schreiben")
    {
      ?><form action=?action=senden method=post> 
        <table> 
          <tr> 
            <td>Betreff:</td> 
            <td><input type=text name=sub /></td> 
          </tr> 
          <tr>
            <td>Nachricht:</td>
            <td><textarea name=msg></textarea></td>
          </tr>
          <tr> 
            <td colspan=2><center><input type=submit value="Senden" /></center></td> 
          </tr> 
        </table> 
        </form>
    <?php
    }
    else 
    { 
      ?><form action=? method=post> 
        <table> 
          <tr> 
            <td>EMail:</td> 
            <td><input type=text name=mail /></td> 
          </tr> 
          <tr>
            <td colspan=2>
              <select name=action>
                <option value="eintragen">Eintragen</option>
                <option value="austragen">Austragen</option>
              </select>
            </td>
          </tr>
          <tr> 
            <td colspan=2><center><input type=submit value="   OK   " /></center></td> 
          </tr> 
        </table> 
        </form> 
    <?php 
    } 
    ?>  </body> 
    </html>
    


  • Für das überpfrüfen auf eine gültige E-Mail-Adresse eignet sich aber wohl ein regulärer Ausdruck besser 😉



  • Genial, Danke!

    Jetzt hab ich schon mal einen Ansatzpunkt. Mal sehen, wie sich das noich ausbauen lässt!

    Danke an Alle!

    Liebe Grüße, ICH



  • Hmm, war noch nicht fertig... kopier sie dir jetzt nochmal, jetzt kannst du mit der selben datei alles machen: schreiben, eintragen, austragen und senden. hab das schreiben vorhin vergessen, aber jetzt ist es drin. Ist der Beitrag FAQ-fähig? *fg*

    MfG Windoof



  • Erstens finde ich den Thread thematisch nicht unbedingt etwas für die FAQ und zweitens finde ich deinen Quellcode nicht gerade gut 🙄 - sorry 🕶



  • *heul* Was findest du daran nicht gut? - Ich kann's ändern.



  • 1.) Attribute nicht in "" eingeschlossen
    2.) Bei Links oft nur die Parameter angegeben angegeben
    3.) Schlechte Überprüfung der E-Mail-Adresse - wenn überhaupt, dann gleich mein einem regulären Ausdruck
    4.) Due setzt voraus, dass register_globals auf on ist -> Nimm lieber das $_POST bzw. $_GET Array

    Das sind mal die Sachen, die mir so auf Anhieb einfallen 😃



  • 1.) Müssen sie auch nicht, das ist JEDEM Browser egal.
    2.) Nur bei <form>, und wenn man nichts als Datei angibt, nimmt der Browser automatisch die momentane Datei.
    3.) Wieso, funzt doch einwandfrei, habs ja getestet.
    4.) Kann man auch machen, oder aber selbst globale variablen anschalten. Ich habe es deshalb vorausgesetzt, weil es den Quelltext am verständlichsten macht.



  • hi

    schließe mich trotzdem flenders meinung an: in die faq gehören eigentlich keine fertigen skripte.
    das sähe dann so aus, als ob es nur eine lösung für das jeweilige problem gibt.

    ich finde, es sollten kleine besonderheiten in die faq, rund um web, gerne auch kleine lösungsteile für wiederkehrende fragen, aber eben nicht irgendein skript. das ist einfach zu speziell.

    im zeitalter von pear, classes zum download und massen sonstiger skripte findet eigentlich jeder ein skript für sein problem.

    interessanter fände ich in richtung php solche dinge wie in php.net immer als weitere lösungen unten an den funktionen hängen.. eben besonderheiten.


Anmelden zum Antworten