neues formularmodul :: w3concepts.form.v1
schwitz. jetzt hab ich die 12 seiten durchgeackert aber leider keine lösung für mein problem gefunden. ich hab das formular in die aktuelle cvs version integriert - alles kein problem, das einzige was ist: in dem array, wo eigentlich das stehen sollte, was man beim absenden zu sehen bekommt, steht der inhalt der text moduls drin - also der eigentlich seitencontent ... was mach ich da falsch? ändere ich den inhalt im formularcontainer, ändert sich auch der inhalt in container3
also wo eben das text-modul drinsteht... any tipps?

-
- Beiträge: 5478
- Registriert: Di 2. Mär 2004, 21:11
- Wohnort: Halchter, wo sonst? ;-)
- Kontaktdaten:
Das hoert sich danach an, als ob in zwei Modulen auf einer Seite dieselben Variablennamen benutzt werden, z.B. 2x CMS_HTML[1]. Du musst bei einem der Module den Namen aendern, also in Klammern eine andere Zahl benutzen.JSommer hat geschrieben:das einzige was ist: in dem array, wo eigentlich das stehen sollte, was man beim absenden zu sehen bekommt, steht der inhalt der text moduls drin - also der eigentlich seitencontent ... was mach ich da falsch? ändere ich den inhalt im formularcontainer, ändert sich auch der inhalt in container3also wo eben das text-modul drinsteht... any tipps?
-
- Beiträge: 115
- Registriert: Di 25. Nov 2003, 16:47
- Kontaktdaten:
Hallo zusammen...
Erstmal muss ich sagen es ist ein Super Modul!
Aber ich Habe ein riesen Problem...
Bekomme wenn ich auf senden klicke immer ne Fehlermeldung
Wenn ich meine Mails abrufe bekomme ich zwar ne Mail, aber ohne den Text den ich eingegeben habe!
Stehe momentan echt im Dunkeln!
Erstmal muss ich sagen es ist ein Super Modul!
Aber ich Habe ein riesen Problem...
Bekomme wenn ich auf senden klicke immer ne Fehlermeldung
Warum? versteh das nicht...Warning: Invalid argument supplied for foreach() in /var/www/weba16/html/home/cms/front_content.php(567) : eval()'d code on line 96
Wenn ich meine Mails abrufe bekomme ich zwar ne Mail, aber ohne den Text den ich eingegeben habe!
Stehe momentan echt im Dunkeln!
-
- Beiträge: 115
- Registriert: Di 25. Nov 2003, 16:47
- Kontaktdaten:
so, ich nochmal
Habe bei mir jetzt nochmal Contenido 4.4.4 drauf gemacht.
Da bekomme ich die oben erwähnte Fehlermeldung nicht.
Allerdings habe ich immernoch das problem das zwar ne Mail verschickt wird, allerdings ohne Inhalt!
Habe auch das auf Seite 1 von Kummer beschreibene Beispielformular benutzt....
Kann mir da jemand helfen???
Habe bei mir jetzt nochmal Contenido 4.4.4 drauf gemacht.
Da bekomme ich die oben erwähnte Fehlermeldung nicht.
Allerdings habe ich immernoch das problem das zwar ne Mail verschickt wird, allerdings ohne Inhalt!
Habe auch das auf Seite 1 von Kummer beschreibene Beispielformular benutzt....
Kann mir da jemand helfen???
Formular Modul: Daten per Mail plus Option DB?
tach zusammen:
an folgender stelle wurde über das Thema schon geschrieben:
edit (falscher link): http://contenido.org/forum/viewtopic.ph ... &start=135
(s. frage david78)
edit (richtiger link): http://contenido.org/forum/viewtopic.ph ... trag+in+db
bezug frage alter schwede
beide möglichkeiten (mail oder eintrag zb. in eine txt-datei) funktionieren bei mir.
doch nun das anliegen: kann ich beide möglichkeiten kombinieren?
wie müsste der code dazu aussehen?
danke und gruss
sabsab
--
version: 4.4.5
an folgender stelle wurde über das Thema schon geschrieben:
edit (falscher link): http://contenido.org/forum/viewtopic.ph ... &start=135
(s. frage david78)
edit (richtiger link): http://contenido.org/forum/viewtopic.ph ... trag+in+db
bezug frage alter schwede
beide möglichkeiten (mail oder eintrag zb. in eine txt-datei) funktionieren bei mir.
doch nun das anliegen: kann ich beide möglichkeiten kombinieren?
wie müsste der code dazu aussehen?
danke und gruss
sabsab
--
version: 4.4.5
Zuletzt geändert von sabsab am Sa 18. Jun 2005, 09:52, insgesamt 1-mal geändert.
-
- Beiträge: 115
- Registriert: Di 25. Nov 2003, 16:47
- Kontaktdaten:
oh, sorry (das ging ja schnell), ist mir auch gerade aufgefallen (fehler beim copy+paste):
meine frage sollte sich eigentlich auf die frage von alter schwede beziehen:
http://contenido.org/forum/viewtopic.ph ... trag+in+db
hier der code:
function success() {
$daten = fopen ("datei.txt", "a");
fwrite($daten,"{$_POST['vorname']},{$_POST['name']}\n}"); fclose ($daten);
}
}
$formular = new localSpeichern();
$formular->process();
wie kann hier noch zusätzlich der e-mail versand eingebaut werden?
gruss
sabsab
meine frage sollte sich eigentlich auf die frage von alter schwede beziehen:
http://contenido.org/forum/viewtopic.ph ... trag+in+db
hier der code:
function success() {
$daten = fopen ("datei.txt", "a");
fwrite($daten,"{$_POST['vorname']},{$_POST['name']}\n}"); fclose ($daten);
}
}
$formular = new localSpeichern();
$formular->process();
wie kann hier noch zusätzlich der e-mail versand eingebaut werden?
gruss
sabsab
Hallo,
Ich habe probleme mit der validierung von email adressdaten.
Es ist nicht möglich eine emailadresse in form
hans-mueller@irgend-etwas.de oder
hans_mueller@irgend_etwas.de oder
einzugeben.
es hat sicherlich mit
zu tun aber ich habe immer stress mit dieser syntax 
Danke für eure hilfe
Remco
Ich habe probleme mit der validierung von email adressdaten.
Es ist nicht möglich eine emailadresse in form
hans-mueller@irgend-etwas.de oder
hans_mueller@irgend_etwas.de oder
einzugeben.
es hat sicherlich mit
Code: Alles auswählen
if (!empty($feld['valid']) && $feld['valid'] == 'email' && !eregi("^[öäüéàèâêîç_a-z0-9-]+(\.[öäüéàèâêîç_a-z0-9-]+)*@[öäüéàèâêîça-z0-9-]+(\.[öäüéàèâêîça-z0-9-]+)*$",$_POST["{$feld['name']}"])) return false;

Danke für eure hilfe
Remco
input type image
Hi Community!
Cooles Formular!
Ich hatte ein kleines Problem: und zwar wollte ich ein image als Absende-Button verwenden. Das funktioniert zwar, nur leider übermittelt das Script dann die Koordinaten der Stelle, wo man den Button gedrückt hatte in Form eines x und y-Wertes...
Ich habe mir nun so geholfen:
wobei das Augenmerk auf den 1. if-Zweig zu richten ist. Geht vielleicht auch eleganter, aber ich habe keine Zeit, keine Zeit 
tschöö
Cooles Formular!

Ich hatte ein kleines Problem: und zwar wollte ich ein image als Absende-Button verwenden. Das funktioniert zwar, nur leider übermittelt das Script dann die Koordinaten der Stelle, wo man den Button gedrückt hatte in Form eines x und y-Wertes...
Ich habe mir nun so geholfen:
Code: Alles auswählen
function add2Message($key,$value) {
if ($key == 'y' or $key == 'x'){
$this->email['message'] .= "";
}
else{
if (strlen($key) > 25 OR strlen($value) > 54) {
$this->email['message'] .= "$key\n$value\n";
}
else {
$this->email['message'] .= $key;
$this->email['message'] .= str_repeat(' ',25-strlen($key));
$this->email['message'] .= "$value\n";
}
}
}

tschöö
-------------------------------------------------------
wer Rechtshreibfhler findet, darf sie gerne behalten....
wer Rechtshreibfhler findet, darf sie gerne behalten....
-
- Beiträge: 62
- Registriert: Do 2. Jun 2005, 09:41
- Wohnort: BaWü
- Kontaktdaten:
Klasse Modul!
Eine kleine Sache wäre da allerdings:
Betrifft XHTML
Wie kann ich die jeweilige Bezeichner-ID in die Tags bringen ?
Es wurde zwar schonmal angesprochen,
irgendwie konnte ich da bisher noch keine Antwort drauf finden..
Kann jemand helfen ?
Nochwas: Wie schreibe ich ein radio-input checked="checked" ?
Edit:
Hab mir bereits selbst geholfen..
Einfach das doppelte size im Output durch id ersetzt
Die Sache mit dem selected:true; habe ich nach studieren der Posts hier selbst rausgefunden. Steht glaube ich nicht in der Anleitung..
Eine kleine Sache wäre da allerdings:
Betrifft XHTML
Wie kann ich die jeweilige Bezeichner-ID in die Tags bringen ?
Es wurde zwar schonmal angesprochen,
irgendwie konnte ich da bisher noch keine Antwort drauf finden..
Kann jemand helfen ?
Nochwas: Wie schreibe ich ein radio-input checked="checked" ?
Edit:
Hab mir bereits selbst geholfen..
Einfach das doppelte size im Output durch id ersetzt

Code: Alles auswählen
switch ($attribute['type']) {
case 'select':
case 'password':
case 'text':
case 'checkbox':
case 'radio':
case 'textarea':
if (!empty($attribute['id'])) $parameter .= " id=\"{$attribute['id']}\"";
break;
}
Hallo,
ich habe mich mit dem Modul mal etwas intensiver auseinandergesetzt und sowohl einige der bereits hier besprochenen Dinge eingefügt als auch ein paar neue. Vielleicht hilft's ja dem einen oder anderen weiter.
Bereits hier im Thread gelöst und mehr oder weniger übernommen:
Hier das Modul selbst:
Eingabe:
Ausgabe:
Ich hoffe, der eine oder die andere kann etwas damit anfangen.
Gruß,
Jan
ich habe mich mit dem Modul mal etwas intensiver auseinandergesetzt und sowohl einige der bereits hier besprochenen Dinge eingefügt als auch ein paar neue. Vielleicht hilft's ja dem einen oder anderen weiter.
Bereits hier im Thread gelöst und mehr oder weniger übernommen:
- - Erweiterung von Emergence bzgl. doppelter Anführungszeichen, CSS-Klassen und -Styles (S. 11 im Thread)
Dabei habe ich
inCode: Alles auswählen
if (preg_match('/###(\d)###/i', $namewert[1] , $match)) { $namewert[1] = $container[$match[1]]; }
geändert, da Contenido sonst dezent mit dem roten Pünktchen meckert (funktionieren tut's auch ohne die Änderung).Code: Alles auswählen
if (preg_match('/###(\d)###/i', $namewert[1] , $match)) { $namewert[1] = $container[intval($match[1])]; }
Es können also bei der Formulardefinition z. B.
class:myCssClass
style:"width: 120px; height: 50px;"
verwendet werden.
- doppelte "size"-Angabe entfernt (S. 9, etwas anders gelöst)
- Validierungtyp phone für Telefonnummern hinzugefügt (S. 6)
- Namen und E-Mail-Adresse des Formularbenutzers verwenden anstatt der vorkonfigurierten (S. 10). Ich habe dies so gelöst, dass die vorkonfigurierten Werte verwendet werden, wenn sie eingetragen wurden, sonst die des Formularbenutzers. Im Formular sollten die Eingabefelder "E-Mail-Adresse", "Vorname" und "Nachname" heißen; ansonsten müssen die Werte im Ausgabe-Skript des Moduls angepasst werden, und zwar fast ganz unten, vor
Code: Alles auswählen
$formular->setEmailFrom($ccs_sender_email, $ccs_sender_name);
- Der Linefeed-Fix ist natürlich auch enthalten (Validierungstyp textwithlinefeed für Textareas), ebenso "mod2" für dynamische Feldvorbelegungen (beides S. 4).
- - Zunächst habe ich die Validierung einer Liste von festgelegten Optionen umgesetzt, die häufiger gewünscht wurde (S. 6). Dazu habe ich den Validierungstyp given_options hinzugefügt. Zusätzlich muss dann die Option possible_values mit einer durch das Pipe-Symbol separierten Liste der möglichen Optionen angegeben werden. Beispiel:
valid:given_options; possible_values:Frau|Herr;
- Übergabe des Absendezeitpunkts (Datum/Zeit) in der generierten Mail (S. 12). Dafür ist der neue Typ datetime anzugeben (type:datetime;). Weitere Angaben sind nicht nötig (und auch ohne Effekt). Es wird ein verstecktes Formularfeld angelegt, was für die Übergabe an die Mail genügt. Die Zeit wird beim Senden der Mail noch einmal aktualisiert.
- Es lassen sich in der Konfiguration des Moduls nun Fehlermeldungen (S. 8 ) ein- und ausschalten und auch per CSS formatieren (class / style). Die Meldungen erscheinen jeweils unter dem fehlerhaft ausgefüllten Feld. Die Meldungen lassen sich in der Funktion (bzw. Methode) formularFeldKorrekt() anpassen.
- Wer möchte, kann die per Formular übergebenen Werte nun auch auf der Bestätigungsseite ausgeben (S. 7). Dafür muss im Artikel im zweiten Feld (unter "Hier ist die Ausgabe einzugeben, die erscheint, wenn das Formular erfolgreich verarbeitet wurde:") an geeigneter Stelle
###sent_data###
eingetragen werden. Wurde in der Modul-Konfiguration gewählt, dass die Werte angezeigt werden, wird der Eintrag durch eine entsprechende Tabelle ersetzt, sonst durch den leeren String. Die Tabelle lässt sich in der Modul-Konfiguration per CSS formatieren. Die linke Spalte besteht aus <th>-Zellen, die rechte aus <td>-Zellen. Der Absende-Zeitpunkt wird nicht angezeigt, auch wenn diese Funktion für die Mail eingefügt wurde.
- - In der Modul-Konfiguration können zwei Texte eingegeben werden, die vor und nach der Datenliste in der Mail erscheinen.
- Ich habe die Formatierung der Mail etwas geändert, da die meisten wohl eher Proportionalschrift im Mail-Client angezeigt bekommen. Ich habe daher die eigentlichen Daten jeweils eine Zeile unter dem Feldnamen angeordnet, dafür dann definitiv linksbündig untereinander. Das wird nicht jedermanns Sache sein - ggf. in der Funktion add2Message() wieder ändern (ich habe den alten Code nur auskommentiert).
- Noch ein paar kleinere Dinge:
Das Datumsformat habe ich auf vierstellige Jahreszahlen geändert.
In der Funktion formularFeldKorrekt() habe ich das ß als erlaubtes Zeichen hinzugefügt - es wundert mich, dass das noch niemandem aufgefallen ist (oder alle haben's selbst geändert).
In der Funktion sendEmail() habe ich weitere Submit-Button-Namen eingetragen. Mit Hilfe der Funktion suppress() wird verhindert, dass auch der jeweilige Submit-Button mit in der Mail auftaucht. Wer einen anderen Namen bevorzugt, kann ihn hier in die Liste eintragen.
XHTML-Validierung: Der W3C-Validierer meckerte über das groß geschriebene POST in <form action="" method="POST"> (Funktion formularAusgabe() und den Parameter wrap in Textareas. Ersteres habe ich durch Kleinbuchstaben ersetzt, Letzteres entfernt.

Hier das Modul selbst:
Eingabe:
Code: Alles auswählen
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : w3concepts.form.mod2.v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 15-10-2004
* Modified : 15-10-2004
************************************************
* Modified by Jan-Christoph Ihrens 2005-06-27
* See http://www.contenido.org/forum/viewtopic.php?t=5066&postdays=0&postorder=asc&start=165
* (Nickname: Enigma)
************************************************/
?>
<table cellspacing="0" cellpadding="10" border="0">
<!-- <tr style="vertical-align: top;"> -->
<tr>
<td class="text_medium" style="vertical-align: top;">Empfänger-E-Mail-Adresse (alias@mydomain.com):</td>
<td class="text_medium" style="vertical-align: top;"><input type="text" name="CMS_VAR[0]" value="CMS_VALUE[0]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">Betreff:</td>
<td class="text_medium" style="vertical-align: top;"><input type="text" name="CMS_VAR[1]" value="CMS_VALUE[1]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Absender-E-Mail-Adresse (alias@mydomain.com):<br>
(frei lassen, wenn E-Mail-Adresse des Formularbenutzers verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top;"><input type="text" name="CMS_VAR[2]" value="CMS_VALUE[2]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top; border-bottom: 1px solid #747488;">
Absendername (z. B. Vorname Name):<br>
(frei lassen, wenn Name des Formularbenutzers verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top; border-bottom: 1px solid #747488;"><input type="text" name="CMS_VAR[3]" value="CMS_VALUE[3]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Hintergrundfarbe bei Fehlern (z. B. red oder #FF0000):<br>
(frei lassen, wenn die Standardfarbe verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top;"><input type="text" name="CMS_VAR[4]" value="CMS_VALUE[4]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Rahmenfarbe bei Fehlern (z. B. red oder #FF0000):<br>
(frei lassen, wenn die Standardfarbe verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top;"><input type="text" name="CMS_VAR[5]" value="CMS_VALUE[5]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top; border-bottom: 1px solid #747488;">
Schriftfarbe bei Fehlern (z. B. red oder #FF0000):<br>
(frei lassen, wenn die Standardfarbe verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top; border-bottom: 1px solid #747488;"><input type="text" name="CMS_VAR[6]" value="CMS_VALUE[6]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">Fehlermeldungen anzeigen bei Fehlern:</td>
<td class="text_medium" style="vertical-align: top;">
<input type="radio" name="CMS_VAR[7]" value="yes"<?php if ('yes' == "CMS_VALUE[7]") { echo ' checked="checked"'; } ?>>
ja<br>
<input type="radio" name="CMS_VAR[7]" value="no"<?php if ('no' == "CMS_VALUE[7]") { echo ' checked="checked"'; } ?>>
nein
</td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top; border-bottom: 1px solid #747488;">
CSS-Schriftformatierungs-Attribute der Fehlermeldungen<br>
(z. B. style="font-weight: bold; color: #FF0000;" oder class="errorMessage"):<br>
(frei lassen, wenn die Standardformatierung verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top; line-height: 250%; border-bottom: 1px solid #747488;">
class=" <input type="text" name="CMS_VAR[8]" value="CMS_VALUE[8]" size="30" /> "<br>
style=" <input type="text" name="CMS_VAR[9]" value="CMS_VALUE[9]" size="30" /> "
</td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Übermittelte Daten auf Bestätigungsseite anzeigen:
</td>
<td class="text_medium" style="vertical-align: top;">
<input type="radio" name="CMS_VAR[10]" value="yes"<?php if ('yes' == "CMS_VALUE[10]") { echo ' checked="checked"'; } ?>>
ja<br>
<input type="radio" name="CMS_VAR[10]" value="no"<?php if ('no' == "CMS_VALUE[10]") { echo ' checked="checked"'; } ?>>
nein
</td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Bestätigungsseite: CSS-Schriftformatierungs-Attribute für Tabelle<br>
(z. B. style="border: none;" oder class="dataTable"):<br>
(frei lassen, wenn die Standardformatierung verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top; line-height: 250%;">
class=" <input type="text" name="CMS_VAR[11]" value="CMS_VALUE[11]" size="30" /> "<br>
style=" <input type="text" name="CMS_VAR[12]" value="CMS_VALUE[12]" size="30" /> "
</td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Bestätigungsseite: CSS-Schriftformatierungs-Attribute für Tabellenzeilen<br>
(z. B. style="height: 25px;" oder class="tableRow"):<br>
(frei lassen, wenn die Standardformatierung verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top; line-height: 250%;">
class=" <input type="text" name="CMS_VAR[13]" value="CMS_VALUE[13]" size="30" /> "<br>
style=" <input type="text" name="CMS_VAR[14]" value="CMS_VALUE[14]" size="30" /> "
</td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Bestätigungsseite: CSS-Schriftformatierungs-Attribute für linke Tabellenzellen (<th>)<br>
(z. B. style="padding-right: 20px; padding-bottom: 15px;" oder class="leftTableColumn"):<br>
(frei lassen, wenn die Standardformatierung verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top; line-height: 250%;">
class=" <input type="text" name="CMS_VAR[15]" value="CMS_VALUE[15]" size="30" /> "<br>
style=" <input type="text" name="CMS_VAR[16]" value="CMS_VALUE[16]" size="30" /> "
</td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top; border-bottom: 1px solid #747488;">
Bestätigungsseite: CSS-Schriftformatierungs-Attribute für rechte Tabellenzellen (<td>)<br>
(z. B. style="padding-bottom: 15px;" oder class="rightTableColumn"):<br>
(frei lassen, wenn die Standardformatierung verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top; line-height: 250%; border-bottom: 1px solid #747488;">
class=" <input type="text" name="CMS_VAR[17]" value="CMS_VALUE[17]" size="30" /> "<br>
style=" <input type="text" name="CMS_VAR[18]" value="CMS_VALUE[18]" size="30" /> "
</td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Standardtext, der in der E-Mail vor den Daten eingefügt wird:
</td>
<td class="text_medium" style="vertical-align: top;"><textarea name="CMS_VAR[19]" cols="30" rows="5">CMS_VALUE[19]</textarea></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Standardtext, der in der E-Mail nach den Daten eingefügt wird:
</td>
<td class="text_medium" style="vertical-align: top;"><textarea name="CMS_VAR[20]" cols="30" rows="5">CMS_VALUE[20]</textarea></td>
</tr>
</table>
<?php
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : w3concepts.form.mod2.v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 15-10-2004
* Modified : 15-10-2004
************************************************
* Modified by Jan-Christoph Ihrens 2005-06-27
* See http://www.contenido.org/forum/viewtopic.php?t=5066&postdays=0&postorder=asc&start=165
* (Nickname: Enigma)
************************************************/
class w3form {
var $email, $aufgedroeselt, $form, $formularFeld;
function w3form() {
}
// PRIVATE
function sendEmail() {
// hier die Namen der Formularfelder eintragen, die nicht mit in die eMail
// aufgenommen werden sollen (z. B. Submit-Button, versteckte Formularfelder, die
// nur internen Zwecken dienen etc.)
$this->aufdroeseln($this->suppress('sent', 'submit', 'submit_form', 'form_submit', 'submit_button', 'button_submit'));
$this->generateEmailMessage();
mail($this->email['adresses'], $this->email['subject'], $this->form['mailText1'].$this->email['message'].$this->form['mailText2'], "From: {$this->email['from']['name']} <{$this->email['from']['email']}>\nReply-To: {$this->email['from']['email']}\nX-Mailer: PHP/".phpversion());
}
// PRIVATE
function aufdroeseln($aufzudroeseln, $prefix = '') {
foreach ($aufzudroeseln as $key => $value) {
if (is_array($value)) {
$this->aufdroeseln($value, $key." ");
} else {
$this->aufgedroeselt["{$prefix}{$key}"] = $value;
}
}
}
// PRIVATE
function add2Message($key, $value) {
/*
if (strlen($key) > 25 OR strlen($value) > 54) {
$this->email['message'] .= "$key\n$value\n";
} else {
$this->email['message'] .= $key;
$this->email['message'] .= str_repeat(' ', 25 - strlen($key));
$this->email['message'] .= "$value\n";
}
*/
$max_line_length = 75;
$indentation = 30;
if ('date_time' == $key) {
$value = date('d.m.Y, H:i');
}
$this->email['message'] .= $key.':'.CCS_LF;
if ((strlen($value) <= $max_line_length - $indentation) and (strpos($value, CCS_LF) === false)) {
$this->email['message'] .= str_repeat(' ', $indentation);
}
$this->email['message'] .= $value.CCS_LF.CCS_LF;
}
// PRIVATE
function generateEmailMessage() {
if ($this->aufgedroeselt) {
foreach ($this->aufgedroeselt as $key => $value) {
$this->add2Message($key, $value);
}
}
}
// PRIVATE
function suppress() {
$suppress = func_get_args();
foreach ($_POST as $key => $value) {
if (array_search($key, $suppress) === false) {
$fields[$key] = $value;
}
}
return $fields;
}
// PUBLIC
function addEmailAdress($email) {
if (empty($this->emailAdresses)) {
$this->email['adresses'] .= $email;
} else {
$this->email['adresses'] .= ', '.$email;
}
}
// PUBLIC
function setEmailSubject($subject) {
$this->email['subject'] = $subject;
}
// PUBLIC
function setEmailFrom($email, $name) {
$this->email['from']['email'] = $email;
$this->email['from']['name'] = $name;
}
// PUBLIC
function setForm($form) {
$this->form['form'] = $form;
}
// PUBLIC
function setAnswer($answer) {
$this->form['answer'] = $answer;
}
// PUBLIC
function setBackgroundError($color) {
$this->form['colorBackgroundError'] = $color;
}
// PUBLIC
function setBorderError($color) {
$this->form['colorBorderError'] = $color;
}
// PUBLIC
function setFontError($color) {
$this->form['colorFontError'] = $color;
}
// PUBLIC
function setMessageError($activate) {
$this->form['showErrorMessage'] = (trim($activate) == 'yes');
}
// PUBLIC
function setMessageCssClassError($cssClass) {
$this->form['errorMessageCssClass'] = trim($cssClass);
}
// PUBLIC
function setMessageCssStyleError($cssStyle) {
$this->form['errorMessageCssStyle'] = trim($cssStyle);
}
// PUBLIC
function setShowDataStatus($status) {
$this->form['showData'] = (trim($status) == 'yes');
}
// PUBLIC
function setConfirmationDataTableCssClass($cssClass) {
$this->form['ConfirmationDataTableCssClass'] = trim($cssClass);
}
// PUBLIC
function setConfirmationDataTableCssStyle($cssStyle) {
$this->form['ConfirmationDataTableCssStyle'] = trim($cssStyle);
}
// PUBLIC
function setConfirmationDataTrCssClass($cssClass) {
$this->form['ConfirmationDataTrCssClass'] = trim($cssClass);
}
// PUBLIC
function setConfirmationDataTrCssStyle($cssStyle) {
$this->form['ConfirmationDataTrCssStyle'] = trim($cssStyle);
}
// PUBLIC
function setConfirmationDataThCssClass($cssClass) {
$this->form['ConfirmationDataThCssClass'] = trim($cssClass);
}
// PUBLIC
function setConfirmationDataThCssStyle($cssStyle) {
$this->form['ConfirmationDataThCssStyle'] = trim($cssStyle);
}
// PUBLIC
function setConfirmationDataTdCssClass($cssClass) {
$this->form['ConfirmationDataTdCssClass'] = trim($cssClass);
}
// PUBLIC
function setConfirmationDataTdCssStyle($cssStyle) {
$this->form['ConfirmationDataTdCssStyle'] = trim($cssStyle);
}
// PUBLIC
function setMailText1($text) {
$text = trim($text);
if ('' != $text) {
$text .= CCS_LF.CCS_LF.CCS_LF.CCS_LF;
}
$this->form['mailText1'] = $text;
}
// PUBLIC
function setMailText2($text) {
$text = trim($text);
if ('' != $text) {
$text = CCS_LF.CCS_LF.$text;
}
$this->form['mailText2'] = $text;
}
/*
// PRIVATE
function getActualErrorMessage() {
return $this->form['actualErrorMessage'];
}
*/
/* CCS begin */
// Funktion ersetzt gemäß http://www.contenido.org/forum/viewtopic.php?p=46196#46196
/*
// PRIVATE
function formularInterpretation(&$formular) {
$felder = split('###', $formular);
for ($i = 1; $i < count($felder); $i = $i + 2) {
$attributes = split(';', trim($felder[$i]));
foreach ($attributes as $attribut) {
$namewert = split(':', trim($attribut));
if ($namewert[0] != 'option' && $namewert[0] != 'optionvalue') {
$feld["{$felder[$i]}"]["{$namewert[0]}"] = $namewert[1];
} else {
$feld["{$felder[$i]}"]["{$namewert[0]}"][] = $namewert[1];
}
}
}
return $feld;
}
*/
// PRIVATE
function formularInterpretation(&$formular) {
$felder = split('###', $formular);
for ($i = 1; $i < count($felder); $i = $i + 2) {
$tempField = trim(html_entity_decode($felder[$i]));
$container = "";
if (preg_match_all('/("[^"]+")/i', $tempField, $matches)) {
$x = 0;
foreach ($matches[0] as $match) {
$x++;
$tempField = str_replace($match, "###".$x."###", $tempField);
$container[$x] = str_replace('"', '', $match);
}
}
$attributes = split(';', $tempField);
foreach ($attributes as $attribut) {
if ($attribut != "") {
$namewert = split(':', trim($attribut));
if (preg_match('/###(\d)###/i', $namewert[1] , $match)) {
$namewert[1] = $container[intval($match[1])];
}
if ($namewert[0] != 'option' && $namewert[0] != 'optionvalue') {
$feld["{$felder[$i]}"]["{$namewert[0]}"] = $namewert[1];
} else {
$feld["{$felder[$i]}"]["{$namewert[0]}"][] = $namewert[1];
}
}
}
}
return $feld;
}
/* CCS end */
// PRIVATE
function formularAusgabe($sent = false) {
echo '<form action="" method="post">';
echo '<input type="hidden" name="sent" value="true" />';
$formular = $this->form['form'];
$formulardaten = $this->formularInterpretation(&$formular);
$formular = split('###', $formular);
foreach ($formular as $formularteil) {
if (!empty($formulardaten["{$formularteil}"])) {
$this->formularFeld($formulardaten["{$formularteil}"], $sent);
} else {
echo $formularteil;
}
}
echo '</form>';
}
// PRIVATE
function formularFeld($attribute, $sent) {
$parameter = 'name="'.$attribute['name'].'"';
if (!empty($attribute['id'])) {
$parameter .= ' id="'.$attribute['id'].'"';
$ccs_id_param = 'id="'.$attribute['id'].'"';
}
/* CCS begin */
// geändert gemäß http://www.contenido.org/forum/viewtopic.php?p=46196#46196
/*
if ($sent && !$this->formularFeldKorrekt(&$attribute))
$style = "style=\"background-color:{$this->form['colorError']};\"";
*/
$style = $attribute['style'];
if ($sent && !$this->formularFeldKorrekt(&$attribute)) {
if (!empty($this->form['colorBackgroundError'])) {
if ('' != $style) {
$style .= ' ';
}
$style .= 'background-color: '.$this->form['colorBackgroundError'].';';
}
if (!empty($this->form['colorBorderError'])) {
if ('' != $style) {
$style .= ' ';
}
$style .= 'border: 3px solid '.$this->form['colorBorderError'].';';
}
if (!empty($this->form['colorFontError'])) {
if ('' != $style) {
$style .= ' ';
}
$style .= 'color: '.$this->form['colorFontError'].';';
}
}
if ('' != $style) {
$style = 'style="'.$style.'"';
}
if (!empty($attribute['class'])) {
$style = 'class="'.$attribute['class'].'" '.$style;
}
/* CCS end */
switch ($attribute['type']) {
case 'select':
case 'password':
/* CCS begin */
// bereits unten enthalten (würde sonst doppelt erzeugt):
// case 'text':
/* CCS end */
if (!empty($attribute['size']))
$parameter .= ' size="'.$attribute['size'].'"';
break;
}
switch ($attribute['type']) {
case 'textarea':
case 'text':
if (!empty($attribute['size']))
$parameter .= ' size="'.$attribute['size'].'"';
if (!empty($attribute['value']))
$value = $attribute['value'];
if (!empty($_REQUEST["{$attribute['name']}"]))
$value = $_REQUEST["{$attribute['name']}"];
break;
}
switch ($attribute['type']) {
case 'text':
echo '<input type="text" '.$parameter.' value="'.$value.'" '.$style.' />';
break;
case 'password':
echo '<input type="password" '.$parameter.' value="'.$value.'" '.$style.' />';
break;
case 'textarea':
echo '<textarea name="'.$attribute['name'].'" '.$ccs_id_param.' cols="'; // $parameter?
echo (empty($attribute['cols'])) ? ('20') : ($attribute['cols']);
echo '" rows="';
echo (empty($attribute['rows'])) ? ('2') : ($attribute['rows']);
echo '" '.$style.'>'.$value.'</textarea>';
// wrap="virtual" nicht valide!
break;
case 'select':
echo CCS_LF.'<select '.$parameter.' '.$style.'>'.CCS_LF;
for ($i = 0; $i < count($attribute['option']); $i++) {
if (!empty($attribute['optionvalue'][$i])) {
if (!empty($_REQUEST["{$attribute['name']}"]) && $_REQUEST["{$attribute['name']}"] == $attribute['optionvalue'][$i]) {
echo '<option value="'.$attribute['optionvalue'][$i].'" selected="selected">'.$attribute['option'][$i].'</option>'.CCS_LF;
} else {
if (empty($_REQUEST["{$attribute['name']}"]) && !empty($attribute['optionvalue'][$i]) && $attribute['optionvalue'][$i] == $attribute['value']) {
echo '<option value="'.$attribute['optionvalue'][$i].'" selected="selected">'.$attribute['option'][$i].'</option>'.CCS_LF;
} else {
echo '<option value="'.$attribute['optionvalue'][$i].'">'.$attribute['option'][$i].'</option>'.CCS_LF;
}
}
} else {
if (!empty($_REQUEST["{$attribute['name']}"]) && $_REQUEST["{$attribute['name']}"] == $attribute['option'][$i]) {
echo '<option selected="selected">'.$attribute['option'][$i].'</option>'.CCS_LF;
} else {
if (empty($_REQUEST["{$attribute['name']}"]) && $attribute['option'][$i] == $attribute['value']) {
echo '<option selected="selected">'.$attribute['option'][$i].'</option>'.CCS_LF;
} else {
echo '<option>'.$attribute['option'][$i].'</option>'.CCS_LF;
}
}
}
}
echo '</select>'.CCS_LF;
break;
case 'checkbox':
$formularbezeichner = preg_split('[\[|\]]', $attribute['name']);
if ($sent) {
if ($_REQUEST["{$formularbezeichner[0]}"]["{$formularbezeichner[1]}"] == $attribute['value']) {
echo '<input type="checkbox" '.$parameter.' value="'.$attribute['value'].'" checked="checked" />';
} else {
echo '<input type="checkbox" '.$parameter.' value="'.$attribute['value'].'" />';
}
} else {
if (!empty($attribute['selected']) && $attribute['selected'] == 'true') {
echo '<input type="checkbox" '.$parameter.' value="'.$attribute['value'].'" checked="checked" />';
} else {
echo '<input type="checkbox" '.$parameter.' value="'.$attribute['value'].'" />';
}
}
break;
case 'radio':
if (!empty($_REQUEST["{$attribute['name']}"])) {
if ($_REQUEST["{$attribute['name']}"] == $attribute['value']) {
echo '<input type="radio" '.$parameter.' value="'.$attribute['value'].'" checked="checked" />';
} else {
echo '<input type="radio" '.$parameter.' value="'.$attribute['value'].'" />';
}
} else {
if (!empty($attribute['selected']) && $attribute['selected'] == 'true') {
echo '<input type="radio" '.$parameter.' value="'.$attribute['value'].'" checked="checked" />';
} else {
echo '<input type="radio" '.$parameter.' value="'.$attribute['value'].'" />';
}
}
break;
case 'datetime':
echo '<input type="hidden" name="date_time" id="date_time" value="gesendet am '.date('d.m.Y, H:i').' Uhr" />';
break;
}
if ($this->form['showErrorMessage'] and ('' != $this->form['actualErrorMessage'])) {
echo '<br />'.CCS_LF;
$cssAttributes = '';
if ('' != $this->form['errorMessageCssClass']) {
$cssAttributes .= ' class="'.$this->form['errorMessageCssClass'].'"';
}
if ('' != $this->form['errorMessageCssStyle']) {
$cssAttributes .= ' style="'.$this->form['errorMessageCssStyle'].'"';
}
echo '<span'.$cssAttributes.'">'.$this->form['actualErrorMessage'].'</span>';
}
}
// PRIVATE
function formularVollstaendig() {
$formular = $this->form['form'];
$felder = $this->formularInterpretation(&$formular);
foreach ($felder as $feld) {
if (!$this->formularFeldKorrekt(&$feld))
return false;
}
return true;
}
// PRIVATE
function add2ConfirmationPage($key, $value) {
$tr_style = '';
if ('' != $this->form['ConfirmationDataTrCssClass']) {
$tr_style .= ' class="'.$this->form['ConfirmationDataTrCssClass'].'"';
}
if ('' != $this->form['ConfirmationDataTrCssStyle']) {
$tr_style .= ' style="'.$this->form['ConfirmationDataTrCssStyle'].'"';
}
$th_style = '';
if ('' != $this->form['ConfirmationDataThCssClass']) {
$th_style .= ' class="'.$this->form['ConfirmationDataThCssClass'].'"';
}
if ('' != $this->form['ConfirmationDataThCssStyle']) {
$th_style .= ' style="'.$this->form['ConfirmationDataThCssStyle'].'"';
}
$td_style = '';
if ('' != $this->form['ConfirmationDataTdCssClass']) {
$td_style .= ' class="'.$this->form['ConfirmationDataTdCssClass'].'"';
}
if ('' != $this->form['ConfirmationDataTdCssStyle']) {
$td_style .= ' style="'.$this->form['ConfirmationDataTdCssStyle'].'"';
}
$this->confirmationDataTable .= ' <tr'.$tr_style.'>'.CCS_LF;
$this->confirmationDataTable .= ' <th'.$th_style.'>'.$key.':</th>'.CCS_LF;
$this->confirmationDataTable .= ' <td'.$td_style.'>'.$value.'</td>'.CCS_LF;
$this->confirmationDataTable .= ' </tr>'.CCS_LF;
}
// PRIVATE
function prepareConfirmationDataTable() {
$this->confirmationDataTable = '';
if ($this->aufgedroeselt) {
$table_style = '';
if ('' != $this->form['ConfirmationDataTableCssClass']) {
$table_style .= ' class="'.$this->form['ConfirmationDataTableCssClass'].'"';
}
if ('' != $this->form['ConfirmationDataTableCssStyle']) {
$table_style .= ' style="'.$this->form['ConfirmationDataTableCssStyle'].'"';
}
$this->confirmationDataTable .= '<table'.$table_style.'>'.CCS_LF;
foreach ($this->aufgedroeselt as $key => $value) {
if ('date_time' != $key) {
$this->add2ConfirmationPage($key, $value);
}
}
$this->confirmationDataTable .= '</table>'.CCS_LF;
}
}
// PRIVATE
function success() {
$this->sendEmail();
if (false !== strpos($this->form['answer'], '###sent_data###')) {
if ($this->form['showData']) {
$this->prepareConfirmationDataTable();
$this->form['answer'] = str_replace('###sent_data###', $this->confirmationDataTable, $this->form['answer']);
} else {
$this->form['answer'] = str_replace('###sent_data###', '', $this->form['answer']);
}
}
echo $this->form['answer'];
}
// PRIVATE
function formularFeldKorrekt(&$feld) {
$this->form['actualErrorMessage'] = '';
// prüfung, ob pflichtfeld vorhanden
if (!empty($feld['mandatory']) && $feld['mandatory'] == 'true' && empty($_POST["{$feld['name']}"])) {
$this->form['actualErrorMessage'] = 'Bitte füllen Sie dieses Feld aus!';
return false;
}
if (!empty($feld['valid']) && $feld['valid'] == 'given_options' && !empty($feld['possible_values'])) {
$possibleValues = explode('|', $feld['possible_values']);
foreach ($possibleValues as $key => $val) {
$possibleValues[$key] = trim($val);
}
if (!in_array($_POST["{$feld['name']}"], $possibleValues)) {
$this->form['actualErrorMessage'] = 'Es sind ausschließlich folgende Werte erlaubt (ohne die Anführungszeichen): ';
$i = 0;
foreach ($possibleValues as $val) {
$i++;
if (1 != $i) {
$this->form['actualErrorMessage'] .= ', ';
}
$this->form['actualErrorMessage'] .= '"'.$val.'"';
}
return false;
}
}
// wenn das formularfeld kein pflichtfeld und nicht vorhanden ist, true zurück geben
if (empty($_POST["{$feld['name']}"])) {
return true;
}
// regular expression prüfungen
if (!empty($feld['valid']) && $feld['valid'] == 'simpletext' && !eregi("^[öäüßéàèâêîça-z0-9-]*$", $_POST["{$feld['name']}"])) {
$this->form['actualErrorMessage'] = 'Bitte verwenden Sie ausschließlich Buchstaben, Ziffern und den Bindestrich!';
return false;
}
if (!empty($feld['valid']) && $feld['valid'] == 'text' && !eregi("^[ .,;!?()öäüßéàèâêîça-z0-9-]*$", $_POST["{$feld['name']}"])) {
$this->form['actualErrorMessage'] = 'Bitte verwenden Sie ausschließlich Buchstaben, Ziffern, das Leerzeichen sowie die Zeichen -.,;!?()';
return false;
}
if (!empty($feld['valid']) && $feld['valid'] == 'textwithlinefeed' && !eregi("^[ \r\n.,;!?()öäüßéàèâêîça-z0-9-]*$",$_POST["{$feld['name']}"])) {
return false;
$this->form['actualErrorMessage'] = 'Bitte verwenden Sie ausschließlich Buchstaben, Ziffern, das Leerzeichen sowie die Zeichen -.,;!?()';
}
if (!empty($feld['valid']) && $feld['valid'] == 'integer' && !eregi("^[0-9]*$", $_POST["{$feld['name']}"])) {
$this->form['actualErrorMessage'] = 'Bitte geben Sie ausschließlich Ziffern ein!';
return false;
}
if (!empty($feld['valid']) && $feld['valid'] == 'float' && !eregi("^[0-9]*[.]{0,1}[0-9]*$", $_POST["{$feld['name']}"])) {
$this->form['actualErrorMessage'] = 'Bitte geben Sie ausschließlich Ziffern und ggf. einen Dezimalpunkt (kein Komma!) ein!';
return false;
}
if (!empty($feld['valid']) && $feld['valid'] == 'date' && !eregi("^[0-9]{1,2}.[0-9]{1,2}.[0-9]{4}$", $_POST["{$feld['name']}"])) {
$this->form['actualErrorMessage'] = 'Bitte geben Sie ein Datum in der Form TT.MM.YYYY ein!';
return false;
}
if (!empty($feld['valid']) && $feld['valid'] == 'email' && !eregi("^[öäüéàèâêîç_a-z0-9-]+(\.[öäüéàèâêîç_a-z0-9-]+)*@[öäüéàèâêîça-z0-9-]+(\.[öäüéàèâêîça-z0-9-]+)*$", $_POST["{$feld['name']}"])) {
$this->form['actualErrorMessage'] = 'Bitte geben Sie eine gültige eMail-Adresse ein!';
return false;
}
if (!empty($feld['valid']) && $feld['valid'] == 'phone' && !eregi("^([+][ ]?[1-9][0-9][ ]?[-]?[ ]?|[(]?[0][ ]?)[0-9]{2,4}[-)/ ]?[ ]?[1-9][-0-9 ]{3,16}$", $_POST["{$feld['name']}"])) {
$this->form['actualErrorMessage'] = 'Bitte geben Sie eine gültige Telefonnummer ein!';
return false;
}
// grössenbereich bei integer und float prüfen
if (!empty($feld['minvalue']) && $_POST["{$feld['name']}"] < $feld['minvalue']) {
$this->form['actualErrorMessage'] = 'Bitte geben Sie eine Zahl ein, die größer oder gleich '.$feld['minvalue'].' ist!';
return false;
}
if (!empty($feld['maxvalue']) && $_POST["{$feld['name']}"] > $feld['maxvalue']) {
$this->form['actualErrorMessage'] = 'Bitte geben Sie eine Zahl ein, die kleiner oder gleich '.$feld['maxvalue'].' ist!';
return false;
}
// längenbereich bei allen typen prüfen
if (!empty($feld['minlength']) && strlen($_POST["{$feld['name']}"]) < $feld['minlength']) {
$this->form['actualErrorMessage'] = 'Die Eingabe muss mindestens '.$feld['minlength'].' Zeichen lang sein!';
return false;
}
if (!empty($feld['maxlength']) && strlen($_POST["{$feld['name']}"]) > $feld['maxlength']) {
$this->form['actualErrorMessage'] = 'Die Eingabe darf höchstens '.$feld['maxlength'].' Zeichen lang sein!';
return false;
}
return true;
}
//PUBLIC
function process() {
if (!isset($_POST['sent'])) {
$this->formularAusgabe();
} elseif ($this->formularVollstaendig()) {
$this->success();
} else {
$this->formularAusgabe(true);
}
}
}
define('CCS_LF', "\n");
if ($edit) {
echo "<h1>Formularkonfiguration</h1>";
echo "<p>Hier ist das Formular einzugeben sowie der Text, der zusammen mit dem Formular ausgegeben werden soll:</p>";
echo "CMS_HTML[0]";
echo "<p>Hier ist die Ausgabe einzugeben, die erscheint, wenn das Formular erfolgreich verarbeitet wurde:</p>";
echo "CMS_HTML[1]";
} else {
$formular = new w3form();
$formular->addEmailAdress("CMS_VALUE[0]");
$formular->setEmailSubject("CMS_VALUE[1]");
if ('' == trim("CMS_VALUE[2]")) {
$ccs_sender_email = $_POST['E-Mail-Adresse'];
} else {
$ccs_sender_email = trim("CMS_VALUE[2]");
}
if ('' == trim("CMS_VALUE[3]")) {
$ccs_sender_name = $_POST['Vorname'].' '.$_POST['Nachname'];
} else {
$ccs_sender_name = trim("CMS_VALUE[3]");
}
$formular->setEmailFrom($ccs_sender_email, $ccs_sender_name);
$formular->setBackgroundError("CMS_VALUE[4]");
$formular->setBorderError("CMS_VALUE[5]");
$formular->setFontError("CMS_VALUE[6]");
$formular->setMessageError("CMS_VALUE[7]");
$formular->setMessageCssClassError("CMS_VALUE[8]");
$formular->setMessageCssStyleError("CMS_VALUE[9]");
$formular->setShowDataStatus("CMS_VALUE[10]");
$formular->setConfirmationDataTableCssClass("CMS_VALUE[11]");
$formular->setConfirmationDataTableCssStyle("CMS_VALUE[12]");
$formular->setConfirmationDataTrCssClass("CMS_VALUE[13]");
$formular->setConfirmationDataTrCssStyle("CMS_VALUE[14]");
$formular->setConfirmationDataThCssClass("CMS_VALUE[15]");
$formular->setConfirmationDataThCssStyle("CMS_VALUE[16]");
$formular->setConfirmationDataTdCssClass("CMS_VALUE[17]");
$formular->setConfirmationDataTdCssStyle("CMS_VALUE[18]");
$formular->setMailText1("CMS_VALUE[19]");
$formular->setMailText2("CMS_VALUE[20]");
$formular->setForm("CMS_HTML[0]");
$formular->setAnswer("CMS_HTML[1]");
$formular->process();
}
?>
Gruß,
Jan
This message has been ROT-13 encrypted twice for higher security.
Hallo sabsab,sabsab hat geschrieben:function success() {
$daten = fopen ("datei.txt", "a");
fwrite($daten,"{$_POST['vorname']},{$_POST['name']}\n}"); fclose ($daten);
}
}
$formular = new localSpeichern();
$formular->process();
wie kann hier noch zusätzlich der e-mail versand eingebaut werden?
da Du mich direkt per PN noch einmal danach gefragt hast (eigentlich ist das Forum dafür besser geeignet

Code: Alles auswählen
// PRIVATE
function write2file($path, $data, $fopen_mode) {
$file_access_ok = true;
$file_open = false;
clearstatcache();
// ist Datei beschreibbar?
if (file_exists($path)) {
if (!is_writable($path)) {
$result = 'file_not_writable';
$file_access_ok = false;
}
}
// wenn Datei existiert und beschreibbar ist, öffnen und Ergebnis des Öffnens überprüfen,
// sonst versuchen, die Datei anzulegen und Erfolg dieses Vorgangs ebenfalls prüfen
if ($file_access_ok and (!$file_handle = @fopen($path, $fopen_mode))) {
$result = 'cannot_open_file';
$file_access_ok = false;
}
// Daten in die Datei schreiben und Schreibvorgang überprüfen
if ($file_access_ok) {
if (!fwrite($file_handle, $data) and ($data != '')) {
$result = 'cannot_write_to_file';
$file_access_ok = false;
} else {
$file_open = true;
}
if ($data == '') {
$result = 'ok_but_no_data';
}
}
if ($file_access_ok) {
$result = 'ok';
}
if ($file_open) {
fclose($file_handle);
}
return ($result);
}
// PRIVATE
function write2LogFile() {
$logfile_path = 'logs/form_log.txt';
$fopen_mode = 'ab';
$this->logEntry = '';
if ($this->aufgedroeselt) {
$i = 0;
foreach ($this->aufgedroeselt as $value) {
$i++;
if (1 != $i) {
$this->logEntry .= '; ';
}
$this->logEntry .= $value;
}
$this->logEntry .= CCS_LF;
}
$status = $this->write2file($logfile_path, $this->logEntry, $fopen_mode);
if ('ok' != substr($status, 0, 2)) {
// Fehler beim Schreiben aufgetreten!
}
}
// PRIVATE
function success() {
$this->sendEmail();
$this->write2LogFile();
if (false !== strpos($this->form['answer'], '###sent_data###')) {
if ($this->form['showData']) {
$this->prepareConfirmationDataTable();
$this->form['answer'] = str_replace('###sent_data###', $this->confirmationDataTable, $this->form['answer']);
} else {
$this->form['answer'] = str_replace('###sent_data###', '', $this->form['answer']);
}
}
echo $this->form['answer'];
}
Code: Alles auswählen
$this->sendEmail();

Die neue Funktion write2LogFile() stellt die Daten Logfile-tauglich Semikolon-separiert zusammen und schreibt sie in die Datei, die oben in der Variablen $logfile_path hinterlegt wurde.
Ich habe aus meinem Fundus die etwas aufwändigere Funktion write2file() zum Schreiben des erzeugten String eingefügt, die alle möglichen Fehlerprüfungen vornimmt. Fängt der zurückgegebene Wert nicht mit 'ok' an, ist ein Fehler aufgetreten. Du kannst entsprechenden Fehlerbehandlungscode (Funktion write2LogFile()) hier einfügen:
Code: Alles auswählen
if ('ok' != substr($status, 0, 2)) {
// Fehler beim Schreiben aufgetreten!
}
Gruß,
Jan
This message has been ROT-13 encrypted twice for higher security.