neues formularmodul :: w3concepts.form.v1

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Do 15. Nov 2007, 10:42

es lässt sich grundsätzlich (fast) alles machen. aber empfehlen würde ich das nicht. dann ist spamen und flamen möglich von deiner seite. unbedingte empfehlung (ohne einschränkung): lass es bleiben (es sein denn, es handelt sich um ein intranet).
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

pulk
Beiträge: 217
Registriert: Sa 2. Nov 2002, 09:57
Kontaktdaten:

Beitrag von pulk » Fr 16. Nov 2007, 10:37

gibts eine kleine checkliste für probleme, wenn das formular nicht versendet wird.
wenn ich auf abschicken drücke, wird die seite neu geladen, aber nicht der "erfolgreich abgeschickt" text angezeigt, und es wird auch tatsächlich nicht versendet.

im error log finde ich nichts, ein e-card modul funktioniert bei dieser installation einwandfrei.

wosch

Beitrag von wosch » Mo 25. Feb 2008, 14:03

Ich habe seit einiger Zeit einen seltsamen Effekt mit dem Modul.

Es kommt immer wieder vor das ein Formular 2 oder 4 Mal mit gleichen Inhalt gesendet wird.
Absendezeit ist immer gleich, die Zustellzeit ist immer um eine Minute versetzt.
Es tritt anscheinend nur bei einer bestimmten Domain auf die als Empgänger definiert ist, bei einer anderen Domain (als Empfänger) ist mir dieser Effekt bisher nie aufgefallen.

Im Errorlog steht nichts.

Könnte Zufall sein oder auch nicht, seit Januar (also etwa seit dem dieser Effekt auftritt) wurde von php 4 auf php 5.x umgestellt.

Das Modul läuft unter Contenido 4.6.8.5

Ich bin im Moment ziemlich ratlos. Keine Ahnung wo ich da ansetzen könnte.

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Mo 25. Feb 2008, 14:27

das problem kann nicht direkt mit dem modul zusammenhängen. die maximale ausführungszeit von php lässt es gar nicht zu, dass ein email mehrmals versendet wird mit je einer minute abstand. denkbar ist allerdings, dass die leute den back-button oder den reload-button verwenden, was zu einem mehrfachversand führen dürfte.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

wosch

Beitrag von wosch » Mo 25. Feb 2008, 17:08

kummer hat geschrieben:das problem kann nicht direkt mit dem modul zusammenhängen.
Das vermute ich auch, da es über 12 Monnate installiert ist und vorher dieser Effekt nicht auftrat.
Es muß ein Zusammentreffen irgendwelcher Umstände sein die dieses Verhalten hervorrufen.
kummer hat geschrieben: denkbar ist allerdings, dass die leute den back-button oder den reload-button verwenden, was zu einem mehrfachversand führen dürfte.
Das kann ich zu 100% ausschließen.
Weil ich in einem Test selber das Formular abgeschickt habe, und es kam 4x an.
kummer hat geschrieben: die maximale ausführungszeit von php lässt es gar nicht zu, dass ein email mehrmals versendet wird mit je einer minute abstand
Hm, ...
Nein, es wird anscheinend nicht 4 x gesendet, sondern es wird 4 x zugestellt.
Die Sendezeit ist immer gleich Beispiel: 11:45
Zugestellt wird um 11:45 / 11:46 / 11:47 / 11:48 (Zeitstempel des Empfangsserver -> Absender-Addy in der Konfiguration

Edit - 03.03.2008
Nachdem ich länger mit dem Hoster telefoniert habe hat sich folgendes rauskristallisiert:
Vom Modul wird einmal der Befehl zum Senden gegeben.
php gibt genau einmal den Befehl den den Server, und der Server sendet genau einmal das Formular an den Mail-Server (der Mail-Server wird vom Kunden direkt betrieben).
Und der Mail-Server -> macht dann was ...

Test mit einer anderen Mailadresse bestätigten es, jede andere Adresse als die des Kunden erhalten nur eine Mail vom Formular.

Tja, 8) oder besser :lol:

motion pixels
Beiträge: 19
Registriert: Di 11. Dez 2007, 11:40
Wohnort: Dinklage
Kontaktdaten:

eMail wird nicht versendet.

Beitrag von motion pixels » Mi 12. Mär 2008, 09:55

Wie der Titel schon sagt: Es werden keine eMails versendet bei der Benutzung dieses Kontaktformulars... Hab das Modul von Seite 1 in Betrieb.

nach dem Absenden komme ich direkt zu meiner Startseite - eine Sendebestätigung erhalte ich da auch nicht...

Lustigerweise funktioniert das aber scheinbar hier:
http://www.w3concepts.net/cms/front_con ... &idart=129 auch nicht mehr.
Evtl. kann ja kummer was dazu sagen?

Ansonsten find ich das Modul sehr cool!

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Mi 12. Mär 2008, 10:06

das besagte modul funktioniert immer noch einwandfrei. ich erhalte die emails jeweils.

mit was für einem browser arbeitest du denn?
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

motion pixels
Beiträge: 19
Registriert: Di 11. Dez 2007, 11:40
Wohnort: Dinklage
Kontaktdaten:

Beitrag von motion pixels » Mi 12. Mär 2008, 10:17

Firefox für´s Backend und Safari im Frontend


edit: mit firefox funktioniert zumindest das Formular auf Deiner Seite schonmal... werds bei mir nochmal neu installieren und dann nochmal testen.

ne kleine frage, weil ichs hier leider nicht testen kann: unter windows mit IE geht aber alles oder? das ist ja immer noch die Standardausstattung der meisten User

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Mi 12. Mär 2008, 10:22

und was steht in der action beim formular?

Code: Alles auswählen

<form action="XYZ"...
der safari ruft nicht die gleiche seite auf, wenn keine action angegeben ist.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

motion pixels
Beiträge: 19
Registriert: Di 11. Dez 2007, 11:40
Wohnort: Dinklage
Kontaktdaten:

Beitrag von motion pixels » Mi 12. Mär 2008, 10:37

Code: Alles auswählen

<form action="" method="POST">
ich hab den code inkl. Beispiel von der ersten Seite von Deinem ersten Post benutzt

motion pixels
Beiträge: 19
Registriert: Di 11. Dez 2007, 11:40
Wohnort: Dinklage
Kontaktdaten:

Beitrag von motion pixels » Mi 12. Mär 2008, 10:59

hab jetzt, wie auf einer vorherigen Seite beschrieben, bei der form action die komplette URL nochmal angegeben... Jetzt geht´s!

falk07
Beiträge: 10
Registriert: So 13. Apr 2008, 14:13
Wohnort: Im hohen Norden
Kontaktdaten:

Beitrag von falk07 » So 13. Apr 2008, 14:27

Hallo,

das ist wirklich ein tolles Modul, welches kaum Wünsche offen lässt. Mir ist nur noch nicht ganz klar, ob und wie es in einer mehrsprachigen Site funktioniert.
Ich bin allerdings ein Contenido-Neuling und mir gar nicht sicher, ob das überhaupt innerhalb dieses Moduls gelöst werden muss oder an einer ganz anderen Stelle.

Bin für jeden Tipp dankbar,
falk07

Edit: Ich habe noch ein bisschen gestöbert und die Stelle

Code: Alles auswählen

// prüfung, ob pflichtfeld vorhanden 
      if (!empty($feld['mandatory']) && $feld['mandatory'] == 'true' && empty($_POST["{$feld['name']}"])) { 
        $this->form['actualErrorMessage'] = 'Bitte f&uuml;llen Sie dieses Feld aus!'; 
        return false; 
      } 
so verändert:

Code: Alles auswählen

// prüfung, ob pflichtfeld vorhanden 
      if (!empty($feld['mandatory']) && $feld['mandatory'] == 'true' && empty($_POST["{$feld['name']}"])) { 
        $this->form['actualErrorMessage'] = mi18n("Bitte f&uuml;llen Sie dieses Feld aus!"); 
        return false; 
      } 
Leider bekomme ich immer nur die deutsche Variante. Muss ich die jeweiligen Übersetzungen noch irgendwo hinterlegen (und wenn ja, wo?), oder liegt der Fehler woanders?

Danke für Hilfe,
falk07
Die meisten Erfahrungen bezahlt man teuer, dabei könnte man sie gebraucht viel billiger bekommen.

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Mo 14. Apr 2008, 08:26

mehrsprachigkeit ist kein problem. vorgehen:

(1) in die andere sprache wechseln

(2) artikel synchronisieren

(3) die texte im online-editor übersetzen (wie bei einem anderen artikel auch).

gruss,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

falk07
Beiträge: 10
Registriert: So 13. Apr 2008, 14:13
Wohnort: Im hohen Norden
Kontaktdaten:

Beitrag von falk07 » Do 17. Apr 2008, 10:00

danke, Andreas, für die hilfreiche Antwort :)

Jetzt aber gleich noch eine Frage:
Ich möchte mir das Modul (ich verwende die Version von Enigma auf Seite 12) so umbauen, dass ich für die versendete email ein html-Template verwenden kann. Das geht im Prinzip relativ einfach, indem ich die Funktion generateEmailMessage() so verändere (und vorher die Template-Klasse einbinde):

Code: Alles auswählen

// PRIVATE
    function generateEmailMessage() {
      if (!is_object($tpl)) {
		$tpl = new Template;
	  }
      if ($this->aufgedroeselt) {
        foreach ($this->aufgedroeselt as $key => $value) {
          //$this->add2Message($key, $value);
          $tpl->set("s", $key, $value);         
        }
        $this->email['message'] = $tpl->generate($cfgClient[$client]["path"]["frontend"]."templates/kontaktmail.html", 1);
      }
    }
Leider werden mir in der Mail sämtliche html-tags aus dem Template "übersetzt", d.h. sie stehen einfach lesbar mit im Text der erhaltenen eMail. Weiß jemand, wie ich das verhindern kann?

Danke für Hilfe,
falk07
Die meisten Erfahrungen bezahlt man teuer, dabei könnte man sie gebraucht viel billiger bekommen.

falk07
Beiträge: 10
Registriert: So 13. Apr 2008, 14:13
Wohnort: Im hohen Norden
Kontaktdaten:

Beitrag von falk07 » So 27. Apr 2008, 20:09

Ok, ich habs selbst gemerkt: Ich muss natürlich im Mail-Header text/html als content-type angeben... :oops:

Inzwischen läuft alles bestens und ich wollte euch meine Anpassungen nicht vorenthalten - vielleicht kann es ja noch jemand brauchen.

Aufbauend auf die Version von Enigma auf Seite 12 habe ich noch ein paar Ergänzungen eingefügt, nämlich:
  • - neben dem Empfänger können jetzt auch cc und bcc eingetragen werden
  • - bei Bedarf kann eine Bestätigungsmail an den Absender des Formulars versandt werden
  • - bei Bedarf werden alle Werte in eine CSV-Datei geschrieben
  • - die Fehlermeldungen können nun in alle benötigten Sprachen übersetzt werden
  • - die Emails können jetzt wahlweise als html- oder textmails versandt werden. In beiden Fällen wird die Ausgabe über ein Template gesteuert, welches im Reiter "Modul-Templates" angelegt werden kann. Die Template-Variablen (ich nenne sie mal so) können nach dem Schema {formularfeldname} beliebig eingesetzt und formatiert werden. Die Möglichkeit, einen Text am Anfang sowie am Ende der Mail einzufügen (aus Enigmas Version) wird damit überflüssig; ich habe sie deswegen wieder entfernt.
Ein Template könnte dann z.B. so aussehen:

Code: Alles auswählen

<html>
<head>
<title>Kontakt by Contenido</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
td {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 12px;
	color: #000000;
}
-->
</style>
</head>

<body>
<table width="600" cellspacing="0" cellpadding="5" border="0" bgcolor="c8d1d3">
  <tr>
    <td width="580" bgcolor="#FFFFFF"><p><strong>Kontaktformular</strong></p>
        <table width="100%" border="0" cellspacing="0" cellpadding="2">
          <tr>
            <td width="34%" valign="top">Name</font></td>
            <td width="66%">{Vorname} {Nachname}</td>
          </tr>
          <tr>
            <td valign="top"> Land</td>
            <td>{Land}</td>
          </tr>
          <tr>
            <td valign="top">Mitteilung</td>
            <td>{Bemerkungen}</td>
          </tr>
          <tr>
            <td valign="top">email</td>
            <td>{email}</td>
          </tr>
      </table></td>
  </tr>
  <tr>
    <td bgcolor="#FFFFFF"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><b>Diese
      Nachricht wurde automatisch erzeugt.</b></font></td>
  </tr>
</table>
</body>
</html>
Und hier das geänderte Modul
Input:

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&auml;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;">Cc (alias@mydomain.com):</td>
    <td class="text_medium" style="vertical-align: top;"><input type="text" name="CMS_VAR[27]" value="CMS_VALUE[27]" size="30" /></td>
  </tr>
<tr>
    <td class="text_medium" style="vertical-align: top;">Bcc (alias@mydomain.com):</td>
    <td class="text_medium" style="vertical-align: top;"><input type="text" name="CMS_VAR[28]" value="CMS_VALUE[28]" 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.&nbsp;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.&nbsp;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.&nbsp;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.&nbsp;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.&nbsp;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="&nbsp;<input type="text" name="CMS_VAR[8]" value="CMS_VALUE[8]" size="30" />&nbsp;"<br>
      style="&nbsp;<input type="text" name="CMS_VAR[9]" value="CMS_VALUE[9]" size="30" />&nbsp;"
    </td>
  </tr>
  <tr>
    <td class="text_medium" style="vertical-align: top;">
      &Uuml;bermittelte Daten auf Best&auml;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&auml;tigungsseite: CSS-Schriftformatierungs-Attribute f&uuml;r Tabelle<br>
      (z.&nbsp;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="&nbsp;<input type="text" name="CMS_VAR[11]" value="CMS_VALUE[11]" size="30" />&nbsp;"<br>
      style="&nbsp;<input type="text" name="CMS_VAR[12]" value="CMS_VALUE[12]" size="30" />&nbsp;"
    </td>
  </tr>
  <tr>
    <td class="text_medium" style="vertical-align: top;">
      Best&auml;tigungsseite: CSS-Schriftformatierungs-Attribute f&uuml;r Tabellenzeilen<br>
      (z.&nbsp;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="&nbsp;<input type="text" name="CMS_VAR[13]" value="CMS_VALUE[13]" size="30" />&nbsp;"<br>
      style="&nbsp;<input type="text" name="CMS_VAR[14]" value="CMS_VALUE[14]" size="30" />&nbsp;"
    </td>
  </tr>
  <tr>
    <td class="text_medium" style="vertical-align: top;">
      Best&auml;tigungsseite: CSS-Schriftformatierungs-Attribute f&uuml;r linke Tabellenzellen (<th>)<br>
      (z.&nbsp;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="&nbsp;<input type="text" name="CMS_VAR[15]" value="CMS_VALUE[15]" size="30" />&nbsp;"<br>
      style="&nbsp;<input type="text" name="CMS_VAR[16]" value="CMS_VALUE[16]" size="30" />&nbsp;"
    </td>
  </tr>
  <tr>
    <td class="text_medium" style="vertical-align: top; border-bottom: 1px solid #747488;">
      Best&auml;tigungsseite: CSS-Schriftformatierungs-Attribute f&uuml;r rechte Tabellenzellen (<td>)<br>
      (z.&nbsp;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="&nbsp;<input type="text" name="CMS_VAR[17]" value="CMS_VALUE[17]" size="30" />&nbsp;"<br>
      style="&nbsp;<input type="text" name="CMS_VAR[18]" value="CMS_VALUE[18]" size="30" />&nbsp;"
    </td>
  </tr>
  <tr>
    <td class="text_medium" style="vertical-align: top;">
      Mailformat:
    </td>
    <td class="text_medium" style="vertical-align: top;">
		<input type="radio" name="CMS_VAR[21]" value="html"<?php if ('html' == "CMS_VALUE[21]") { echo ' checked="checked"'; } ?>>
      html<br>
      <input type="radio" name="CMS_VAR[21]" value="plain"<?php if ('plain' == "CMS_VALUE[21]") { echo ' checked="checked"'; } ?>>
      text
	</td>
  </tr>
  <tr>
    <td class="text_medium" style="vertical-align: top;">
      Name des Email-Templates<br />
	  (muss sich im Ordner der Modul-Templates befinden)
    </td>
    <td class="text_medium" style="vertical-align: top;"><input type="text" name="CMS_VAR[23]" value="CMS_VALUE[23]" size="30" /></td>
  </tr>
  <tr>
    <td class="text_medium" style="vertical-align: top;">
      Bestätigungsmail an Absender:
    </td>
    <td class="text_medium" style="vertical-align: top;">
	<input type="radio" name="CMS_VAR[22]" value="yes"<?php if ('yes' == "CMS_VALUE[22]") { echo ' checked="checked"'; } ?>>
      ja<br>
      <input type="radio" name="CMS_VAR[22]" value="no"<?php if ('no' == "CMS_VALUE[22]") { echo ' checked="checked"'; } ?>>
      nein
	</td>
  </tr>
   <tr>
    <td class="text_medium" style="vertical-align: top;">
      Name des Templates für die Bestätigungsmail<br />
	  (muss sich im Ordner der Modul-Templates befinden)
    </td>
    <td class="text_medium" style="vertical-align: top;"><input type="text" name="CMS_VAR[24]" value="CMS_VALUE[24]" size="30" /></td>
  </tr>
  <tr>
    <td class="text_medium" style="vertical-align: top;">
      Daten in CSV-Datei schreiben:
    </td>
    <td class="text_medium" style="vertical-align: top;">
	<input type="radio" name="CMS_VAR[25]" value="yes"<?php if ('yes' == "CMS_VALUE[25]") { echo ' checked="checked"'; } ?>>
      ja<br>
      <input type="radio" name="CMS_VAR[25]" value="no"<?php if ('no' == "CMS_VALUE[25]") { echo ' checked="checked"'; } ?>>
      nein
	</td>
  </tr>
  <tr>
    <td class="text_medium" style="vertical-align: top; border-bottom: 1px solid #747488;">
      Name der CSV-Datei:
    </td>
    <td class="text_medium" style="vertical-align: top; border-bottom: 1px solid #747488;"><input type="text" name="CMS_VAR[26]" value="CMS_VALUE[26]" size="30" /></td>
  </tr>
</table>

<?php
Und der Output:

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)
  ************************************************
  *Slightly modified by falk07 20-04-2008
  ************************************************/
  cInclude('classes', 'class.template.php');

  class w3form {
    var $email, $aufgedroeselt, $form, $formularFeld;

    function w3form() {
    }


	// PRIVATE
    function sendEmail() {
		$mailHeader = "From: {$this->email['from']['name']} <{$this->email['from']['email']}>\n";
		$mailHeader .= "Reply-To: {$this->email['from']['email']}\n";
		$mailHeader .= "X-Mailer: PHP/".phpversion()."\n";
		if('' != $this->email['ccopy']) { $mailHeader .= "Cc: ".$this->email['ccopy']."\n"; }
		if('' != $this->email['bccopy']) { $mailHeader .= "Bcc: ".$this->email['bccopy']."\n"; }
		($this->email['format'] == "html") ? ($mailHeader .= "Content-Type: text/html") : ($mailHeader .= "Content-Type: text/plain");
		
		$this->aufdroeseln($this->suppress('sent', 'submit', 'submit_form', 'form_submit', 'submit_button', 'button_submit'));
		$this->generateEmailMessage($this->email['tmpl']);
		mail($this->email['adresses'], $this->email['subject'], $this->email['message'], $mailHeader);
		
		//Bestätigungsmail an den Absender
		if ($this->email['confirm'] == "yes"){
			$mailHeader = "From: {$this->email['from']['name']} <{$this->email['from']['email']}>\n";
			$mailHeader .= "Reply-To: {$this->email['from']['email']}\n";
			$mailHeader .= "X-Mailer: PHP/".phpversion()."\n";
			($this->email['format'] == "html") ? ($mailHeader .= "Content-Type: text/html") : ($mailHeader .= "Content-Type: text/plain");
			
			$this->generateEmailMessage($this->email['cfTmpl']);
			mail($this->email['sender'], $this->email['subject'], $this->email['message'], $mailHeader);
		}
	}


    // 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
    //***************Geändert von falk07**********************
    function generateEmailMessage($tpl_name) {
      if (!is_object($tpl)) {
		$tpl = new Template;
	  }
      if ($this->aufgedroeselt) {
        foreach ($this->aufgedroeselt as $key => $value) {
           $tpl->set("s", $key, $value);         
        }
	$this->email['message'] = $tpl->generate($cfgClient[$client]["path"]["frontend"]."templates/".$tpl_name, 1);
      }
    }

    // PRIVATE
    function suppress() {
      $suppress = func_get_args();

      foreach ($_POST as $key => $value) {
        if (array_search($key, $suppress) === false) {
          $fields[$key] = $value;
        }
      }

      return $fields;
    }

//********************Ergänzungen von falk07***************
	// PUBLIC
    function setEmailFormat($format) {
      $this->email['format'] = $format;
    }
	// PUBLIC
    function setEmailTemplate($tmpl) {
      $this->email['tmpl'] = $tmpl;
    }
	// PUBLIC
    function setEmailConfirm($confirm) {
      $this->email['confirm'] = $confirm;
    }
	// PUBLIC
    function setEmailConfirmTemplate($cfTmpl) {
      $this->email['cfTmpl'] = $cfTmpl;
    }
	// PUBLIC
    function setCSVFile($csvYesNo) {
      $this->form['csvYesNo'] = $csvYesNo;
    }
	// PUBLIC
    function setCSVFileName($fileName) {
      $this->form['csvFile'] = $fileName;
    }
	// PUBLIC
    function setEmailSender($address) {
      $this->email['sender'] = $address;
    }
	// PUBLIC
    function setEmailCC($address) {
      $this->email['ccopy'] = $address;
    }
	// PUBLIC
    function setEmailBCC($address) {
      $this->email['bccopy'] = $address;
    }
//****************Ergänzungen von falk07 Ende*******************
    
	// 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'];
	  
	// *************Ergänzung von falk07: schreiben der CSV-Datei******************
      if ($this->aufgedroeselt && $this->form['csvYesNo'] == "yes") {
		$daten = fopen ($this->form['csvFile'], "a"); 
		flock($daten,LOCK_EX);
        foreach ($this->aufgedroeselt as $key => $value) {
          fwrite($daten, "$value,"); 
        }
		fwrite($daten,"\n");
		flock($daten,LOCK_UN);
		fclose($daten);
      } 
	//***************bis hier******************************
    }



    // 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'] = mi18n("Bitte f&uuml;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'] = mi18n("Es sind ausschlie&szlig;lich folgende Werte erlaubt (ohne die Anf&uuml;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'] = mi18n("Bitte verwenden Sie ausschlie&szlig;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'] = mi18n("Bitte verwenden Sie ausschlie&szlig;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'] = mi18n("Bitte verwenden Sie ausschlie&szlig;lich Buchstaben, Ziffern, das Leerzeichen sowie die Zeichen -.,;!?()");
      }

      if (!empty($feld['valid']) && $feld['valid'] == 'integer' && !eregi("^[0-9]*$", $_POST["{$feld['name']}"])) {
        $this->form['actualErrorMessage'] = mi18n("Bitte geben Sie ausschlie&szlig;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'] = mi18n("Bitte geben Sie ausschlie&szlig;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'] = mi18n("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'] = mi18n("Bitte geben Sie eine g&uuml;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'] = mi18n("Bitte geben Sie eine g&uuml;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'] = mi18n("Bitte geben Sie eine Zahl ein, die gr&ouml;&szlig;er oder gleich ".$feld['minvalue']." ist!");
        return false;
      }

      if (!empty($feld['maxvalue']) && $_POST["{$feld['name']}"] > $feld['maxvalue']) {
        $this->form['actualErrorMessage'] = mi18n("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'] = mi18n("Die Eingabe muss mindestens ".$feld['minlength']." Zeichen lang sein!");
        return false;
      }

      if (!empty($feld['maxlength']) && strlen($_POST["{$feld['name']}"]) > $feld['maxlength']) {
        $this->form['actualErrorMessage'] = mi18n("Die Eingabe darf h&ouml;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['email'];
    } 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->setEmailFormat("CMS_VALUE[21]");
	$formular->setEmailTemplate("CMS_VALUE[23]");
	$formular->setEmailConfirm("CMS_VALUE[22]");
    $formular->setEmailConfirmTemplate("CMS_VALUE[24]");
	$formular->setEmailSender($_POST['email']);
	$formular->setCSVFile("CMS_VALUE[25]");
	$formular->setCSVFileName("CMS_VALUE[26]");
	$formular->setEmailCC("CMS_VALUE[27]");
	$formular->setEmailBCC("CMS_VALUE[28]");
    $formular->setForm("CMS_HTML[0]");
    $formular->setAnswer("CMS_HTML[1]");
    $formular->process();
	
}

?>
Gruß,
falk07
Die meisten Erfahrungen bezahlt man teuer, dabei könnte man sie gebraucht viel billiger bekommen.

Gesperrt