w3concepts.form.v1

Gesperrt
Rolf Herrmann
Beiträge: 101
Registriert: Fr 6. Aug 2004, 12:44
Kontaktdaten:

w3concepts.form.v1

Beitrag von Rolf Herrmann » Mi 25. Mai 2005, 09:04

Hallo,

Frage: Gibt es auch eine Möglickeit einer Fotoübermittlung in diesem Modul?

Ich möchte gern, das man ein Foto downloaden kann und somit mitverschicken kann.

Gruss Rolf

emergence
Beiträge: 10641
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Re: w3concepts.form.v1

Beitrag von emergence » Mi 25. Mai 2005, 10:08

Rolf Herrmann hat geschrieben:Frage: Gibt es auch eine Möglickeit einer Fotoübermittlung in diesem Modul?

Ich möchte gern, das man ein Foto downloaden kann und somit mitverschicken kann.
den ersten satz versteh ich ja noch, den zweiten in kombination mit dem ersten nicht...

theoretisch müsste das gleichzeitige uploaden und anschließende versenden eines bildes funktionieren... nur ist das in der klasse nicht eingebaut bzw wird nicht berücksichtigt...
bin mir jetzt nicht sicher, aber es wäre möglich das es einen hack im orginal thread gibt, der attachments berücksichtigt (könnte aber auch html formatierung beim email versand gewesen sein)
*** make your own tools (wishlist :: thx)

Rolf Herrmann
Beiträge: 101
Registriert: Fr 6. Aug 2004, 12:44
Kontaktdaten:

Re: w3concepts.form.v1

Beitrag von Rolf Herrmann » Mi 25. Mai 2005, 10:23

emergence hat geschrieben:
Rolf Herrmann hat geschrieben:Frage: Gibt es auch eine Möglickeit einer Fotoübermittlung in diesem Modul?

Ich möchte gern, das man ein Foto downloaden kann und somit mitverschicken kann.
den ersten satz versteh ich ja noch, den zweiten in kombination mit dem ersten nicht...

theoretisch müsste das gleichzeitige uploaden und anschließende versenden eines bildes funktionieren... nur ist das in der klasse nicht eingebaut bzw wird nicht berücksichtigt...
bin mir jetzt nicht sicher, aber es wäre möglich das es einen hack im orginal thread gibt, der attachments berücksichtigt (könnte aber auch html formatierung beim email versand gewesen sein)
Also ich möchte gern die Möglich kein haben ein Foto mit hochladen zukönnen und dann zu versenden. WO bringe ich es im Code von w3concepts.form.v1 ein? Und was trage ich dort ein?

Gruß Rolf

Rolf Herrmann
Beiträge: 101
Registriert: Fr 6. Aug 2004, 12:44
Kontaktdaten:

Re: w3concepts.form.v1

Beitrag von Rolf Herrmann » Mi 25. Mai 2005, 10:27

emergence hat geschrieben:
Rolf Herrmann hat geschrieben:Frage: Gibt es auch eine Möglickeit einer Fotoübermittlung in diesem Modul?

Ich möchte gern, das man ein Foto downloaden kann und somit mitverschicken kann.
den ersten satz versteh ich ja noch, den zweiten in kombination mit dem ersten nicht...

theoretisch müsste das gleichzeitige uploaden und anschließende versenden eines bildes funktionieren... nur ist das in der klasse nicht eingebaut bzw wird nicht berücksichtigt...
bin mir jetzt nicht sicher, aber es wäre möglich das es einen hack im orginal thread gibt, der attachments berücksichtigt (könnte aber auch html formatierung beim email versand gewesen sein)
Also das ist die Ausgabe von w3concepts.form.v1. Wo trage ich das ein damit ich die Möglichkeit habe ein Bild mit hochzuladen und dann zu versenden?

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, $errormsg;

   function w3form() {
       $this->__init_class();
   }
   // end constructor w3from

   // PRIVATE
   function sendEmail() {
      $this->aufdroeseln($this->suppress('sent'));
      $this->generateEmailMessage();
      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());
   }

   // 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) {
      if($sent == true) {
          echo _MAIN_ERROR_MSG_;
          echo $this->errormsg;
          $this->errormsg = "";
      }
      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) {
         $this->formularFeldKorrekt(&$feld);
      }
      if($this->errormsg != "") {
          if(substr($this->errormsg, (strlen($this->errormsg) - 2), 1) == ",") {
                 $this->errormsg = substr($this->errormsg, 0, (strlen($this->errormsg) - 2));
          }
          return false;
      } else {
          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']}"])) {
          $this->errormsg .= $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("^[ .,;!?()0-9öäüéàèâêîça-z-]*$",$_POST["{$feld['name']}"])) {
          $this->errormsg .= str_replace("{FIELD}", $feld['name'], _ERROR_WRONG_STRING_TYPE_);
          return false;
      }
      if (!empty($feld['valid']) && $feld['valid'] == 'text' &&
          !eregi("^[ .,;!?()0-9öäüéàèâêîça-z-]*$",$_POST["{$feld['name']}"])) {
          $this->errormsg .= str_replace("{FIELD}", $feld['name'], _ERROR_WRONG_STRING_TYPE_);
          return false;
      }
      if (!empty($feld['valid']) && $feld['valid'] == 'integer' &&
          !eregi("^[0-9]*$",$_POST["{$feld['name']}"])) {
          $this->errormsg .= str_replace("{FIELD}", $feld['name'], _ERROR_WRONG_INT_VALUE_);
          return false;
      }
      if (!empty($feld['valid']) && $feld['valid'] == 'float' &&
          !eregi("^[0-9]*[.]{0,1}[0-9]*$",$_POST["{$feld['name']}"])) {
          $this->errormsg .= str_replace("{FIELD}", $feld['name'], _ERROR_WRONG_FLOAT_VALUE_);
          return false;
      }
      if (!empty($feld['valid']) && $feld['valid'] == 'date' &&
          !eregi("^[0-9]{1,2}.[0-9]{1,2}.[0-9]{2}$",$_POST["{$feld['name']}"])) {
          $this->errormsg .= str_replace("{FIELD}", $feld['name'], _ERROR_WRONG_DATE_);
          return false;
      }
      if( !empty($feld['valid']) && $feld['valid'] == "phone" &&
          !ereg("^(\(?\+?[0-9]*\)?)?[0-9_-\/\(\)]*$", $_POST["{$feld['name']}"])) {
          $this->errormsg .= str_replace("{FIELD}", $feld['name'], _ERROR_WRONG_TELEHPONE_NUMBER_);
          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->errormsg .= str_replace("{FIELD}", $feld['name'], _ERROR_WRONG_EMAIL_);
          return false;
      }

      // gr�ssenbereich bei integer und float pr�fen
      if (!empty($feld['minvalue']) && $_POST["{$feld['name']}"] < $feld['minvalue']) {
          $this->errormsg .= str_replace("{FIELD}", $feld['name'], _ERROR_WRONG_MINVALUES_);
          return false;
      }
      if (!empty($feld['maxvalue']) && $_POST["{$feld['name']}"] > $feld['maxvalue']) {
          $this->errormsg .= str_replace("{FIELD}", $feld['name'], _ERROR_WRONG_MAXVALUES_);
          return false;
      }

      // l�ngenbereich bei allen typen pr�fen
      if (!empty($feld['minlength']) && strlen($_POST["{$feld['name']}"]) < $feld['minlength']) {
          $this->errormsg .= str_replace("{FIELD}", $feld['name'], _ERROR_WRONG_MINLENGTH_);
          return false;
      }
      if (!empty($feld['maxlength']) && strlen($_POST["{$feld['name']}"]) > $feld['maxlength']) {
          $this->errormsg .= str_replace("{FIELD}", $feld['name'], _ERROR_WRONG_MAXLENGTH_);
          return false;
      }

      return true;
   }


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

    function __init_class()
    {
        @define("_ERROR_WRONG_STRING_TYPE_",        "<br>Das Feld <B>'{FIELD}'</B> enth&auml;lt nicht g&uuml;ltige Zeichen.");
        @define("_ERROR_WRONG_EMAIL_",              "<br>Das Feld <B>'{FIELD}'</B> enth&auml;lt ist keine g&uuml;ltige Email-Adresse.");
        @define("_ERROR_WRONG_TELEHPONE_NUMBER_",   "<br>Das Feld <B>'{FIELD}'</B> ist keine g&uuml;ltige Telefonnummer.");
        @define("_ERROR_WRONG_MINVALUE_",           "<br>Der Wertebereich des Feldes <B>'{FIELD}'</B> wurde unterschritten.");
        @define("_ERROR_WRONG_MAXVALUE_",           "<br>Der Wertebereich des Feldes <B>'{FIELD}'</B> wurde &uuml;berschritten.");
        @define("_ERROR_WRONG_MINLENGTH_",          "<br>Das Feld <B>'{FIELD}'</B> ist zu kurz.");
        @define("_ERROR_WRONG_MAXLENGTH_",          "<br>Das Feld <B>'{FIELD}'</B> ist zu lang.");
        @define("_ERROR_WRONG_DATE_",               "<br>Das Feld <B>'{FIELD}'</B> ist kein g&uuml;ltiges Datum.");
        @define("_ERROR_WRONG_INT_VALUE_",          "<br>Das Feld <B>'{FIELD}'</B> ist keine Ganzzahl.");
        @define("_ERROR_WRONG_FLOAT_VALUE_",        "<br>Das Feld <B>'{FIELD}'</B> ist keine Fliesskommazahl.");
        @define("_MAIN_ERROR_MSG_",                 "<font class="text3">Felder mit einem * sind Pflichtfelder und müssen ausgefüllt werden.
<br>");
#        if(file_exists("./w3form_errors.inc.php")) {
#            include "w3form_errors.inc.php";
#        }
    }
    // end fucntion __init_class
    ////////////////////////////////////////////////////////
}

if ($edit) {
   echo "<h1>Formularkonfiguration</h1>";
   echo "<p><b>Hier ist das Formular sowie der Text einzugeben, der zusammen mit dem Formular ausgegeben werden soll:</b></p>";
   echo "CMS_HTML[0]";
   echo "<p>Hier ist die Ausgabe einzugeben, die erscheint, wenn das Formular erfolgreich prozessiert worden ist:</p>";
  // echo "<img src='http://www.wondernet24.de/partner/verkauft.php?&remark_admin=" . $vorname . "," . $name . "," . $email . "' height='1' width='1' border='0'>";
   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();
}

?>

emergence
Beiträge: 10641
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Re: w3concepts.form.v1

Beitrag von emergence » Mi 25. Mai 2005, 10:37

Rolf Herrmann hat geschrieben:Also das ist die Ausgabe von w3concepts.form.v1. Wo trage ich das ein damit ich die Möglichkeit habe ein Bild mit hochzuladen und dann zu versenden?
da hast du aber einiges vor...

na ja du müsstest zu aller erst ein form feld für uploads schaffen
und in der function formularFeld einbauen...

die weiteren sachen wären
sich darum kümmern wohin die datei raufgeladen wurde
die mail funktion anpassen das dieses raufgeladene bild als attachment angehängt wird, und anschließend sollte nach erfolgreicher versendung das raufgeladene bild wieder entfernt werden...

so in etwa würde ich das aufbauen... ist leider kein 5 minuten job

es gibt glaube ich noch einen thread für feature requests bei diesen modul
ich würde die anfrage dort mal ergänzen...
*** make your own tools (wishlist :: thx)

Gesperrt