#!/usr/bin/perl # ########################################################################### # # jsNews - Newsletter-Verwaltung # Newsletter mit Userbereich und bis zu 20 unabhängigen Anmeldungen # # PlainText-Datenbank Version # ########################################################################### # Letzte Änderung: 6. Mai 2007 # Autor: Jürg Sommer ########################################################################### use strict; use CGI::Carp qw(fatalsToBrowser set_message); BEGIN { sub handle_errors { my $msg = shift; my $AdminURL="cgiscript4free\@email.com"; $msg=~ s/\n/
\n/g; print <Tiger Dental - 500 Interner Server Fehler

HTTP Error 500

HTTP Fehler 500 - Interner Serverfehler
Es ist ein Fehler aufgetreten. Wir werden die Störung baldmöglichst beheben und entschuldigen uns für die Unannehmlichkeit.
Sollte dieses Problem weiterhin auftreten, so bitten wir sie, den Administrator zu kontaktieren: $AdminURL

HTTP Error 500 - Internal Server Error
An error occurred when you requested this page. We will work to correct the problem and apologize for the inconvenience.
If this problem persists, please contact the administrator: $AdminURL

HTTP Erreur 500 - server erreur
Une erreur s´est produite dans cette page. Nous chercherons à régler ce problème le plus vite possible. Veuillez nous excuser pour cette inconvénience.
Si se problème persiste, contactez le webmaster: $AdminURL



Additional information:
$msg


Wenn Sie wegen diesem Fehler cgicorner.ch um Hilfe bitten, senden Sie unbedingt die unter "Additional information" aufgeführten Informationen mit.
Der Autor bietet keinen garantierten Installations-Support. Soweit es aber zeitlich möglich ist, wird sicher geholfen.

If you contact cgicorner.ch about this problem, please add the "Additional informations" to your mail.
There is no installation support by the author. But if possible, the author will help you.
HTMLtext } set_message(\&handle_errors); } ########################################################################### # Variablen ########################################################################### # Versionsinformationen my $version="2.01"; my $lastMod="6. Mai 2007"; # Variable: $mailVersand # Definiert, ob Mails versendet oder als EML-Datei gespeichert werden sollen. # FALSE: Alle Mails werden als .eml gespeichert / TRUE: Versand via sendmail my $mailVersand="TRUE"; # Variable: %CONFIG # Hash mit Konfigurationsparametern my %CONFIG; # Variable: %FORM # Enthält alle Formular-Parameter (GET oder POST); generiert von my %FORM; # Variable: %COOKIE # Enthält alle Cookies; generiert von my %COOKIE; # Variable: %DATA # Enthält Session-Informationen; generiert von my %DATA; # Variable: $mailDate # Datum in offiziellem Format für Mailheader my $mailDate; # Variable: $mailDate2 # Datum in offiziellem Format für Mailboundary my $mailDate2; # Variable: $COMPCGIURL # Kompletter Pfad zum CGI-Script my $COMPCGIURL=""; if ($ENV{"SERVER_PORT"} == 443) { $COMPCGIURL="https://"; } else { $COMPCGIURL="http://"; } $COMPCGIURL.=$ENV{'HTTP_HOST'}.$ENV{'SCRIPT_NAME'}; my $COMPCGIPATH=$COMPCGIURL; $COMPCGIPATH=~m/(.*[\/\\]).+/g; $COMPCGIPATH=$1; # Variable: $CheckNewVersionURL # URL für Online Versions-Check; Weitere Informationen siehe Installations-Anleitung my $CheckNewVersionURL="http://www.cgicorner.ch/cgi-bin/vercheck/vercheck.cgi?product=jsnews&version=$version&lastmod=$lastMod"; $CheckNewVersionURL=~ s/\s/%20/g; # Weitere Variablen (temporär) my ($i, $status, $sysMsg, %dbContent, %userData, @splitArray); my ($tmp, $tmp1, @DATABASE, @FILEDATA, @FILEDATA1, @dbRecords, $color); my (%USERDATA, $expDate, $filename); my $configFile="config.pl"; # Konfigurationsdatei &readForm; # Formulardaten in %FORM einlesen &readConfig; # Konfiguration in %CONFIG einlesen &readDataFile; # Datendatei einlesen my $serverTime = time+$CONFIG{timeZone}*3600; # Zeitverschiebung Server <-> Wohnort &setMailTime; # Zeit für Mail setzen my $messageID="<$mailDate2.".&makeBoundary(14)."\@$ENV{HTTP_HOST}>"; my $numbOfNewsl=20; # Anzahl maximaler Newsletter (Änderung nur durch Entwickler!!!) ########################################################################### # ADMIN - Login für Administration ########################################################################### if ($FORM{"action"} eq "admin") { &HTMLbegin; print "

Login

\n"; if ($FORM{"error"} eq "WrongPass") { # Log-Eintrag wegen falschem Passwort print "

Login failed! Benutzername und/oder Kennwort falsch
Achtung: fehlerhafte Login-Versuche werden protokolliert!

\n"; &errorLog("login failed (wrong pass)\nUser: $FORM{user}\nPass: $FORM{pass}\nASID: $FORM{ASID}\nIP: $ENV{REMOTE_ADDR}"); } if ($FORM{"error"} eq "WrongReferer") { # Log-Eintrag wegen falschem Referer print "

Was erwarten Sie jetzt? Ich beglückwünsche Sie zu Ihrer Freizeit. Haben Sie nichts besseres zu tun, als hier Versuche zu starten?
Wenn Sie diesen Dienst nutzen wollen, so verwenden Sie ihn bitte wie vorgesehen...

\n"; &errorLog("login failed (wrong referer)\nUser: $FORM{user}\nPass: $FORM{pass}\nASID: $FORM{ASID}\nIP: $ENV{REMOTE_ADDR}"); } print <
  Bitte geben Sie Ihre Benutzerdaten ein
           
Benutzername    
Passwort
 
 
HTMLtext if (-e "update.cgi") { print "

Achtung: Die Datei update.cgi befindet sich noch auf dem Server! Mit dieser Datei sind Änderungen der Konfiguration durch unberechtigte Drittpersonen möglich. Löschen Sie diese Datei aus Sicherheitsgründen von Ihrem Server.

"; } if (-e "jsdiag.cgi") { print "

Achtung: Die Datei jsdiag.cgi befindet sich noch auf dem Server! Mit dieser Datei sind Änderungen der Konfiguration durch unberechtigte Drittpersonen möglich. Löschen Sie diese Datei aus Sicherheitsgründen von Ihrem Server.

"; } if (-e "switch.cgi") { print "

Achtung: Die Datei switch.cgi befindet sich noch auf dem Server! Mit dieser Datei sind Änderungen der Konfiguration durch unberechtigte Drittpersonen möglich. Löschen Sie diese Datei aus Sicherheitsgründen von Ihrem Server.

"; } &HTMLend; exit(0); } ########################################################################### # MAIN - Hauptmenü ########################################################################### if ($FORM{"action"} eq "main") { if ($FORM{"frompage"} eq "login") { # Wenn via Hauptseite --> Passwort checken $FORM{"pass1"}=$FORM{"pass"}; $FORM{"pass"}=crypt($FORM{"pass"},"js".$FORM{"pass"}) unless ($FORM{"pass"} eq ""); if (($FORM{"user"} eq $CONFIG{"user"}) and ($FORM{"pass"} eq $CONFIG{"pass"})) { $DATA{"ASID"}=$FORM{"ASID"}=$serverTime; # ASID generieren &saveDataFile; print "Set-Cookie: UserName=".&jsCrypt($FORM{"user"},"COOKIEcrypt")."; expires=".&mygmtime($serverTime+(86400*30)).";\n"; # Cookies schreiben print "Set-Cookie: Password=".&jsCrypt($FORM{"pass1"},"COOKIEcrypt")."; expires=".&mygmtime($serverTime+(1800)).";\n"; } else { &forbidden("WrongPass"); } } if ($ENV{"HTTP_REFERER"} !~ m/$COMPCGIURL/i) { &forbidden("WrongReferer"); } else { if (($FORM{"ASID"} ne $DATA{"ASID"}) or ($ENV{"HTTP_REFERER"} !~ m/$COMPCGIURL/i)) { &forbidden("WrongReferer"); } } $sysMsg=""; if ($CONFIG{"pass"} eq "") { # Kein Passwort gesetzt $sysMsg="
Sicherheitsrisiko: Noch kein Admin-Passwort gesetzt!\n"; } &HTMLbegin; print <Hauptmenü

Datenbank

Einstellungen

temp. Datenbank temporäre Datenbank ansehen und Einträge daraus löschen Login-Daten ändern Benutzername und Passwort für Login in den Administrationsbereich ändern. $sysMsg
 
Datenbank Einzelne Benutzer und deren Daten und abonnierte Newsletter verwalten oder löschen System Einstellungen ändern Systemeinstellungen und Dateipfade ändern.
 
Mail versenden Mail an eine Gruppe oder alle Personen versenden Template Pfade Pfade der Templates und Fehlertexte konfigurieren
 
Adressen im-/exportieren Import von Newsletter-Abonnenten oder Exportieren und downloaden der Abonnenten einer oder aller Newsletter Newsletter Namen und Status der Newsletter konfigurieren / Extra-Felder konfigurieren
 
    Templates editieren Templates der einzelnen Benutzerseiten anzeigen und editieren
HTMLtext &HTMLend; exit(0); } ########################################################################### # LOGINDATA - Benutzername und Passwort für Login ändern ########################################################################### if ($FORM{"action"} eq "logindata") { &checkASID; &HTMLbegin; print <Login Daten ändern
HTMLtext print &inputField("Benutzername", "user", $CONFIG{user}, "","160var", "Y"); print &inputField("Neues Passwort", "pass1", $CONFIG{X}, "","160varpass","Y"); print &inputField("Neues Passwort (nochmals)","pass2", $CONFIG{X}, "","160varpass","Y"); print <
 
HTMLtext &HTMLend; exit(0); } ########################################################################### # LOGINDATASAVE - Benutzername und Passwort für Login ändern (speichern) ########################################################################### if ($FORM{"action"} eq "logindatasave") { &checkASID; &HTMLbegin; if ($FORM{"pass1"} eq $FORM{"pass2"}) { print "

Login Daten ändern > Daten gespeichert

"; print "Die neuen Login-Daten wurden erfolgreich gespeichert."; $CONFIG{"pass"}=""; $CONFIG{"pass"}=crypt($FORM{"pass1"},"js".$FORM{"pass1"}) unless ($FORM{"pass1"} eq ""); $CONFIG{"user"}=$FORM{"user"}; &saveConfig; } else { print "

Login Daten ändern > Daten nicht gespeichert

"; print "Die neuen Login-Daten wurden nicht gespeichert, da Passwort und Passwortbestätigung nicht identisch waren.

\n"; print "zurück"; } &HTMLend; exit(0); } ########################################################################### # SETTINGS - System Einstellungen ########################################################################### if ($FORM{"action"} eq "settings") { &checkASID; &HTMLbegin; print "

System Einstellungen ändern

\n"; print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print &inputField("Pfad zu sendmail", "sendmail", "$CONFIG{sendmail}", "","300var","Y"); print &inputField("Zeitverschiebung", "timeZone", "$CONFIG{timeZone}", "Server <--> Wohnort (in Stunden)","300var","Y"); print &inputField("Error-Datei", "errorFile","$CONFIG{errorFile}","UNIX-Pfad", "300var","Y"); print &inputField("Daten-Datei (temporär)", "dataFile", "$CONFIG{dataFile}", "UNIX-Pfad", "300var","Y"); print &inputField("Datenbank", "database", "$CONFIG{database}", "UNIX-Pfad", "300var","Y"); print &inputField("gespeicherte Newsletter", "saveNews", "$CONFIG{saveNews}", "UNIX-Pfad", "300var","Y"); print &inputField("Copyright", "copyright","$CONFIG{copyright}", "","300var","Y"); print "\n"; print &inputField("System: Absender System-Mails", "sysMail","$CONFIG{sysMail}","","300var","Y"); print &inputField("X-Mailer beim Newsletterversand", "XMailer", "$CONFIG{XMailer}", "","300var","Y"); print &inputField("Abo-Mutationen per Mail an", "newsNoti", "$CONFIG{newsNoti}", "leer=keine Benachrichtigung","300var","Y"); print &inputField("max. Newsletter bis Refresh", "newRefr", "$CONFIG{newRefr}", "","300var","Y"); print &inputField("Gesperre Newsletter-Empfänger", "blockRcpt","$CONFIG{blockRcpt}","Perl-Regex","300var","Y"); print "\n"; print &inputField("CSS Stylesheet Adminbereich", "CSS", "$CONFIG{CSS}", "[UNIX-Pfad]","300var","Y"); print &inputField("Bilder-Verzeichnis", "imgDir", "$CONFIG{imgDir}", "mit abschliessendem / [Browserpfad]","300var","Y"); print &inputField("Administrationslogo", "admiLogo", "$CONFIG{admiLogo}", "relativ zu Bilder-Verz. [Browserpfad]","300var","Y"); print &inputField("Trennlinie", "lineGIF", "$CONFIG{lineGIF}", "relativ zu Bilder-Verz. [Browserpfad]","300var","Y"); print &inputField("zum Hauptmenü GIF (aktiv)", "backGifA", "$CONFIG{backGifA}", "relativ zu Bilder-Verz. [Browserpfad]","300var","Y"); print &inputField("zum Hauptmenü GIF (inaktiv)", "backGifI", "$CONFIG{backGifI}", "relativ zu Bilder-Verz. [Browserpfad]","300var","Y"); print &inputField("nach oben GIF (aktiv)", "topGifA", "$CONFIG{topGifA}", "relativ zu Bilder-Verz. [Browserpfad]","300var","Y"); print &inputField("nach oben GIF (inaktiv)", "topGifI", "$CONFIG{topGifI}", "relativ zu Bilder-Verz. [Browserpfad]","300var","Y"); print &inputField("nach unten GIF (aktiv)", "bottGifA", "$CONFIG{bottGifA}", "relativ zu Bilder-Verz. [Browserpfad]","300var","Y"); print &inputField("nach unten GIF (inaktiv)", "bottGifI", "$CONFIG{bottGifI}", "relativ zu Bilder-Verz. [Browserpfad]","300var","Y"); print &inputField("Login-GIF", "loginGIF", "$CONFIG{loginGIF}", "relativ zu Bilder-Verz. [Browserpfad]","300var","Y"); print &inputField("Logout-GIF", "logoutGIF","$CONFIG{logoutGIF}","relativ zu Bilder-Verz. [Browserpfad]","300var","Y"); print &inputField("Schlüssel (Login)", "keysImg", "$CONFIG{keysImg}", "relativ zu Bilder-Verz. [Browserpfad]","300var","Y"); print &inputField("Edit-Gif", "editGIF", "$CONFIG{editGIF}", "relativ zu Bilder-Verz. [Browserpfad]","300var","Y"); print &inputField("OK-GIF", "OKGIF", "$CONFIG{OKGIF}", "relativ zu Bilder-Verz. [Browserpfad]","300var","Y"); print &inputField("Nicht-OK-GIF", "NOTOKGIF", "$CONFIG{NOTOKGIF}", "relativ zu Bilder-Verz. [Browserpfad]","300var","Y"); print &inputField("HTML-Gif", "htmlGIF", "$CONFIG{htmlGIF}", "relativ zu Bilder-Verz. [Browserpfad]","300var","Y"); print &inputField("Mail-Gif", "mailGIF", "$CONFIG{mailGIF}", "relativ zu Bilder-Verz. [Browserpfad]","300var","Y"); print "\n"; print &yesNoRadio("HTML-Editor TinyMCE", "htmlEdt", "$CONFIG{htmlEdt}", "Y","Ja, bei unterstützen Browsern (IE, Mozilla/Firefox)","N","Nein","","Y"); print &inputField("Pfad zu TinyMCE", "htmlMCE", "$CONFIG{htmlMCE}", "[Browserpfad]","300var","Y"); print &inputField("CSS für HTML-Editor", "htmlCSS", "$CONFIG{htmlCSS}", "[Browserpfad]","300var","Y"); print &inputField("CSS für HTML-Editor", "htmlCSU", "$CONFIG{htmlCSU}", "[UNIX-Pfad]","300var","Y"); print "\n"; print &inputField("Export Pfad Browser", "ExportHTML","$CONFIG{ExportHTML}","abschliessender \"/\" [Browserpfad]","300var","Y"); print &inputField("Export Pfad UNIX", "ExportUnix","$CONFIG{ExportUnix}","abschliessender \"/\" [Unix-Pfad]","300var","Y"); print "\n"; print "\n"; print "
 
 
 
 
 
 
\n
\n"; &HTMLend; exit(0); } ########################################################################### # TEMPLATEPATH - Template Pfade ########################################################################### if ($FORM{"action"} eq "templatepath") { &checkASID; &HTMLbegin; print "

Template-Pfade konfigurieren

\n"; print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print &inputField("Template: An- und Abmeldung", "TempAnAbmeldung", "$CONFIG{TempAnAbmeldung}", "[Unix-Pfad]","300var","Y"); print &inputField("Template: Anmeldung: Bestätigung 1", "TempAnmeldung1", "$CONFIG{TempAnmeldung1}", "[Unix-Pfad]","300var","Y"); print &inputField("Template: Anmeldung: Bestätigung 1 (Mail)","TempAnmeldungM1", "$CONFIG{TempAnmeldungM1}", "[Unix-Pfad]","300var","Y"); print &inputField("Template: Anmeldung: Bestätigung 2", "TempAnmeldung2", "$CONFIG{TempAnmeldung2}", "[Unix-Pfad]","300var","Y"); print &inputField("Template: Anmeldung: Bestätigung 2 (Mail)","TempAnmeldungM2", "$CONFIG{TempAnmeldungM2}", "[Unix-Pfad]","300var","Y"); print &inputField("Template: Anmeldung: bereits angemeldet", "TempAlreadySubscribed","$CONFIG{TempAlreadySubscribed}","[Unix-Pfad]","300var","Y"); print &inputField("Template: Abmeldung: Bestätigung 1", "TempAbmeldung1", "$CONFIG{TempAbmeldung1}", "[Unix-Pfad]","300var","Y"); print &inputField("Template: Abmeldung: Bestätigung 1 (Mail)","TempAbmeldungM1", "$CONFIG{TempAbmeldungM1}", "[Unix-Pfad]","300var","Y"); print &inputField("Template: Abmeldung: Bestätigung 2", "TempAbmeldung2", "$CONFIG{TempAbmeldung2}", "[Unix-Pfad]","300var","Y"); print &inputField("Template: Abmeldung: Bestätigung 2 (Mail)","TempAbmeldungM2", "$CONFIG{TempAbmeldungM2}", "[Unix-Pfad]","300var","Y"); print &inputField("Template: Abmeldung: nicht angemeldet", "TempNotSubscribed", "$CONFIG{TempNotSubscribed}", "[Unix-Pfad]","300var","Y"); print &inputField("Template: Usercenter - Login", "TempUsercenterLogin", "$CONFIG{TempUsercenterLogin}", "[Unix-Pfad]","300var","Y"); print &inputField("Template: Usercenter - Resend-ID (Mail)", "TempResendID", "$CONFIG{TempResendID}", "[Unix-Pfad]","300var","Y"); print &inputField("Template: Usercenter - Hauptbildschirm", "TempUsercenterMain", "$CONFIG{TempUsercenterMain}", "[Unix-Pfad]","300var","Y"); print &inputField("Template: Usercenter - Subpage 1", "TempUsercenterSub1", "$CONFIG{TempUsercenterSub1}", "[Unix-Pfad]","300var","Y"); print &inputField("Template: Usercenter - Subpage 2", "TempUsercenterSub2", "$CONFIG{TempUsercenterSub2}", "[Unix-Pfad]","300var","Y"); print &inputField("Template: Usercenter - Subpage 3", "TempUsercenterSub3", "$CONFIG{TempUsercenterSub3}", "[Unix-Pfad]","300var","Y"); print &inputField("Template: Usercenter - Subpage 4", "TempUsercenterSub4", "$CONFIG{TempUsercenterSub4}", "[Unix-Pfad]","300var","Y"); print &inputField("Template: Usercenter - Subpage 5", "TempUsercenterSub5", "$CONFIG{TempUsercenterSub5}", "[Unix-Pfad]","300var","Y"); print &inputField("Template: Usercenter - Subpage 6", "TempUsercenterSub6", "$CONFIG{TempUsercenterSub6}", "[Unix-Pfad]","300var","Y"); print &inputField("Template: Usercenter - Subpage 7", "TempUsercenterSub7", "$CONFIG{TempUsercenterSub7}", "[Unix-Pfad]","300var","Y"); print &inputField("Template: Usercenter - Subpage 8", "TempUsercenterSub8", "$CONFIG{TempUsercenterSub8}", "[Unix-Pfad]","300var","Y"); print &inputField("Template: Usercenter - Subpage 9", "TempUsercenterSub9", "$CONFIG{TempUsercenterSub9}", "[Unix-Pfad]","300var","Y"); print &inputField("Template: Usercenter - Subpage 10", "TempUsercenterSub10", "$CONFIG{TempUsercenterSub10}", "[Unix-Pfad]","300var","Y"); print &inputField("Template: Fehler", "TempError", "$CONFIG{TempError}", "[Unix-Pfad]","300var","Y"); print "\n"; print &inputField("Meldung: E-Mail Adresse geändert", "msgEmailChangedNewsletter","$CONFIG{msgEmailChangedNewsletter}","","300var","Y"); print &inputField("Meldung: E-Mail Adresse existiert nicht", "msgEmailNotExist","$CONFIG{msgEmailNotExist}","","300var","Y"); print &inputField("Meldung: ID per Mail versendet", "msgIDSent","$CONFIG{msgIDSent}","","300var","Y"); print &inputField("Meldung: E-Mail und ID passen nicht", "msgIDnotEmail","$CONFIG{msgIDnotEmail}","","300var","Y"); print &inputField("Meldung: Newsletter Status geändert", "msgNewsletter","$CONFIG{msgNewsletter}","","300var","Y"); print &inputField("Meldung: Pflichtfelder nicht ausgefüllt", "msgPflichtfelder","$CONFIG{msgPflichtfelder}","","300var","Y"); print &inputField("Meldung: Änderungen gespeichert", "msgSaved","$CONFIG{msgSaved}","","300var","Y"); print &inputField("Meldung: Status gewechselt", "msgStatus","$CONFIG{msgStatus}","","300var","Y"); print &inputField("Meldung: Fehler E-Mail Wechsel", "msgChangeMail","$CONFIG{msgChangeMail}","","300var","Y"); print "\n"; print "\n"; print "
 
 
 
\n
\n"; &HTMLend; exit(0); } ########################################################################### # SETTINGSSAVE - Einstellungen speichern ########################################################################### if ($FORM{"action"} eq "settingssave") { &checkASID; foreach (keys(%FORM)) { if (($_ ne "ASID") and ($_ ne "action") and ($_ ne "frompage") and ($_ ne "fromtext")) { $CONFIG{$_}=$FORM{$_}; } } &saveConfig; &HTMLbegin; print "

$FORM{fromtext} > Einstellungen speichern

\n"; print "Einstellungen erfolgreich gespeichert.\n"; &HTMLend; exit(0); } ########################################################################### # REGEX: Regular-Expressions Erklärung ########################################################################### if ($FORM{"action"} eq "regex") { &HTMLbegin; print <Regular Expressions in Kürze Perl Regular-Expressions dienen der Mustererkennung von Text-Feldern. Weiterführende Informationen findet man z.B. unter http://de.wikipedia.org/wiki/Reguläre_Ausdrücke. Nachfolgend sollten die wichtigsten Funktionen aufgeführt werden:
. Beliebiges Zeichen
\\d Ziffer (0-9), auch schreibbar als [0-9]
\\D Keine Ziffer (alles ausser 0-9), auch schreibbar als [^0-9]
\\w Alphanumerische Zeichen inkl. _ und Zahlen aber ohne Umlaute, auch schreibbar als [a-zA-z0-9_]
\\W Nicht-Alphanumerisches Zeichen, auch schreibbar als [^a-zA-Z0-9_]
\\s Leerzeichen und andere White-Spaces (\\n \\r \\t \\f [FormFeed]), auch schreibbar als [ \\t\\r\\n\\f]
\\S Kein Leerzeichen, auch schreibbar als [^ \\t\\r\\n\\f]
\\A oder ^ Beginn des Strings
\\Z oder \$ String-Ende
[] Auswahlmöglichkeiten einzelner Zeichen / ODER
(abc|def) Auswahlmöglichkeiten mehrer Zeichen / ODER (abc oder def)
\\. \\[ \\] \\( \\) \\{ \\} \\? \+ Die Zeichen . [ ] ( ) { } ? +
\\n \\t \\r \\f haben ihre normale Bedeutung (Zeilenumbruch, Tabulator, Carriage-Return, Form-Feed


Zudem gibt es noch spezielle Tags für Mengenangaben, wie oft ein Zeichen hintereinander vorkommen muss.
? Kein- oder einmal, {0,1}
* Keinmal bis beliebig oft {0,}
+ Ein- oder mehrmal {1,}
{7} siebenmal
{3,5} Drei- bis fünfmal
{4,} Viermal oder mehr


In ein paar praktischen Beispielen kann das wie folgt aussehen:
.{5} Wert muss 5 beliebige Zeichen enthalten
Hans.*Muster Muss die zwei Wörter "Hans" und "Muster" enthalten (zuerst Hans, dann Muster, dazwischen darf sich beliebiger Text befinden)
(Meer|Strand|Sand) Muss mindestens eines der erwähnten Wörter beinhalten
\\d{3}\\s\\d{2}\\s\\d{2} Muss eine Kombination wie "099 99 99" enthalten (Telefonnummer, Block mit 3, 2 und 2 Zahlen, dazwischen jeweils ein Leerzeichen
[12]?\\d?\\d\\.[12]?\\d?\\d\\.[12]?\\d?\\d\ Muss eine IP-Adresse enthalten
^Ich.*!\$ Text muss mit "Ich" beginnen und "!" enden


[ Fenster schliessen ] HTMLtext &HTMLend; exit(0); } ########################################################################### # NEWSLETTER - Konfiguration der Namen und Status der Newsletter ########################################################################### if ($FORM{"action"} eq "newsletter") { &checkASID; &HTMLbegin; print "

Newsletter

\n"; print "
\n"; print "\n"; print "\n"; print "\n"; for ($i=1;$i<=$numbOfNewsl;$i++) { print &inputAndCheckbox("Newsletter ".$i,"newsLe".$i."T",$CONFIG{"newsLe".$i."T"},"newsLe".$i."A",$CONFIG{"newsLe".$i."A"},"Aktiv","Aktiv"); } print "\n"; print "\n"; print "\n"; for ($i=1;$i<=5;$i++) { print &inputAndCheckbox("Benutzerdef. Feld ".$i,"userDef".$i,$CONFIG{"userDef".$i},"requUsr".$i,$CONFIG{"requUsr".$i},"Pflicht","Pflichtfeld"); } print "\n"; print "
 
Vorname\n"; print &checkBox("requPreN",$CONFIG{requPreN},"Pflicht"); print " Pflichtfeld
Name\n"; print &checkBox("requName",$CONFIG{requName},"Pflicht"); print " Pflichtfeld
 
\n"; print "
\n"; &HTMLend; exit(0); } ########################################################################### # NEWSLETTERSAVE - speichert Newsletter-Einstellungen ########################################################################### if ($FORM{"action"} eq "newslettersave") { &checkASID; &HTMLbegin; print "

Newsletter > gespeichert

\n"; print "Konfiguration erfolgreich gespeichert.

\n"; print "
\n"; print "\n"; print "\n"; $status=0; if ($FORM{"requName"} eq "") { $FORM{"requName"}=""; } if ($FORM{"requPreN"} eq "") { $FORM{"requPreN"}=""; } for ($i=1;$i<=5;$i++) { if ($FORM{"requUsr".$i} eq "") { $FORM{"requUsr".$i}=""; } } for ($i=1;$i<=$numbOfNewsl;$i++) { if ($FORM{"newsLe".$i."A"} eq "") { $FORM{"newsLe".$i."A"}=""; if ($CONFIG{"newsLe".$i."A"} eq "Aktiv") { &newsletterAktivToInaktiv($i); $status=1; } } } if ($status) { print "\n"; } print "
\n"; foreach (keys (%FORM)) { if (($_ ne "ASID") and ($_ ne "action")) { $CONFIG{$_}=$FORM{$_}; } } &saveConfig; &HTMLend; exit(0); } ########################################################################### # NEWSLETTERSAVE2 - speichert Newsletter-Einstellungen (Statusänderung) ########################################################################### if ($FORM{"action"} eq "newslettersave2") { &checkASID; &HTMLbegin; $status=0; for ($i=1;$i<=$numbOfNewsl;$i++) { if ($FORM{"newsletter".$i} eq "del") { # delete: Abo zu gewählten Newsletter löschen, Eintrag komplett löschen. falls einziger Newsletter $status+=&reassignNewsletter($i,0); } elsif ($FORM{"newsletter".$i} eq "change") { # change: einem anderen Newsletter zuordnen $status+=&reassignNewsletter($i,$FORM{"newsletter".$i."change"}); } } print "

Newsletter > gespeichert

\n"; if ($status) { print "

Die Konfiguration konnte nicht gespeichert werden, da die Datenbank für Schreibzugriffe gesperrt ist.

Versuchen Sie es bitte erneut oder klicken Sie hier, um die Datenbank gewaltsam zu entsperren.\n"; } else { print "

Konfiguration erfolgreich gespeichert.

\n"; } &HTMLend; exit(0); } ########################################################################### # TEMPLATES - Templates editieren ########################################################################### if ($FORM{"action"} eq "templates") { &checkASID; &HTMLbegin; if ($FORM{"filename"} eq "") { # Uebersicht print "

Template Übersicht

\n"; print "\n"; &templateUebersicht("Newsletter abonnieren/abmelden", "AnAbmeldung", "html"); &templateUebersicht("Anmeldung: Bestätigungsseite 1","Anmeldung1", "html"); &templateUebersicht("Anmeldung: Bestätigungsmail 1", "AnmeldungM1", "mail"); &templateUebersicht("Anmeldung: Bestätigungsseite 2","Anmeldung2", "html"); &templateUebersicht("Anmeldung: Bestätigungsmail 2", "AnmeldungM2", "mail"); &templateUebersicht("Anmeldung: bereits angemeldet", "AlreadySubscribed","html"); &templateUebersicht("Abmeldung: Bestätigungsseite 1","Abmeldung1", "html"); &templateUebersicht("Abmeldung: Bestätigungsmail 1", "AbmeldungM1", "mail"); &templateUebersicht("Abmeldung: Bestätigungsseite 2","Abmeldung2", "html"); &templateUebersicht("Abmeldung: Bestätigungsmail 2", "AbmeldungM2", "mail"); &templateUebersicht("Abmeldung: nicht angemeldet", "NotSubscribed", "html"); &templateUebersicht("Usercenter - Login", "UsercenterLogin", "html"); &templateUebersicht("Usercenter - Resend-ID", "ResendID", "mail"); &templateUebersicht("Usercenter - Hauptbildschirm", "UsercenterMain", "html"); &templateUebersicht("Usercenter - Subpage 1", "UsercenterSub1", "html"); &templateUebersicht("Usercenter - Subpage 2", "UsercenterSub2", "html"); &templateUebersicht("Usercenter - Subpage 3", "UsercenterSub3", "html"); &templateUebersicht("Usercenter - Subpage 4", "UsercenterSub4", "html"); &templateUebersicht("Usercenter - Subpage 5", "UsercenterSub5", "html"); &templateUebersicht("Usercenter - Subpage 6", "UsercenterSub6", "html"); &templateUebersicht("Usercenter - Subpage 7", "UsercenterSub7", "html"); &templateUebersicht("Usercenter - Subpage 8", "UsercenterSub8", "html"); &templateUebersicht("Usercenter - Subpage 9", "UsercenterSub9", "html"); &templateUebersicht("Usercenter - Subpage 10", "UsercenterSub10", "html"); &templateUebersicht("Fehlerseite", "Error", "html"); print "
"; } else { print "

Template Übersicht > Template editieren

\n"; print &addTextFunction(); print <
HTMLtext print "
\n
\n
<!--CGI--> URL zum CGI-Script
<!--imgDir--> Platzhalter für Bilderverzeichnis
<!--scriptVersion--> Aktuelle Version von Tiger Dental
<!--messageid--> Message-ID (für Mails)
<!--xmailer--> X-Mailer (für Mails)
<!--SystemInfo--> allfälliger Hinweis vom Script
<!--NewsletterSelect--> Dropdown aller aktiven Newsletter
<!--email--> E-Mail Adresse des Abonnenten
<!--id--> ID des Abonnenten
<!--vorname--> Vorname des Abonnenten
<!--name--> Name des Abonnenten
<!--userX--> Feldbezeichnung UserX (1-5)
<!--userXdata--> Wert von Feld UserX (1-5)
<!--vornamepflicht--> * Wenn Vorname ein Pflichtfeld ist
<!--namepflicht--> * Wenn Name ein Pflichtfeld ist
<!--userXpflicht--> * Wenn UserX ein Pflichtfeld ist
<!--**X** **X**--> nur anzeigen, wenn Newsletter X aktiv
<!--NewsLeXC--> checked, wenn Newsletter gewählt
<!--NewsLeXNC--> checked, wenn Newsletter NICHT gewählt
<!--newsletter--> gewählter Newsletter
<!--remote_addr--> IP des Absenders
<!--date--> aktuelles Datum und Zeit (Mail)
<!--subscribelink--> Link zum definitiven anmelden
<!--unsubscribelink--> Link zum abmelden
<!--usercenter--> Link zum Usercenter
<!--usercenterdirekt--> Direkter Link zum Usercenter
<!--usercenterX--> Unterseite X des Usercenters (direkt)
<!--id2Date--> Stellt die ID des Abonnenten als Datum dar.
<!--includeFile:filename--> Fügt die angegebene Datei 1:1 ein
HTMLtext } &HTMLend; exit(0); } ########################################################################### # TEMPLATESSAVE - Templates speichern ########################################################################### if ($FORM{"action"} eq "templatessave") { &checkASID; $FORM{"content"}=&newLine($FORM{"content"}); # Zeilenumbruche \r und \r\n nach \n open(TEMPLATE,">".$CONFIG{"Temp".$FORM{"filename"}}); print TEMPLATE $FORM{"content"}; close(TEMPLATE); &HTMLbegin; print "

Template Übersicht > Template editieren > Template speichern

\n"; print "Template erfolgreich gespeichert.

\n"; print "

Template ansehen (neues Fenster)

\n"; print "

Dieses Template nochmals editieren

\n"; print "

zurück zur Templates-Übersicht

\n"; &HTMLend; exit(0); } ########################################################################### # TEMPLATESVIEW - Templates anzeigen ########################################################################### if ($FORM{"action"} eq "templatesview") { &checkASID; if ($FORM{"typ"} eq "html") { &sendTemplate($FORM{"filename"}); } elsif ($FORM{"typ"} eq "mail") { &viewMailTemplate($FORM{"filename"}); } exit(0); } ########################################################################### # TEMPDB - Temporäre Datenbank ansehen ########################################################################### if ($FORM{"action"} eq "tempdb") { &checkASID; &HTMLbegin; print "

temporäre Datenbank

\n"; if ($FORM{"id"} ne "") { # ID übergeben --> Adresse aus Temp-DB löschen $tmp=&deleteEntry($FORM{"id"}); # Datensatz löschen if ($tmp == 99) { print "

Datei für Schreibzugriffe gesperrt! Versuchen Sie es bitte erneut. Klicken Sie hier um die Datei gewaltsam zu entsperren

\n"; } elsif ($tmp > 0) { print "

Der Eintrag $FORM{id} wurde aus der Datenbank gelöscht.

\n"; } else { print "

Fehler: Der Eintrag $FORM{id} konnte nicht gefunden werden!

\n"; } } print "
\n"; print "

Filter:      [ alle anzeigen ]

"; print "Klicken Sie auf eine E-Mail Adresse um dem Inhaber ein Mail zu senden.\n"; print "\n"; print ""; # Alle anzeigen, wenn kein Filter und nicht alle gewählt if (($FORM{"show"} ne "") or ($FORM{"filter"} ne "")) { $i=""; } else { $i="100"; } (@splitArray)=&showDatabase("tempDB",$FORM{"filter"},$i); print "
E-Mail      ID      Vor-/Nachname        
\n"; print "

Es sind insgesamt $splitArray[1] Adressen in der temporären Datenbank. Davon werden $splitArray[0] angezeigt.

\n"; &HTMLend; exit(0); } ########################################################################### # DATABASE - Datenbank ansehen ########################################################################### if ($FORM{"action"} eq "database") { &checkASID; &HTMLbegin; print "

Datenbank

\n"; if ($FORM{"id"} ne "") { # ID übergeben --> Adresse aus Datenbank löschen $tmp=&deleteEntry($FORM{"id"}); # Datensatz löschen if ($tmp == 99) { print "

Datei für Schreibzugriffe gesperrt! Versuchen Sie es bitte erneut. Klicken Sie hier um die Datei gewaltsam zu entsperren

\n"; } elsif ($tmp > 0) { print "

Der Eintrag $FORM{id} wurde aus der Datenbank gelöscht.

\n"; } else { print "

Fehler: Der Eintrag $FORM{id} konnte nicht gefunden werden!

\n"; } } if ($FORM{"newemail"} ne "") { # Neue E-Mail Adresse: eintragen if ((&checkMailSyntax($FORM{"newemail"}) == 0) and (&checkMailInDB($FORM{"newemail"}) == 0)) { $dbContent{"email"}=$FORM{"newemail"}; $dbContent{"id"}=$FORM{"newid"}; $dbContent{"status"}=1; $dbContent{"vorname"}=$dbContent{"name"}=$dbContent{"user1"}=$dbContent{"user2"}=$dbContent{"user3"}=$dbContent{"user4"}=$dbContent{"user5"}=""; for ($i=1;$i<=$numbOfNewsl;$i++) { $dbContent{"newsletter".$i}=0; } &makeNewEntry; print "

E-Mail Adresse $FORM{newemail} hinzugefügt.

\n"; } else { print "

Fehler: E-Mail Adresse $FORM{newemail} ist ungütig oder breits in der Datenbank!

\n"; } } print "
\n"; print "

Filter:      [ alle anzeigen ]

"; print "Klicken Sie auf eine E-Mail Adresse um dem Inhaber ein Mail zu senden.

\n"; print "\n"; print ""; for ($i=1;$i<=$numbOfNewsl;$i++) { # Anzeige Newsletter if ($CONFIG{"newsLe".$i."A"} eq "Aktiv") { print ""; } } print "\n"; # Alle anzeigen, wenn kein Filter und nicht alle gewählt if (($FORM{"show"} ne "") or ($FORM{"filter"} ne "")) { $i=""; } else { $i="100"; } (@splitArray)=&showDatabase("database",$FORM{"filter"},$i); print "
E-Mail      ID      Vor-/Nachname        ".substr($CONFIG{"newsLe".$i."T"},0,4)."    
\n"; print "

Es sind insgesamt $splitArray[1] Adressen in der Datenbank. Davon werden $splitArray[0] angezeigt.

\n"; $tmp=&createID($serverTime); print "Neue Adresse direkt hinzufügen:
"; print "

\n"; print "E-Mail   ID   
"; &HTMLend; exit(0); } ########################################################################### # DBDETAIL - Detailansicht eines Datenbank-Eintrags ########################################################################### if ($FORM{"action"} eq "dbdetail") { $sysMsg=""; &checkASID; &HTMLbegin; &getDatabaseData($FORM{"id"},"id"); # Datensatz laden $status=$dbContent{"status"}; $status=$FORM{"status"} unless ($FORM{"status"} eq ""); if ($status == 0) { # Header abhängig von Status print "

temporäre Datenbank > Detailansicht

\n"; } else { print "

Datenbank > Detailansicht

\n"; } if ($FORM{"modUserData"} ne "") { # Userdaten aktualisieren $userData{"id"}=$FORM{"id"}; $userData{"email"}=$FORM{"email"}; $userData{"status"}=$FORM{"status"}; $userData{"vorname"}=$FORM{"vorname"}; $userData{"name"}=$FORM{"name"}; for ($i=1;$i<=5;$i++) { $userData{"user".$i}=$FORM{"user".$i}; } $status=&updateDB("userData"); if ($status) { print "

Der Datensatz konnte nicht gespeichert werden, da die Datenbank für Schreibzugriffe gesperrt ist.

Versuchen Sie es bitte erneut oder klicken Sie hier, um die Datenbank gewaltsam zu entsperren.\n"; } else { print "

Datensatz erfolgreich gespeichert.

\n"; } } if ($FORM{"edit"} eq "newsletterNO") { # Newsletter abbestellen $userData{"newsletter".$FORM{"newsletter"}}=0; $status=&updateDB("newsletter$FORM{newsletter}"); if ($status) { print "

Der Datensatz konnte nicht gespeichert werden, da die Datenbank für Schreibzugriffe gesperrt ist.

Versuchen Sie es bitte erneut oder klicken Sie hier, um die Datenbank gewaltsam zu entsperren.\n"; } else { print "

Datensatz erfolgreich gespeichert.

\n"; } } if ($FORM{"edit"} eq "newsletterYES") { # Anmeldemail für Newsletter erneut versenden print "

Anmeldemail für Newsletter ".$CONFIG{"newsLe".$FORM{"newsletter"}."T"}." (erneut) versendet.

\n"; $dbContent{"newsletter"}=$FORM{"newsletter"}; $dbContent{"subscribelink"}="$COMPCGIURL?action=subscribe&email=$dbContent{email}&id=$dbContent{id}&newsletter=$FORM{newsletter}"; &sendMailTemplate("TempAnmeldungM1"); $dbContent{"newsletter".$FORM{"newsletter"}}=2; $userData{"newsletter".$FORM{"newsletter"}}=2; &updateDB("newsletter".$FORM{"newsletter"}); } if ($FORM{"edit"} eq "newsletterDIRECT") { # Newsletter direkt anmelden $userData{"newsletter".$FORM{"newsletter"}}=1; $status=&updateDB("newsletter$FORM{newsletter}"); if ($status) { print "

Der Datensatz konnte nicht gespeichert werden, da die Datenbank für Schreibzugriffe gesperrt ist.

Versuchen Sie es bitte erneut oder klicken Sie hier, um die Datenbank gewaltsam zu entsperren.\n"; } else { print "

Datensatz erfolgreich gespeichert.

\n"; } } if ($FORM{"typ"} eq "sendmail1") { # Anmeldemail erneut versenden print "

Anmeldemail für Newsletter erneut versendet.

\n"; $dbContent{"subscribelink"}="$COMPCGIURL?action=subscribe&email=$dbContent{email}&id=$dbContent{id}"; &sendMailTemplate("TempAnmeldungM1"); } if ($FORM{"typ"} eq "sendmail2") { # Willkommensmail erneut versenden print "

Willkommensmail erneut versendet.

\n"; $dbContent{"unsubscribelink"}=$COMPCGIURL."?action=unsubscribe&email=$dbContent{email}&id=$dbContent{id}&newsletter=$FORM{newsletter}"; $dbContent{"usercenterdirekt"}=$COMPCGIURL."?action=usercenter&email=$dbContent{email}&id=$dbContent{id}"; &sendMailTemplate("TempAnmeldungM2"); } $tmp=&id2Date($dbContent{"id"}); # Anmeldedatum anhand ID bestimmen $dbContent{"email"}=&htmlentities($dbContent{"email"}); $dbContent{"status"}=&htmlentities($dbContent{"status"}); $dbContent{"vorname"}=&htmlentities($dbContent{"vorname"}); $dbContent{"name"}=&htmlentities($dbContent{"name"}); print < HTMLtext for ($i=1;$i<=5;$i++) { $dbContent{"user".$i}=&htmlentities($dbContent{"user".$i}); print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; } # Status: # Newsletter Account # 0 nicht abonniert nicht freigeschaltet # 1 abonniert aktiv # 2 warte auf Bestätigung inaktiv print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n\n\n\n"; print "\n\n\n"; for ($i=1;$i <= $numbOfNewsl;$i++) { if ($CONFIG{"newsLe".$i."A"} eq "Aktiv") { # Newsletter ist aktiv print "\n"; } } print "\n\n
ID $dbContent{id}  
Anmeldedatum $tmp  
E-Mail Adresse  
Vor-/Nachname  
".$CONFIG{"userDef".$i}." 
Status 
 
 
Newsletter
".$CONFIG{"newsLe".$i."T"}.""; if ($dbContent{"newsletter".$i} == 0) { # Newsletter ist nicht abonniert print "nicht abonniert"; print "[ Anmeldemail versenden ]   "; print "[ direkt anmelden"; print " (kein Newsletter vor Account-Freischaltung)" unless ($dbContent{"status"} > 0); print " ]"; } elsif ($dbContent{"newsletter".$i} == 1) { # Newsletter ist aktiv print "abonniert"; print " (kein Newsletter vor Account-Freischaltung)" unless ($dbContent{"status"} > 0); print ""; print "[ Newsletter abbestellen ]   "; } elsif ($dbContent{"newsletter".$i} == 2) { # Newsletter ist inaktiv print "warte auf Bestätigung"; print "[ Newsletter abbestellen ]   "; print "[ direkt anmelden"; print " (kein Newsletter vor Account-Freischaltung)" unless ($dbContent{"status"} > 0); print " ]"; } print "
 
Admin-Funktionen"; if ($dbContent{"status"} == 0) { print "[ Anmelde-Mail erneut versenden ]   "; print "[ Datensatz löschen ]"; } else { print "[ Willkommens-Mail erneut versenden ]   "; print "[ Datensatz löschen ]"; } print "
\n\n"; if ($dbContent{"status"} == 0) { print "[ zurück ]"; } else { print "[ zurück ]"; } &HTMLend; exit(0); } ########################################################################### # UNLOCKFILE - Datei gewaltsam entsperren ########################################################################### if ($FORM{"action"} eq "unlockfile") { &checkASID; &HTMLbegin; print "

Dateisperre aufheben

\n

Jeder Schreibzugriff auf eine Datendatei erzeugt eine Dateisperre, um Datenverlust zu vermeiden. In Ausnahmefällen (z.B. Absturz des Scripts) kann diese Dateisperre möglicherweise nicht mehr aufgehoben werden.

Mit diesem Menü kann die Datei manuell wieder für weitere Schreibzugriffe freigegeben werden.

Bitte beachten Sie: die Dateisperre ist in der Regel gewollt. Zuerst sollte immer versucht werden, den Vorgang nochmals zu wiederholen. Erst dann sollte die Datei gewaltsam entsperrt werden.

"; if ($FORM{"file"} ne "") { if (-e $FORM{"file"}.".lock") { unlink $FORM{"file"}.".lock"; print "Die Datei $FORM{file} wurde wieder für Schreibzugriffe freigegeben!"; } else { print "Die Datei $FORM{file} ist zwischenzeitlich nicht mehr gesperrt!"; } } else { print "Es wurde kein Dateiname zum entsperren übergeben!"; } print "

[ Fenster schliessen ]

"; &HTMLend; exit(0); } ########################################################################### # LOGOUT - Abmelden ########################################################################### if ($FORM{"action"} eq "logout") { print "Set-Cookie: Password=; expires=0;\n"; &HTMLbegin; $DATA{"ASID"}=""; &saveDataFile; print "

Logged out

\n"; print "Besten Dank für Ihren Besuch. Sie sind jetzt abgemeldet.

\n"; print "zum Login"; &HTMLend; exit(0); } ########################################################################### # Newsletter Anmeldung ########################################################################### if ($FORM{"action"} eq "") { &sendTemplate("TempAnAbmeldung"); exit(0); } ########################################################################### # SUBSCRIBE - Anmeldung: Schritt 1 ########################################################################### if (($FORM{"action"} eq "subscribe") and ($FORM{"id"} eq "")) { $dbContent{"status"}=0; $dbContent{"email"}=$FORM{"email"}; $dbContent{"vorname"}=$FORM{"vorname"}; $dbContent{"name"}=$FORM{"name"}; $dbContent{"newsletter"}=$FORM{"newsletter"}; $dbContent{"user1"}=$FORM{"user1"}; $dbContent{"user2"}=$FORM{"user2"}; $dbContent{"user3"}=$FORM{"user3"}; $dbContent{"user4"}=$FORM{"user4"}; $dbContent{"user5"}=$FORM{"user5"}; if (&checkMailSyntax($FORM{"email"})) { # E-Mail Adresse auf Korrektheit überprüfen &sendTemplate("TempError"); exit(0); } $status=&checkMailInDB($FORM{"email"}); if ($status == 0) { # E-Mail Adresse noch nicht in Datenbank # Check, ob alle Pflichtfelder ausgefüllt sind if ((($CONFIG{"requName"} eq "Pflicht") and ($dbContent{"name"} eq "")) or (($CONFIG{"requPreN"} eq "Pflicht") and ($dbContent{"vorname"} eq "")) or (($CONFIG{"requUsr1"} eq "Pflicht") and ($dbContent{"user1"} eq "")) or (($CONFIG{"requUsr2"} eq "Pflicht") and ($dbContent{"user2"} eq "")) or (($CONFIG{"requUsr3"} eq "Pflicht") and ($dbContent{"user3"} eq "")) or (($CONFIG{"requUsr4"} eq "Pflicht") and ($dbContent{"user4"} eq "")) or (($CONFIG{"requUsr5"} eq "Pflicht") and ($dbContent{"user5"} eq ""))) { &sendTemplate("TempError"); exit(0); } $dbContent{"id"}=&createID($serverTime); # ID generieren $dbContent{"newsletter".$dbContent{"newsletter"}}=2; $dbContent{"subscribelink"}="$COMPCGIURL?action=subscribe&email=$dbContent{email}&id=$dbContent{id}&newsletter=$dbContent{newsletter}"; &sendTemplate("TempAnmeldung1"); &sendMailTemplate("TempAnmeldungM1"); &makeNewEntry; exit(0); } else { # E-Mail Adresse in (temporärer) Datenbank &getDatabaseData($FORM{"email"},"email"); if ($dbContent{"newsletter".$FORM{"newsletter"}} == 1) { &sendTemplate("TempAlreadySubscribed"); exit(0); } else { $userData{"newsletter".$FORM{"newsletter"}}=2; $dbContent{"subscribelink"}="$COMPCGIURL?action=subscribe&email=$dbContent{email}&id=$dbContent{id}&newsletter=$dbContent{newsletter}"; &sendTemplate("TempAnmeldung1"); &sendMailTemplate("TempAnmeldungM1"); &updateDB("newsletter".$FORM{"newsletter"}); exit(0); } } } ########################################################################### # SUBSCRIBE: Anmeldung: Schritt 2 ########################################################################### if (($FORM{"action"} eq "subscribe") and ($FORM{"id"} ne "")) { $status=&checkMailInDB($FORM{"email"}); # prüfe, ob Mailadresse in Datenbank if ($status == 0) { # Mailadresse nicht in Datenbank $dbContent{"email"}=$FORM{"email"}; $dbContent{"newsletter"}=$FORM{"newsletter"}; &sendTemplate("TempNotSubscribed"); exit(0); } &getDatabaseData($FORM{"email"},"email"); # Datensatz abrufen if ($FORM{"id"} ne $dbContent{"id"}) { # E-Mail und ID stimmen nicht überein &sendTemplate("TempError"); exit(0); } if ($FORM{"newsletter"} ne "") { # Newsletter explizit angegeben --> prüfe, ob nicht schon angemeldet if ($dbContent{"newsletter".$FORM{"newsletter"}} == 1) { # Newsletter bereits abonniert --> Fehler ausgeben &sendTemplate("TempAlreadySubscribed"); exit(0); } elsif ($dbContent{"newsletter".$FORM{"newsletter"}} == 0) { # Newsletter nicht in tempDB --> Fehler ausgeben $dbContent{"newsletter"}=$FORM{"newsletter"}; &sendTemplate("TempNotSubscribed"); exit(0); } else { # Newsletter in DB --> eintragen $dbContent{"newsletter".$FORM{"newsletter"}}=1; $tmp="+".$FORM{"newsletter"}; # Info für Adminbenachrichtung } } else { # keinen Newsletter übergeben --> Status 2 nach 1 $tmp=""; # Info für Adminbenachrichtung for ($i=1;$i <= $numbOfNewsl;$i++) { if ($dbContent{"newsletter".$i} == 2) { # Newsletter ist auf Bestätigung $dbContent{"newsletter".$i}=1; # aktiv setzen $tmp.="+".$i.";"; # Info für Adminbenachrichtung } elsif (($dbContent{"newsletter".$i} == 1) and ($dbContent{"status"} == 0)) { # Status Account geändert und Newsletter bereits definitiv abonniert $tmp.="+".$i.";"; # Info für Adminbenachrichtung } } } if ($CONFIG{"newsNoti"} ne "") { # Admin-Benachrichtigung aktiviert if ($dbContent{"status"} == 0) { # neuer Abonnent &sendAdminNotification("new",$dbContent{"id"},$dbContent{"email"},$dbContent{"vorname"},$dbContent{"name"},$dbContent{"user1"},$dbContent{"user2"},$dbContent{"user3"},$dbContent{"user4"},$dbContent{"user5"},$tmp); } else { &sendAdminNotification("mod",$dbContent{"id"},$dbContent{"email"},$dbContent{"vorname"},$dbContent{"name"},$dbContent{"user1"},$dbContent{"user2"},$dbContent{"user3"},$dbContent{"user4"},$dbContent{"user5"},$tmp); } } $dbContent{"status"}=1; # Status aktiv setzen $dbContent{"unsubscribelink"}=$COMPCGIURL."?action=unsubscribe&email=$dbContent{email}&id=$dbContent{id}&newsletter=$FORM{newsletter}"; $dbContent{"usercenterdirekt"}=$COMPCGIURL."?action=usercenter&email=$dbContent{email}&id=$dbContent{id}"; foreach (keys(%dbContent)) { $userData{$_}=$dbContent{$_}; } &sendTemplate("TempAnmeldung2"); &sendMailTemplate("TempAnmeldungM2"); &updateDB("all"); exit(0); } ########################################################################### # UNSUBSCRIBE: Abmeldung: Schritt 1 ########################################################################### if (($FORM{"action"} eq "unsubscribe") and ($FORM{"id"} eq "")) { $status=&checkMailInDB($FORM{"email"}); # prüfe, ob Mailadresse in Datenbank if ($status == 0) { # Mailadresse nicht in Datenbank $dbContent{"email"}=$FORM{"email"}; $dbContent{"newsletter"}=$FORM{"newsletter"}; &sendTemplate("TempNotSubscribed"); exit(0); } &getDatabaseData($FORM{"email"},"email"); # Datensatz abrufen if ($dbContent{"newsletter".$FORM{"newsletter"}} != 1) { $dbContent{"email"}=$FORM{"email"}; # Newsletter nicht abonniert $dbContent{"newsletter"}=$FORM{"newsletter"}; &sendTemplate("TempNotSubscribed"); exit(0); } $dbContent{"newsletter"}=$FORM{"newsletter"}; $dbContent{"unsubscribelink"}="$COMPCGIURL?action=unsubscribe&email=$dbContent{email}&id=$dbContent{id}&newsletter=$dbContent{newsletter}"; &sendTemplate("TempAbmeldung1"); &sendMailTemplate("TempAbmeldungM1"); exit(0); } ########################################################################### # UNSUBSCRIBE: Abmeldung: Schritt 2 ########################################################################### if (($FORM{"action"} eq "unsubscribe") and ($FORM{"id"} ne "")) { $status=&checkMailInDB($FORM{"email"}); # prüfe, ob Mailadresse in Datenbank if ($status == 0) { # Mailadresse nicht in Datenbank $dbContent{"email"}=$FORM{"email"}; $dbContent{"newsletter"}=$FORM{"newsletter"}; &sendTemplate("TempNotSubscribed"); exit(0); } &getDatabaseData($FORM{"email"},"email"); # Datensatz abrufen if ($FORM{"id"} ne $dbContent{"id"}) { # E-Mail und ID stimmen nicht überein &sendTemplate("TempError"); exit(0); } if ($FORM{"newsletter"} ne "") { if ($dbContent{"newsletter".$FORM{"newsletter"}} != 1) { $dbContent{"email"}=$FORM{"email"}; # Newsletter nicht abonniert $dbContent{"newsletter"}=$FORM{"newsletter"}; &sendTemplate("TempNotSubscribed"); exit(0); } $dbContent{"newsletter".$FORM{"newsletter"}}=0; $userData{"newsletter".$FORM{"newsletter"}}=0; $tmp=0; for ($i=1;$i<=$numbOfNewsl;$i++) { # check auf weitere abonnierte Newsletter $tmp++ unless ($dbContent{"newsletter".$i}==0); } if ($tmp == 0) { # keine weiteren Newsletter --> Datensatz löschen &deleteEntry($FORM{"id"}); if ($CONFIG{"newsNoti"} ne "") { # Admin-Benachrichtigung aktiviert &sendAdminNotification("del",$dbContent{"id"},$dbContent{"email"},$dbContent{"vorname"},$dbContent{"name"},$dbContent{"user1"},$dbContent{"user2"},$dbContent{"user3"},$dbContent{"user4"},$dbContent{"user5"},""); } } else { # weitere Newsletter --> nur aktuelles Abo löschen &updateDB("newsletter".$FORM{"newsletter"}); if ($CONFIG{"newsNoti"} ne "") { # Admin-Benachrichtigung aktiviert &sendAdminNotification("mod",$dbContent{"id"},$dbContent{"email"},$dbContent{"vorname"},$dbContent{"name"},$dbContent{"user1"},$dbContent{"user2"},$dbContent{"user3"},$dbContent{"user4"},$dbContent{"user5"},"-".$FORM{"newsletter"}); } } } else { # kein Newsletter übergeben --> Datensatz löschen &deleteEntry($FORM{"id"}); if ($CONFIG{"newsNoti"} ne "") { # Admin-Benachrichtigung aktiviert &sendAdminNotification("del",$dbContent{"id"},$dbContent{"email"},$dbContent{"vorname"},$dbContent{"name"},$dbContent{"user1"},$dbContent{"user2"},$dbContent{"user3"},$dbContent{"user4"},$dbContent{"user5"},""); } } &sendTemplate("TempAbmeldung2"); &sendMailTemplate("TempAbmeldungM2"); exit(0); } ########################################################################### # IM-EXPORT: Adressen importieren/exportieren ########################################################################### if ($FORM{"action"} eq "im-export") { &checkASID; &HTMLbegin; print <Adressen importieren/exportieren

Adressen importieren

In Tiger Dental können Adressen als Textdateien importiert werden. Genauere Informationen zum Datenformat erhalten Sie nachdem Sie auf einen untenstehendne Link geklickt haben.

Adressen exportieren

In diesem Menü können Sie die Datenbank in verschiedenen Formaten exportieren und auf Ihre Festplatte sichern.

Newsletter
Export-Format    Newsletter-Infos exportieren (gilt nicht für EML)
 
HTMLtext &HTMLend; exit(0); } ########################################################################### # EXPORT: Adressen exportieren ########################################################################### if ($FORM{"action"} eq "export") { &checkASID; &HTMLbegin; print "

Adressen importieren/exportieren > Export erfolgreich

\n"; if (($FORM{"format"} eq "To:") or ($FORM{"format"} eq "BCC:")) { # Mailformat $filename="export.eml"; # Dateiname festlegen open(EXPORT,">".$CONFIG{"ExportUnix"}.$filename); print EXPORT "X-Unsent: 1\nFrom:\nSubject:\n"; } else { # Text-Export if ($FORM{"format"} eq ";") { $filename="export.csv"; # Dateiname festlegen } else { $filename="export.txt"; # Dateiname festlegen } open(EXPORT,">".$CONFIG{"ExportUnix"}.$filename); print EXPORT "id".$FORM{"format"}."Vorname".$FORM{"format"}."Name".$FORM{"format"}.$CONFIG{"userDef1"}.$FORM{"format"}.$CONFIG{"userDef2"}.$FORM{"format"}.$CONFIG{"userDef3"}.$FORM{"format"}.$CONFIG{"userDef4"}.$FORM{"format"}.$CONFIG{"userDef5"}.$FORM{"format"}."E-Mail"; if ($FORM{"allinfo"} ne "") { for ($i=1;$i<=$numbOfNewsl;$i++) { if ($CONFIG{"newsLe".$i."A"} eq "Aktiv") { print EXPORT $FORM{"format"}.$CONFIG{"newsLe".$i."T"}; } } } print EXPORT "\n"; } $tmp=&exportNewsletter($FORM{"newsletter"},$FORM{"format"},$FORM{"allinfo"}); if (($FORM{"format"} eq "To:") or ($FORM{"format"} eq "BCC:")) { # Mailformat print EXPORT "\nText hier..."; } close(EXPORT); print "
Die exportierten Daten können nun heruntergeladen werden:
\n"; print "$filename"; print " rechte Maustaste, Ziel speichern unter

Exportierte Datensätze: $tmp"; &HTMLend; exit(0); } ########################################################################### # IMPORT: Adressen importieren ########################################################################### if ($FORM{"action"} eq "import") { &checkASID; &HTMLbegin; if ($FORM{"do"} eq "startimport") { print "

Adressen importieren/exportieren > Import > Import gestartet

\n"; if ($FORM{"typ"} eq "upload") { # Upload if (-e "tmp_uploadfile_".$FORM{"uploadfile"}) { # check, ob Datei existiert open(IMPORT, "tmp_uploadfile_".$FORM{"uploadfile"}); while () { # zeilenweise einlesen und in $FORM{uploaddata} schreiben; $FORM{"uploaddata"}.=$_; } close(IMPORT); unlink "tmp_uploadfile_".$FORM{"uploadfile"}; # Datei vom Server löschen } } if (&doImport("rollback")) { print "

Datei für Schreibzugriffe gesperrt! Versuchen Sie es bitte erneut. Klicken Sie hier um die Datei gewaltsam zu entsperren

\n"; } else { &startImport; # Datenimport starten } } else { $tmp=""; if ($FORM{"do"} eq "rollback") { # Import wird abgelehnt if (&doImport("rollback")) { $tmp="

Datei für Schreibzugriffe gesperrt! Versuchen Sie es bitte erneut. Klicken Sie hier um die Datei gewaltsam zu entsperren

\n"; } else { $tmp="Der Import wurde verworfen!"; } } elsif ($FORM{"do"} eq "commit") { if (&doImport("commit")) { $tmp="

Datei für Schreibzugriffe gesperrt! Versuchen Sie es bitte erneut. Klicken Sie hier um die Datei gewaltsam zu entsperren

\n"; } else { $tmp="Der Import wurde erfolgreich abgeschlossen!"; } } print <Adressen importieren/exportieren > Import $tmp

Datenformat

Tiger Dental bietet eine flexible Import-Schnittstelle, welche wohl Exporte aus den meisten Programmen verarbeiten kann. Beim Import können TXT- und CSV-Dateien verarbeitet werden. Damit der Import klappt, müssen in der ersten Zeile der Datei korrekte Spaltenüberschriften vorhanden sein. HTMLtext for ($i=1;$i<=5;$i++) { print < HTMLtext } print <
Feldbezeichnung Wert Standard-Wert, wenn nicht vorhanden
id ID des Abonnenten * automatisch mit heutigem Datum generiert
email E-Mail Adresse Pflichtfeld
status Account-Status 1=aktiv (Standard), 2=inaktiv
vorname Vorname des Abonnenten [leer]
name Nachname des Abonnenten [leer]
user$i Benutzderdefiniertes Feld $i ($CONFIG{"userDef".$i}) [leer]
newsletterX Status des Newsletter X, z.B. newsletter3 (1-$numbOfNewsl) 0=nicht abonniert (Standard), 1=abonniert
Die Reihenfolge der Spalten ist egal, ebenfalls Pflichtfeld ist nur das Feld "email", alle anderen Spalten müssen in der Import-Datei nicht zwingend vorhanden sein. Zusätzliche Spalten werden beim Import ignoriert.

Als Trennzeichen zwischen den Spalten sind folgende Zeichen erlaubt: Strichpunkt (;), Komma (,) und Tabulator. Das Trennzeichen wird automatisch erkannt.

* Die ID des Abonnenten enthält die UNIX-Time des Anmeldedatums (vergangene Sekunden seit 1. Januar 1970). Sie kann entweder nur aus dieser Zahl bestehen (z.B. 1136235181), oder nach dem Schema 9[Zufallszahl, 5-stellig][UNIX-Time] (z.B. 9436121136235181). Eine Umrechnung eines beliebigen Datums auf die UNIX-Time ist z.B. hier möglich. In der Regel kann die ID-Spalte weggelassen werden, so dass automatisch IDs mit dem heutigen Tag als Anmeldedatum erstellt werden.

Import-Daten laden

HTMLtext if ($FORM{"typ"} eq "upload") { print "

"; } else { print "

"; } print " Die Daten werden vor dem definitiven Import zuerst noch angezeigt"; print " HTMLtext } } &HTMLbegin($tmp); if ($FORM{"typ"} eq "") { # Übersicht print "

Mail versenden

\n"; print < Nur Text ein reines Text-Mail (ohne HTML-Tags) versenden

Nur HTML ein reines HTML-Mail versenden. Mailreader, die kein HTML darstellen können zeigen dann die HTML-Tags

HTML/Text ein HTML-Mail mit einer, automatisch von HTML-Tags bereinigten, Text-Version für nicht HTML-fähige Mailreader. Achtung: Mail ist etwa doppelt so gross

HTML/Text unabhängig ein Mail mit einem völlig unabhängigen HTML- und Text-Teil versenden

freies Format Mail mit völlig freier Gestaltung versenden. Dabei muss der exakte Quelltext eingegeben werden. Achtung: erweiterte Kenntnisse der Mail-Codierung erforderlich.

gespeicherte Newsletter Erneutes öffnen oder löschen von gespeicherten Newslettern.

HTMLtext } else { # ein Mail versenden if ($FORM{"load"} ne "") { # Newsletter laden &loadNewsletter($FORM{"load"}); if ((($FORM{"typ"} eq "htmlautotext") or ($FORM{"typ"} eq "htmltext")) and ($CONFIG{"htmlEdt"} eq "Y")) { $FORM{"content"}=~ s//#!--$1--#/g; } } if ($FORM{"absender"} eq "") { # Default-Absender $FORM{"absender"}=$CONFIG{"sysMail"}; } $FORM{"save"}=&htmlentities($FORM{"save"}); # HTML-Sonderzeichen umsetzen $FORM{"absender"}=&htmlentities($FORM{"absender"}); $FORM{"betreff"}=&htmlentities($FORM{"betreff"}); $FORM{"content"}=&htmlentities($FORM{"content"}); $FORM{"content2"}=&htmlentities($FORM{"content2"}); print "

Mail versenden > "; if ($FORM{"typ"} eq "text") { print "nur Text Mail

\nSie möchten ein nur Text Mail versenden. Wichtig: HTML-Tags sind nicht gestattet, bzw. werden im Mail ausgeschrieben angezeigt.

\n"; } elsif ($FORM{"typ"} eq "html") { print "nur HTML Mail\nSie möchten ein nur HTML Mail versenden. Sie können alle HTML-Tags verwenden.
Wichtig: Verfassen Sie Ihr Mail als komplette HTML-Datei also inkl. <html>- und <body>-Tags!

\n"; if (($CONFIG{"htmlEdt"} eq "Y") and ($_[0] eq "") and ($FORM{"typ"} ne "text") and ($FORM{"typ"} ne "free")) { print "Bei der Verwendung des WYSIWYG-Editors TinyMCE entspricht die Anzeige im Mail genau dem, was Sie sehen, verzichten Sie komplett auf HTML-Tags und nutzen Sie die Funktionen des Editors.

"; } } elsif ($FORM{"typ"} eq "free") { print "frei gestaltets Mail\nSie möchten ein frei gestaltetes Mail versenden.
Wichtig: Vergessen Sie Absender, Empfänger Datum und Betreff nicht!

\n"; } elsif ($FORM{"typ"} eq "htmlautotext") { print "kombiniertes HTML/Text-Mail\nSie möchten ein kombiniertes HTML/Text Mail versenden. Verfassen Sie das HTML-Mail. Der Textteil wird automatisch generiert.
Wichtig: Verfassen Sie Ihr Mail als komplette HTML-Datei also inkl. <html>- und <body>-Tags!

\n"; if (($CONFIG{"htmlEdt"} eq "Y") and ($_[0] eq "") and ($FORM{"typ"} ne "text") and ($FORM{"typ"} ne "free")) { print "Bei der Verwendung des WYSIWYG-Editors TinyMCE entspricht die Anzeige im Mail genau dem, was Sie sehen, verzichten Sie komplett auf HTML-Tags und nutzen Sie die Funktionen des Editors.

"; } } elsif ($FORM{"typ"} eq "htmltext") { print "unabhängiges HTML/Text-Mail\nSie möchten ein kombiniertes HTML/Text Mail mit unabhängigen Texten versenden. Verfassen Sie nun die einzelnen Teile.
Wichtig: Verfassen Sie den HTML-Teil als komplette HTML-Datei also inkl. <html>- und <body>-Tags!

\n"; if (($CONFIG{"htmlEdt"} eq "Y") and ($_[0] eq "") and ($FORM{"typ"} ne "text") and ($FORM{"typ"} ne "free")) { print "Bei der Verwendung des WYSIWYG-Editors TinyMCE entspricht die Anzeige im Mail genau dem, was Sie sehen, verzichten Sie komplett auf HTML-Tags und nutzen Sie die Funktionen des Editors.

"; } } print "\n"; print &addTextFunction(); print "\n"; print "\n"; print "\n"; if ($FORM{"typ"} ne "free") { # überall ausser bei Typ "free" Datum, Absender und Betreff abfragen $CONFIG{"sysMail"}=&htmlentities($CONFIG{"sysMail"}); print < Datum Absender Betreff HTMLtext } print "\n\n
\n"; if ($FORM{"typ"} eq "htmltext") { print "HTML-Teil
"; } if (($FORM{"typ"} ne "free") and ($FORM{"typ"} ne "text") and ($FORM{"content"} eq "")) { $FORM{"content"}="<html><body>\n\n</body></html>"; } print &newsletterTextBox("","document.newsletter.content",$FORM{"content"}); if ($FORM{"typ"} eq "htmltext") { print "
\n"; print "Text-Teil
"; print &newsletterTextBox("2","document.newsletter.content2",$FORM{"content2"}); } print "

Newsletter:


Speichern als
(leer=Newsletter wird nicht gespeichert)
Newsletter mit gleichem Namen wird überschrieben!

HTMLtext } &HTMLend; exit(0); } ########################################################################### # LOADNEWS: Newsletter verwalten ########################################################################### if ($FORM{"action"} eq "loadnews") { &checkASID; &HTMLbegin; if ($FORM{"delete"} ne "") { # Newsletter löschen &deleteNewsletter($FORM{"delete"}); } print "

Mail versenden > gespeicherte Newsletter

"; print "\n"; &loadNewsletterList; print "
"; &HTMLend; exit(0); } ########################################################################### # SENDMAILPREVIEW: Vorschau des zu versendenden Newsletters ########################################################################### if ($FORM{"action"} eq "sendmailpreview") { if ($FORM{"typ"} eq "send") { # bei Mailversand Referer nicht prüfen und noch kein Header senden &checkASID("noref"); } else { &checkASID; &HTMLbegin; } $FORM{"content"}=~ s/\#!--(.*?)--\#//gi; # #!-- --# nach $FORM{"content1"}=~ s/\#!--(.*?)--\#//gi; # #!-- --# nach if ($FORM{"save"} ne "") { # Dateiname angegeben --> Newsletter speichern &saveNewsletter; } ########################################################################### # nur Text-Mail ########################################################################### if ($FORM{"typ"} eq "text") { $FORM{"content"}=&newLine($FORM{"content"}); # Zeilenumbruche \r und \r\n nach \n open(MAIL,">".$CONFIG{"ExportUnix"}."mail.eml"); print MAIL "From: $FORM{absender}\n"; print MAIL "Date: $FORM{datum}\n"; print MAIL "To: \n"; $CONFIG{"XMailer"}=~ s//$version/gi; print MAIL "X-Mailer: $CONFIG{XMailer}\n"; print MAIL "Message-ID: \n"; print MAIL "Subject: $FORM{betreff}\n\n"; print MAIL &splitText($FORM{"content"},70); close(MAIL); print "

Mail versenden > Mail verfassen > Vorschau

"; print "Vorschau des Mails (in einem neuen Fenster)
"; print "Mail als EML-Datei downloaden (rechte Maustaste, Ziel speichern unter)

"; print "Newsletter definitiv versenden"; } ########################################################################### # nur Text-Mail - Vorschau ########################################################################### if ($FORM{"typ"} eq "textpreview") { print "

Vorschau \"Nur Text\"-Mail

"; print "
\n";
		open(MAIL,$CONFIG{"ExportUnix"}."mail.eml");
		while () {
			chomp;
			$_ =~ s/[\r\n]//g;
			$_ =~ s//>/g;
			print "$_\n";
		}
		print "


[ Fenster schliessen ]
\n"; } ########################################################################### # nur HTML-Mail ########################################################################### if ($FORM{"typ"} eq "html") { $FORM{"content"}=&newLine($FORM{"content"}); # Zeilenumbruche \r und \r\n nach \n $FORM{"content"}=&htmlentities($FORM{"content"},"N"); $FORM{"content"}=~ s//\n/gi; open(MAIL,">".$CONFIG{"ExportUnix"}."mail.eml"); print MAIL "From: $FORM{absender}\n"; print MAIL "To: \n"; print MAIL "Date: $FORM{datum}\n"; print MAIL "Content-Type: text/html\n"; $CONFIG{"XMailer"}=~ s//$version/gi; print MAIL "X-Mailer: $CONFIG{XMailer}\n"; print MAIL "Message-ID: \n"; print MAIL "Subject: $FORM{betreff}\n\n"; if (($FORM{"content"} !~ m//i) and ($CONFIG{"htmlEdt"} eq "Y")) { # kein -Tag und Editor aktiviert --> TinyMCE $FILEDATA[0]="\n\n\n\n"; $FILEDATA[1]="\n\n"; $FORM{"content"}=$FILEDATA[0].$FORM{"content"}.$FILEDATA[1]; } print MAIL &splitText($FORM{"content"},70); close(MAIL); print "

Mail versenden > Mail verfassen > Vorschau

"; print "Vorschau des Mails (in einem neuen Fenster)
"; print "Mail als EML-Datei downloaden (rechte Maustaste, Ziel speichern unter)

"; print "Newsletter definitiv versenden"; } ########################################################################### # nur HTML-Mail Vorschau ########################################################################### if ($FORM{"typ"} eq "htmlpreview") { print "

Vorschau \"nur HTML\"-Mail

\n"; open(MAIL,$CONFIG{"ExportUnix"}."mail.eml"); $status=0; while () { if ($_ =~ m/^\s*$/) { $status++; } print $_ unless ($status == 0); } print "

[ Fenster schliessen ]
\n"; } ########################################################################### # kombiniertes HTML/Text-Mail ########################################################################### if ($FORM{"typ"} eq "htmlautotext") { $tmp=&makeBoundary(24); $FORM{"content"}=&newLine($FORM{"content"}); # Zeilenumbruche \r und \r\n nach \n $FORM{"content1"}=$FORM{content}; $FORM{"test"}=$/; $FORM{"content"}=&htmlentities($FORM{"content"},"N"); $FORM{"content1"}=~ s/\n/§§/g; $FORM{"content1"}=~ s/\s*\s*/\n/gi; $FORM{"content1"}=~ s/<\/p>\s*

/

/gi; $FORM{"content1"}=~ s/\s*<\/?p>\s*/\n\n/gi; $FORM{"content1"}=~ s/

  • /- /gi; $FORM{"content1"}=~ s/<\/li>/\n/gi; $FORM{"content1"}=~ s//\n\n/gi; $FORM{"content1"}=~ s/<\/h[1-7]>/\n/gi; $FORM{"content1"}=~ s/ / /g; $FORM{"content1"}=~ s/ü/ü/g; $FORM{"content1"}=~ s/Ü/Ü/g; $FORM{"content1"}=~ s/ö/ö/g; $FORM{"content1"}=~ s/Ö/Ö/g; $FORM{"content1"}=~ s/ä/ä/g; $FORM{"content1"}=~ s/Ä/Ä/g; $FORM{"content1"}=~ s/<//g; $FORM{"content1"}=~ s/&/\"/g; $FORM{"content1"}=~ s///gi; $FORM{"content1"}=~ s///gi; $FORM{"content1"}=~ s///gi; $FORM{"content1"}=~ s///gi; $FORM{"content1"}=~ s/<[A-Z\/].*?>//gi; $FORM{"content"}=~ s//\n/gi; open(MAIL,">".$CONFIG{"ExportUnix"}."mail.eml"); print MAIL "From: $FORM{absender}\n"; print MAIL "To: \n"; print MAIL "Date: $FORM{datum}\n"; print MAIL "MIME-Version: 1.0\n"; print MAIL "Subject: $FORM{betreff}\n"; $CONFIG{"XMailer"}=~ s//$version/gi; print MAIL "X-Mailer: $CONFIG{XMailer}\n"; print MAIL "Message-ID: \n"; print MAIL "Content-Type: multipart/alternative;\n boundary=\"------------$tmp\"\n\n\n"; print MAIL "--------------$tmp\n"; print MAIL "Content-Type: text/plain; charset=us-ascii\n"; print MAIL "Content-Transfer-Encoding: 8bit\n\n"; @FILEDATA=split(/§§/,$FORM{"content1"}); $status=0; foreach (@FILEDATA) { chomp; if ($_ =~ m//i) { $status=1; } if ($_ =~ m/<\/head>/i) { $status=0; } if ($_ =~ m//i) { $status=0; } $_ =~ s//\#§\#!--$1--\#§\#/g; $_ =~ s/<[^!].*?>//g; $_ =~ s/\#§\#!--(.*?)--\#§\#//g; print MAIL &splitText($_,70) unless (($status > 0) or (length($_) == 0)); } print MAIL "\n--------------$tmp\n"; print MAIL "Content-Type: text/html; charset=us-ascii\n"; print MAIL "Content-Transfer-Encoding: 8bit\n\n"; if (($FORM{"content"} !~ m//i) and ($CONFIG{"htmlEdt"} eq "Y")) { # kein -Tag und Editor aktiviert --> TinyMCE $FILEDATA[0]="\n\n\n\n"; $FILEDATA[1]="\n\n"; $FORM{"content"}=$FILEDATA[0].$FORM{"content"}.$FILEDATA[1]; } print MAIL &splitText($FORM{"content"},70); print MAIL "\n\n--------------$tmp--"; close(MAIL); print "

    Mail versenden > Mail verfassen > Vorschau

    "; print "Vorschau des Mails (in einem neuen Fenster)
    "; print "Mail als EML-Datei downloaden (rechte Maustaste, Ziel speichern unter)

    "; print "Newsletter definitiv versenden"; } ########################################################################### # kombiniertes/unabhängiges HTML/Text-Mail - Vorschau ########################################################################### if ($FORM{"typ"} eq "htmlautotextpreview") { print "

    Vorschau \"HTML/Text-Mail\"

    \n"; $status=1; open(MAIL,$CONFIG{"ExportUnix"}."mail.eml"); while () { if ($status == 2) { $status=3; } if ($_ =~ m/Content-Type: text\/html; charset=us-ascii/) { $status=2; } if ($_ =~ m/--------------.*--/g) { $status=1; } print "$_" unless ($status > 0); if ($status==3) { $status=0; } } close(MAIL); print "

    [ Fenster schliessen ]
    \n"; } ########################################################################### # unabhängiges HTML/Text-Mail ########################################################################### if ($FORM{"typ"} eq "htmltext") { $tmp=&makeBoundary(24); $FORM{"content"}=&newLine($FORM{"content"}); # Zeilenumbruche \r und \r\n nach \n $FORM{"content2"}=&newLine($FORM{"content2"}); # Zeilenumbruche \r und \r\n nach \n $FORM{"content"}=&htmlentities($FORM{"content"},"N"); open(MAIL,">".$CONFIG{"ExportUnix"}."mail.eml"); print MAIL "From: $FORM{absender}\n"; print MAIL "To: \n"; print MAIL "Date: $FORM{datum}\n"; print MAIL "MIME-Version: 1.0\n"; print MAIL "Subject: $FORM{betreff}\n"; $CONFIG{"XMailer"}=~ s//$version/gi; print MAIL "X-Mailer: $CONFIG{XMailer}\n"; print MAIL "Message-ID: \n"; print MAIL "Content-Type: multipart/alternative;\n boundary=\"------------$tmp\"\n\n\n"; print MAIL "--------------$tmp\n"; print MAIL "Content-Type: text/plain; charset=us-ascii\n"; print MAIL "Content-Transfer-Encoding: 7bit\n\n"; print MAIL &splitText($FORM{"content2"},70)."\n"; print MAIL "\n--------------$tmp\n"; print MAIL "Content-Type: text/html; charset=us-ascii\n"; print MAIL "Content-Transfer-Encoding: 7bit\n\n"; if (($FORM{"content"} !~ m//i) and ($CONFIG{"htmlEdt"} eq "Y")) { # kein -Tag und Editor aktiviert --> TinyMCE $FILEDATA[0]="\n\n\n\n"; $FILEDATA[1]="\n\n"; $FORM{"content"}=$FILEDATA[0].$FORM{"content"}.$FILEDATA[1]; } print MAIL &splitText($FORM{"content"},70)."\n"; print MAIL "\n--------------$tmp--"; close(MAIL); print "

    Mail versenden > Mail verfassen > Vorschau

    "; print "Vorschau des Mails (in einem neuen Fenster)
    "; print "Mail als EML-Datei downloaden (rechte Maustaste, Ziel speichern unter)

    "; print "Newsletter definitiv versenden"; } ########################################################################### # frei gestaltetes Mail ########################################################################### if ($FORM{"typ"} eq "free") { $FORM{"content"}=&newLine($FORM{"content"}); # Zeilenumbruche \r und \r\n nach \n open(MAIL,">".$CONFIG{"ExportUnix"}."mail.eml"); print MAIL $FORM{"content"}; close(MAIL); print "

    Mail versenden > Mail verfassen > Vorschau

    "; print "Vorschau des Mails (in einem neuen Fenster)
    "; print "Mail als EML-Datei downloaden (rechte Maustaste, Ziel speichern unter) Download dringend empfohlen, da in Voransicht Header nicht sichtbar

    "; print "Newsletter definitiv versenden"; } ########################################################################### # Mailversand ########################################################################### if ($FORM{"typ"} eq "send") { if ($FORM{"start"} ne "allsent") { # noch nicht alle Newsletter versendet open(TEMPLATE,$CONFIG{"ExportUnix"}."mail.eml"); # Newsletter in Array einlesen while (