Kontaktformular w3c

walsi24
Beiträge: 95
Registriert: Di 25. Okt 2005, 20:48
Kontaktdaten:

Kontaktformular w3c

Beitrag von walsi24 »

Hallo zusammen ich hoffe, dass es nicht frech rüberkommt aber kann mir evtl. jemand helfen bei diesem Problem :) :
http://forum.contenido.org/viewtopic.ph ... &start=345

habe gestern dort einen Eintrag gemachht aber das ist ja eigentlich ein uralter Thread :mrgreen:

Ich bekomme einfach keine Mails, auch wenn ich meine Mail-Adresse eingebe im Backend, den Rest habe ich mehr oder weniger übernommen von Kummer. (Modul ist auf Seite 1 im obengenannten Artikel)
Muss ich noch irgendwo einen Mailserver hinterlegen oder weiss nicht was? Ich habe von PHP nicht wirklich eine Ahnung... :oops:

Danke viel mals!
Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Kontaktformular w3c

Beitrag von Spider IT »

Hallo walsi24,

du brauchst wahrscheinlich ein Kontaktformular, welches den Versand per SMTP unterstützt.
Um SPAM zu erschweren, akzeptieren immer mehr Mailserver die Mails nur noch von angemeldeten User, also per SMTP.
Hierbei musst du dann in der Konfiguration des Moduls die Daten zum Mailserver und Postfach hinterlegen.

Gruß
René
walsi24
Beiträge: 95
Registriert: Di 25. Okt 2005, 20:48
Kontaktdaten:

Re: Kontaktformular w3c

Beitrag von walsi24 »

hallo rené

vielen dank für die antwort!
ich bin ja nicht so der hirsch mit dem aber kann ich das evtl. aus dem bestehenden kontaktformular, das vorinstalliert ist rauskopieren?
sorry ich hab wirklich keine ahnung :(
Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Kontaktformular w3c

Beitrag von Spider IT »

Klar kannst du das :)
Im Input-Bereich des Moduls sind die Konfigurationsfelder definiert, und im Output-Bereich ist dann eine Struktur die diese nutzt.

Gruß
René
walsi24
Beiträge: 95
Registriert: Di 25. Okt 2005, 20:48
Kontaktdaten:

Re: Kontaktformular w3c

Beitrag von walsi24 »

hallo rené
kannst du mir hier evtl. etwas weiterhelfen?
habe nur fehler meldungen, wenn ich was anderes rein kopiere :-S
Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Kontaktformular w3c

Beitrag von Spider IT »

Nun gut, vielleicht gibts ja Kaffee ;)

Input:

Code: Alles auswählen

/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname   :       w3concepts.form.v1
* Author      :     Andreas Kummer
* Copyright   :     mumprecht & kummer w3concepts
* Created     :     20-08-2004
* Modified    :     20-08-2004
************************************************/


echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\"><tr valign=\"top\">";

echo "<tr><td>Zieladresse (alias@mydomain.com):</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[0]\" value=\"CMS_VALUE[0]\" size=\"30\" /></td></tr>";

echo "<tr><td>Betreff:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[1]\" value=\"CMS_VALUE[1]\" size=\"30\" /></td></tr>";

echo "<tr><td>Antwortadresse (alias@mydomain.com):</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[2]\" value=\"CMS_VALUE[2]\" size=\"30\" /></td></tr>";

echo "<tr><td>Emailname (z.B. Vorname Name):</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[3]\" value=\"CMS_VALUE[3]\" size=\"30\" /></td></tr>";

echo "<tr><td>Hintergrundfarbe bei Fehlern (z.B. red):</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[4]\" value=\"CMS_VALUE[4]\" size=\"30\" /></td></tr>";

    $c1 = '';
    $c2 = '';
    $c3 = '';
    $c4 = '';
    switch (strtolower("CMS_VALUE[5]")) {
        case "smtp" :
            $c1 = ' checked';
            break;
        case "mail" :
            $c2 = ' checked';
            break;
        case "sendmail" :
            $c3 = ' checked';
            break;
        case "qmail" :
            $c4 = ' checked';
            break;
        default :
            $c3 = ' checked';
    }
?>
    <tr>
        <td valign="top"><?php echo mi18n("Mailer");?></td>
        <td>
            <input type="radio" name="<?php echo "CMS_VAR[5]";?>" value="mail"<?php echo $c2;?>>&nbsp;<?php echo mi18n("mail");?><br/>
            <input type="radio" name="<?php echo "CMS_VAR[5]";?>" value="qmail"<?php echo $c4;?>>&nbsp;<?php echo mi18n("qmail");?><br/>
            <input type="radio" name="<?php echo "CMS_VAR[5]";?>" value="sendmail"<?php echo $c3;?>>&nbsp;<?php echo mi18n("sendmail");?><br/>
            <input type="radio" name="<?php echo "CMS_VAR[5]";?>" value="smtp"<?php echo $c1;?>>&nbsp;<?php echo mi18n("smtp");?><br/>
        </td>
    </tr>
    <tr>
        <td><?php echo mi18n("SMTP Host");?></td>
        <td><input type="text" name="<?php echo "CMS_VAR[6]";?>" value="<?php echo "CMS_VALUE[6]"; ?>"></td>
    </tr>
    <tr>
        <td><?php echo mi18n("SMTP User");?></td>
        <td><input type="text" name="<?php echo "CMS_VAR[7]";?>" value="<?php echo "CMS_VALUE[7]"; ?>"></td>
    </tr>
    <tr>
        <td><?php echo mi18n("SMTP Passwort");?></td>
        <td><input type="text" name="<?php echo "CMS_VAR[8]";?>" value="<?php echo "CMS_VALUE[8]"; ?>"></td>
    </tr>

<?php

echo "</table>";
Output:

Code: Alles auswählen

<?php

/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     w3concepts.form.v1
* Author      :     Andreas Kummer
* Copyright   :     mumprecht & kummer w3concepts
* Created     :     20-08-2004
* Modified    :     20-08-2004
************************************************/

class w3form {

   var $email, $aufgedroeselt, $form, $formularFeld;

   function w3form() {
   }

   // PRIVATE
   function sendEmail() {
      $this->aufdroeseln($this->suppress('sent'));
      $this->generateEmailMessage();
# Spider IT Deutschland - New Mailer -->
      cInclude("classes", "class.phpmailer.php");
      $mail = new phpmailer;
      $mail->Host = "localhost";
      $mail->IsHTML(false);
      #Get mailer from settings
      switch (strtolower("CMS_VALUE[5]")) {
        case "smtp" :
            $mail->IsSMTP();
            $host = "CMS_VALUE[6]";
            $user = "CMS_VALUE[7]";
            $password = "CMS_VALUE[8]";
            if (($host != '') && ($user != '') && ($password != '')) {
                $mail->SMTPAuth = true;
                $mail->Host = $host;
                $mail->Username = $user;
                $mail->Password = $password;
            }
            break;
        case "mail" :
            $mail->IsMail();
            break;
        case "sendmail" :
            $mail->IsSendmail();
            break;
        case "qmail" :
            $mail->IsQmail();
            break;
        default :
      }
      $mail->FromName = $this->email['from']['name'];
      $mail->From = $this->email['from']['email'];
      $mail->ReplyTo = $this->email['from']['email'];
      $mail->AddAddress($this->email['adresses']);
      $mail->Subject = $this->email['subject'];
      $mail->Body = $this->email['message'];
      $mail->WordWrap = 50;
      $mail->Send();
      #mail($this->email['adresses'],$this->email['subject'],$this->email['message'],"From: {$this->email['from']['name']} <{$this->email['from']['email']}>\nReply-To: {$this->email['from']['email']}\nX-Mailer: PHP/" . phpversion());
# Spider IT Deutschland - New Mailer <--
   }

   // 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";
      }
   }

   // 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['colorError'] = $color;
   }

   // PRIVATE
   function formularInterpretation(&$formular) {
      $felder = split('###',$formular);
      for ($i=1;$i<count($felder);$i=$i+2) {
         $attributte = split(';',trim($felder[$i]));
         foreach ($attributte 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 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 ($sent && !$this->formularFeldKorrekt(&$attribute)) $style ="style=\"background-color:{$this->form['colorError']};\"";
      switch ($attribute['type']) {
         case 'select':
         case 'password':
         case 'text':
            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($_POST["{$attribute['name']}"])) $value = $_POST["{$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']}\" cols=\"";
            echo (empty($attribute['cols']))?('20'):($attribute['cols']);
            echo "\" rows=\"";
            echo (empty($attribute['rows']))?('2'):($attribute['rows']);
            echo "\" wrap=\"virtual\" $style>$value</textarea>";
            break;
         case 'select':
            echo "<select $parameter $style>";
            for ($i=0;$i<count($attribute['option']);$i++) {
               if (!empty($attribute['optionvalue'][$i])) {
                  if (!empty($_POST["{$attribute['name']}"]) && $_POST["{$attribute['name']}"] == $attribute['optionvalue'][$i]) {
                     echo "<option value=\"{$attribute['optionvalue'][$i]}\" selected=\"selected\">{$attribute['option'][$i]}</option>\n";
                  } else {
                     if (empty($_POST["{$attribute['name']}"]) && !empty($attribute['optionvalue'][$i]) && $attribute['optionvalue'][$i] == $attribute['value']) {
                        echo "<option value=\"{$attribute['optionvalue'][$i]}\" selected=\"selected\">{$attribute['option'][$i]}</option>\n";
                     } else {
                        echo "<option value=\"{$attribute['optionvalue'][$i]}\">{$attribute['option'][$i]}</option>\n";
                     }
                  }
               } else {
                  if (!empty($_POST["{$attribute['name']}"]) && $_POST["{$attribute['name']}"] == $attribute['option'][$i]) {
                     echo "<option selected=\"selected\">{$attribute['option'][$i]}</option>\n";
                  } else {
                     if (empty($_POST["{$attribute['name']}"]) && $attribute['option'][$i] == $attribute['value']) {
                        echo "<option selected=\"selected\">{$attribute['option'][$i]}</option>\n";
                     } else {
                        echo "<option>{$attribute['option'][$i]}</option>\n";
                     }
                  }
               }
            }
            echo "</select>";
            break;
         case 'checkbox':
            $formularbezeichner = preg_split('[\[|\]]',$attribute['name']);
            if ($sent) {
               if ($_POST["{$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($_POST["{$attribute['name']}"])) {
               if ($_POST["{$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;
      }
   }

   // 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 success() {
      $this->sendEmail();
      echo $this->form['answer'];
   }

   // PRIVATE
   function formularFeldKorrekt(&$feld) {

      // prüfung, ob pflichtfeld vorhanden
      if (!empty($feld['mandatory']) && $feld['mandatory'] == 'true' && empty($_POST["{$feld['name']}"])) 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-z-]*$",$_POST["{$feld['name']}"])) return false;
      if (!empty($feld['valid']) && $feld['valid'] == 'text' && !eregi("^[ .,;!?()öäüéàèâêîça-z-]*$",$_POST["{$feld['name']}"])) return false;
      if (!empty($feld['valid']) && $feld['valid'] == 'integer' && !eregi("^[0-9]*$",$_POST["{$feld['name']}"])) return false;
      if (!empty($feld['valid']) && $feld['valid'] == 'float' && !eregi("^[0-9]*[.]{0,1}[0-9]*$",$_POST["{$feld['name']}"])) return false;
      if (!empty($feld['valid']) && $feld['valid'] == 'date' && !eregi("^[0-9]{1,2}.[0-9]{1,2}.[0-9]{2}$",$_POST["{$feld['name']}"])) 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']}"])) return false;

      // grössenbereich bei integer und float prüfen
      if (!empty($feld['minvalue']) && $_POST["{$feld['name']}"] < $feld['minvalue']) return false;
      if (!empty($feld['maxvalue']) && $_POST["{$feld['name']}"] > $feld['maxvalue']) return false;

      // längenbereich bei allen typen prüfen
      if (!empty($feld['minlength']) && strlen($_POST["{$feld['name']}"]) < $feld['minlength']) return false;
      if (!empty($feld['maxlength']) && strlen($_POST["{$feld['name']}"]) > $feld['maxlength']) return false;

      return true;
   }

   //PUBLIC
   function process() {
      if (!isset($_POST['sent'])) {
         $this->formularAusgabe();
      } elseif ($this->formularVollstaendig()) {
         $this->success();
      } else {
         $this->formularAusgabe(true);
      }
   }

}

if ($edit) {
   echo "<h1>Formularkonfiguration</h1>";
   echo "<p>Hier ist das Formular sowie der Text einzugeben, 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 prozessiert worden ist:</p>";
   echo "CMS_HTML[1]";
} else {
   $formular = new w3form();
   $formular->addEmailAdress("CMS_VALUE[0]");
   $formular->setEmailSubject("CMS_VALUE[1]");
   $formular->setEmailFrom("CMS_VALUE[2]","CMS_VALUE[3]");
   $formular->setBackgroundError("CMS_VALUE[4]");
   $formular->setForm("CMS_HTML[0]");
   $formular->setAnswer("CMS_HTML[1]");
   $formular->process();
}

?>
Gruß
René
walsi24
Beiträge: 95
Registriert: Di 25. Okt 2005, 20:48
Kontaktdaten:

Re: Kontaktformular w3c

Beitrag von walsi24 »

Hallo René

Vielen Dank schon mal!
Im Backend sieht das schon super aus, nur kommen die Mails immer noch nicht an, irgendwie peil ich das nicht :(
Was mache ich falsch?! :motz:

Danke für deine Hilfe!
Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Kontaktformular w3c

Beitrag von Spider IT »

Hast du denn auch in der konfiguration des Artikels die Einstellungen vorgenommen?
Versandart auf smtp und dann die entsprechenden Daten eingeben (muss ein existierendes Postfach sein).

Gruß
René
walsi24
Beiträge: 95
Registriert: Di 25. Okt 2005, 20:48
Kontaktdaten:

Re: Kontaktformular w3c

Beitrag von walsi24 »

leider immer noch nichts... :(
Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Kontaktformular w3c

Beitrag von Spider IT »

Kann ich mir das mal ansehen? (Daten nur per PN)

Gruß
René
walsi24
Beiträge: 95
Registriert: Di 25. Okt 2005, 20:48
Kontaktdaten:

Re: Kontaktformular w3c

Beitrag von walsi24 »

leider funktioniert das Kontaktformular immer noch nicht...
Hat jemand eine Idee? Oder soll ich einfach ein «externes» Kontaktformular reinbasteln? :shock:

Danke euch!
Oldperl
Beiträge: 4316
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Hat sich bedankt: 6 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: Kontaktformular w3c

Beitrag von Oldperl »

Hallo,
walsi24 hat geschrieben:Hat jemand eine Idee?
Nun, Ideen hätte ich viele, nur ob die da helfen?! :roll:

Was ist den bei René's Recherchen herausgekommen?

Gruß aus Franken

Ortwin
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
walsi24
Beiträge: 95
Registriert: Di 25. Okt 2005, 20:48
Kontaktdaten:

Re: Kontaktformular w3c

Beitrag von walsi24 »

ja rené hat einige sachen geändert... aber da ich so keine ahnung habe, kann ich nicht mal sagen was oder was nicht :)
habe hier nochmals den aktuellsten code:

Code: Alles auswählen

/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname   :       w3concepts.form.v1
* Author      :     Andreas Kummer
* Copyright   :     mumprecht & kummer w3concepts
* Created     :     20-08-2004
* Modified    :     20-08-2004
************************************************/


echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\"><tr valign=\"top\">";

echo "<tr><td>Zieladresse (alias@mydomain.com):</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[0]\" value=\"CMS_VALUE[0]\" size=\"30\" /></td></tr>";

echo "<tr><td>Betreff:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[1]\" value=\"CMS_VALUE[1]\" size=\"30\" /></td></tr>";

echo "<tr><td>Antwortadresse (alias@mydomain.com):</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[2]\" value=\"CMS_VALUE[2]\" size=\"30\" /></td></tr>";

echo "<tr><td>Emailname (z.B. Vorname Name):</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[3]\" value=\"CMS_VALUE[3]\" size=\"30\" /></td></tr>";

echo "<tr><td>Hintergrundfarbe bei Fehlern (z.B. red):</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[4]\" value=\"CMS_VALUE[4]\" size=\"30\" /></td></tr>";

    $c1 = '';
    $c2 = '';
    $c3 = '';
    $c4 = '';
    switch (strtolower("CMS_VALUE[5]")) {
        case "smtp" :
            $c1 = ' checked';
            break;
        case "mail" :
            $c2 = ' checked';
            break;
        case "sendmail" :
            $c3 = ' checked';
            break;
        case "qmail" :
            $c4 = ' checked';
            break;
        default :
            $c3 = ' checked';
    }
?>
    <tr>
        <td valign="top"><?php echo mi18n("Mailer");?></td>
        <td>
            <input type="radio" name="<?php echo "CMS_VAR[5]";?>" value="mail"<?php echo $c2;?>>&nbsp;<?php echo mi18n("mail");?><br/>
            <input type="radio" name="<?php echo "CMS_VAR[5]";?>" value="qmail"<?php echo $c4;?>>&nbsp;<?php echo mi18n("qmail");?><br/>
            <input type="radio" name="<?php echo "CMS_VAR[5]";?>" value="sendmail"<?php echo $c3;?>>&nbsp;<?php echo mi18n("sendmail");?><br/>
            <input type="radio" name="<?php echo "CMS_VAR[5]";?>" value="smtp"<?php echo $c1;?>>&nbsp;<?php echo mi18n("smtp");?><br/>
        </td>
    </tr>
    <tr>
        <td><?php echo mi18n("SMTP Host");?></td>
        <td><input type="text" name="<?php echo "CMS_VAR[6]";?>" value="<?php echo "CMS_VALUE[6]"; ?>"></td>
    </tr>
    <tr>
        <td><?php echo mi18n("SMTP User");?></td>
        <td><input type="text" name="<?php echo "CMS_VAR[7]";?>" value="<?php echo "CMS_VALUE[7]"; ?>"></td>
    </tr>
    <tr>
        <td><?php echo mi18n("SMTP Passwort");?></td>
        <td><input type="text" name="<?php echo "CMS_VAR[8]";?>" value="<?php echo "CMS_VALUE[8]"; ?>"></td>
    </tr>

<?php

echo "</table>";

Code: Alles auswählen

<?php

/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     w3concepts.form.v1
* Author      :     Andreas Kummer
* Copyright   :     mumprecht & kummer w3concepts
* Created     :     20-08-2004
* Modified    :     20-08-2004
************************************************/

class w3form {

   var $email, $aufgedroeselt, $form, $formularFeld;

   function w3form() {
   }

   // PRIVATE
   function sendEmail() {
      $this->aufdroeseln($this->suppress('sent'));
      $this->generateEmailMessage();
# Spider IT Deutschland - New Mailer -->
      cInclude("classes", "class.phpmailer.php");
      $mail = new phpmailer;
      $mail->Host = "localhost";
      $mail->IsHTML(false);
      #Get mailer from settings
      switch (strtolower("CMS_VALUE[5]")) {
        case "smtp" :
            $mail->IsSMTP();
            $host = "CMS_VALUE[6]";
            $user = "CMS_VALUE[7]";
            $password = "CMS_VALUE[8]";
            if (($host != '') && ($user != '') && ($password != '')) {
                $mail->SMTPAuth = true;
                $mail->Host = $host;
                $mail->Username = $user;
                $mail->Password = $password;
            }
            break;
        case "mail" :
            $mail->IsMail();
            break;
        case "sendmail" :
            $mail->IsSendmail();
            break;
        case "qmail" :
            $mail->IsQmail();
            break;
        default :
      }
      $mail->FromName = $this->email['from']['name'];
      $mail->From = $this->email['from']['email'];
      $mail->ReplyTo = $this->email['from']['email'];
      $mail->AddAddress($this->email['adresses']);
      $mail->Subject = $this->email['subject'];
      $mail->Body = $this->email['message'];
      $mail->WordWrap = 50;
      $mail->Send();
      #mail($this->email['adresses'],$this->email['subject'],$this->email['message'],"From: {$this->email['from']['name']} <{$this->email['from']['email']}>\nReply-To: {$this->email['from']['email']}\nX-Mailer: PHP/" . phpversion());
# Spider IT Deutschland - New Mailer <--
   }

   // 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";
      }
   }

   // 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['colorError'] = $color;
   }

   // PRIVATE
   function formularInterpretation(&$formular) {
      $felder = split('###',$formular);
      for ($i=1;$i<count($felder);$i=$i+2) {
         $attributte = split(';',trim($felder[$i]));
         foreach ($attributte 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 formularAusgabe($sent = false) {
      echo '<form action="/cms/front_content.php?idcatart=7" 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 ($sent && !$this->formularFeldKorrekt(&$attribute)) $style ="style=\"background-color:{$this->form['colorError']};\"";
      switch ($attribute['type']) {
         case 'select':
         case 'password':
         case 'text':
            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($_POST["{$attribute['name']}"])) $value = $_POST["{$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']}\" cols=\"";
            echo (empty($attribute['cols']))?('20'):($attribute['cols']);
            echo "\" rows=\"";
            echo (empty($attribute['rows']))?('2'):($attribute['rows']);
            echo "\" wrap=\"virtual\" $style>$value</textarea>";
            break;
         case 'select':
            echo "<select $parameter $style>";
            for ($i=0;$i<count($attribute['option']);$i++) {
               if (!empty($attribute['optionvalue'][$i])) {
                  if (!empty($_POST["{$attribute['name']}"]) && $_POST["{$attribute['name']}"] == $attribute['optionvalue'][$i]) {
                     echo "<option value=\"{$attribute['optionvalue'][$i]}\" selected=\"selected\">{$attribute['option'][$i]}</option>\n";
                  } else {
                     if (empty($_POST["{$attribute['name']}"]) && !empty($attribute['optionvalue'][$i]) && $attribute['optionvalue'][$i] == $attribute['value']) {
                        echo "<option value=\"{$attribute['optionvalue'][$i]}\" selected=\"selected\">{$attribute['option'][$i]}</option>\n";
                     } else {
                        echo "<option value=\"{$attribute['optionvalue'][$i]}\">{$attribute['option'][$i]}</option>\n";
                     }
                  }
               } else {
                  if (!empty($_POST["{$attribute['name']}"]) && $_POST["{$attribute['name']}"] == $attribute['option'][$i]) {
                     echo "<option selected=\"selected\">{$attribute['option'][$i]}</option>\n";
                  } else {
                     if (empty($_POST["{$attribute['name']}"]) && $attribute['option'][$i] == $attribute['value']) {
                        echo "<option selected=\"selected\">{$attribute['option'][$i]}</option>\n";
                     } else {
                        echo "<option>{$attribute['option'][$i]}</option>\n";
                     }
                  }
               }
            }
            echo "</select>";
            break;
         case 'checkbox':
            $formularbezeichner = preg_split('[\[|\]]',$attribute['name']);
            if ($sent) {
               if ($_POST["{$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($_POST["{$attribute['name']}"])) {
               if ($_POST["{$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;
      }
   }

   // 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 success() {
      $this->sendEmail();
      echo $this->form['answer'];
   }

   // PRIVATE
   function formularFeldKorrekt(&$feld) {

      // prüfung, ob pflichtfeld vorhanden
      if (!empty($feld['mandatory']) && $feld['mandatory'] == 'true' && empty($_POST["{$feld['name']}"])) 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-z-]*$",$_POST["{$feld['name']}"])) return false;
      if (!empty($feld['valid']) && $feld['valid'] == 'text' && !eregi("^[ .,;!?()öäüéàèâêîça-z-]*$",$_POST["{$feld['name']}"])) return false;
      if (!empty($feld['valid']) && $feld['valid'] == 'integer' && !eregi("^[0-9]*$",$_POST["{$feld['name']}"])) return false;
      if (!empty($feld['valid']) && $feld['valid'] == 'float' && !eregi("^[0-9]*[.]{0,1}[0-9]*$",$_POST["{$feld['name']}"])) return false;
      if (!empty($feld['valid']) && $feld['valid'] == 'date' && !eregi("^[0-9]{1,2}.[0-9]{1,2}.[0-9]{2}$",$_POST["{$feld['name']}"])) 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']}"])) return false;

      // grössenbereich bei integer und float prüfen
      if (!empty($feld['minvalue']) && $_POST["{$feld['name']}"] < $feld['minvalue']) return false;
      if (!empty($feld['maxvalue']) && $_POST["{$feld['name']}"] > $feld['maxvalue']) return false;

      // längenbereich bei allen typen prüfen
      if (!empty($feld['minlength']) && strlen($_POST["{$feld['name']}"]) < $feld['minlength']) return false;
      if (!empty($feld['maxlength']) && strlen($_POST["{$feld['name']}"]) > $feld['maxlength']) return false;

      return true;
   }

   //PUBLIC
   function process() {
      if (!isset($_POST['sent'])) {
         $this->formularAusgabe();
      } elseif ($this->formularVollstaendig()) {
         $this->success();
      } else {
         $this->formularAusgabe(true);
      }
   }

}

if ($edit) {
   echo "<h1>Formularkonfiguration</h1>";
   echo "<p>Hier ist das Formular sowie der Text einzugeben, 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 prozessiert worden ist:</p>";
   echo "CMS_HTML[1]";
} else {
   $formular = new w3form();
   $formular->addEmailAdress("CMS_VALUE[0]");
   $formular->setEmailSubject("CMS_VALUE[1]");
   $formular->setEmailFrom("CMS_VALUE[2]","CMS_VALUE[3]");
   $formular->setBackgroundError("CMS_VALUE[4]");
   $formular->setForm("CMS_HTML[0]");
   $formular->setAnswer("CMS_HTML[1]");
   $formular->process();
}

?>
ich weiss wirklich nicht weiter :(

danke euch!
Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Kontaktformular w3c

Beitrag von Spider IT »

Nun ja, im Output-Bereich gibt es Kommentare:

Code: Alles auswählen

# Spider IT Deutschland - New Mailer -->
für den Anfang,

Code: Alles auswählen

# Spider IT Deutschland - New Mailer <--
für das Ende der Änderung.

Gruß
René
walsi24
Beiträge: 95
Registriert: Di 25. Okt 2005, 20:48
Kontaktdaten:

Re: Kontaktformular w3c

Beitrag von walsi24 »

also dann schreibe ich dort meine e-mail adresse usw. rein?
Gesperrt