Webformular mit Fotoupload

Gesperrt
Pillendreher
Beiträge: 81
Registriert: Di 3. Mai 2005, 17:56

Webformular mit Fotoupload

Beitrag von Pillendreher » Sa 8. Okt 2005, 09:37

Hallo Ihrs,

Ich suche für das projekt "du-bist-bremen.de" einen Webmailer/Webformular mit der möglichkeit auch Fotos hochzuladen. Also das die Leutz ihre infos in ein Formular eingeben, ein Foto von ihrer Festplatte auswählen (evtl. auch weblink, muss aber nciht) und das ganze dann an unsere email-adresse geschickt wird..


hoffentlich kann mir jemand helfen!

DANK schonmal für eure hilfe im voraus
simon

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

Beitrag von emergence » Mo 10. Okt 2005, 09:23

ähm ich glaub das modul gibts nicht für contenido...
such mal bei google nach mime mail php...
vielleicht findet sich ja ein script...
*** make your own tools (wishlist :: thx)

halousi
Beiträge: 111
Registriert: Mi 30. Mär 2005, 15:31
Kontaktdaten:

Beitrag von halousi » Mi 19. Okt 2005, 17:16

ähm, ist zwar ein bisschen spät. ich hab mal sowas gebastelt. probier doch mal das hier:

1. du brauchst ein formular

Code: Alles auswählen

<span class="Normal">
<table style="" border="0" cellpadding="1" width="100%">
<tbody>
<tr>
<td><span class="Normal">Firma:</span></td>
<td></td>
<td>###name:Firma; type:text; valid:text; size:50;mandatory:false###</td></tr>
<tr>
<td><span class="Normal">Anrede:</span></td>
<td></td>
<td>###name:Anrede; type:select; valid:text; size:1; option:bitte auswählen; option:Herr; option:Frau; value:bitte Auswählen###</td></tr>
<tr>
<td><span class="Normal">Name:*</span></td>
<td></td>
<td>###name:Name; type:text; valid:text; size:50; mandatory:true###</td></tr>
<tr>
<td><span class="Normal">Straße, Nr.:*</span></td>
<td></td>
<td>###name:Strasse; type:text; valid:text; size:40; mandatory:true###
###name:Nr; type:text; valid:integer; size:5; mandatory:true###</td></tr>
<tr>
<td><span class="Normal">PLZ, Ort:*</span></td>
<td></td>
<td>###name:PLZ; type:text; valid:integer; size:5; mandatory:true### ###name:Ort; type:text; valid:text; size:40; mandatory:true###</td></tr>
<tr>
<td><span class="Normal">Land:</span></td>
<td></td>
<td>###name:Land; type:text; valid:text; size:50;mandatory:false###</td></tr>
<tr>
<td><span class="Normal">Telefon:*</span></td>
<td></td>
<td>###name:Telefon; type:text; valid:string; size:50; mandatory:true###</td></tr>
<tr>
<td><span class="Normal">E-Mail:*</span></td>
<td></td>
<td>###name:E-Mail; type:text; valid:email; size:50; mandatory:true###</td></tr>
<tr>
<td><span class="Normal">Datei anhängen:</span></td>
<td></td>
<td><input name="userfile" type="file"> </td></tr>
<tr>
<td><span class="Normal">Mit der Bitte um:</span></td>
<td></td>
<td>###name:Betreff; type:select; valid:text; size:1; option:bitte
auswählen; option:ein Angebot; option:Rückruf; value:bitte Auswählen###</td></tr>
<tr>
<td><span class="Normal">Mitteilung:</span></td>
<td></td>
<td>###name:Mitteilung; type:textarea; valid:string; rows:4; cols:38###</td></tr>
<tr>
<td colspan="3">
<p align="left"><br><input value="Anfrage senden" type="submit"> <br><br><br><span class="Normal">Diese Email wird an <a href="mailto:info@darakon.de">info@xxx.de</a> versendet. Felder die mit einem "*" gekennzeichnet sind müssen ausgefüllt werden.<br><br>Vielen Dank für Ihre Nachricht.</span></p></td></tr></tbody></table></span>
2. ein formular-modul:

INPUT:

Code: Alles auswählen

/*********************************************** 
* CONTENIDO MODUL - INPUT 
* 
* Modulname   :       w3concepts.form.v1 
* Author      :     Andreas Kummer 
* Copyright   :     mumprecht & kummer w3concepts 
* Created     :     20-08-2004 
* Modified    :     18-10-2005 (by halousi)
************************************************/ 
echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\"><tr valign=\"top\">"; 
echo "<tr><td class=\"text_medium\">Zieladresse (alias@mydomain.com):</td>"; 
echo "<td><input type=\"text\" name=\"CMS_VAR[0]\" value=\"CMS_VALUE[0]\" size=\"30\" class=\"text_medium\" /></td></tr>"; 
echo "<tr class=\"text_medium\"><td>Betreff:</td>"; 
echo "<td><input type=\"text\" name=\"CMS_VAR[1]\" value=\"CMS_VALUE[1]\" size=\"30\" /></td></tr>"; 
echo "<tr class=\"text_medium\"><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 class=\"text_medium\"><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 class=\"text_medium\"><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>"; 
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 
* Modified    :     14-04-2005 by Mathias Rauh <m.rauh@rzwei.de> 
                         18-10-2005 by halousi (jetzt mit datei-anhang)
*               - Support for attachments added 
************************************************/ 

class w3form { 

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

   function w3form() { 
   } 

   function setAktion($aktion) { // Action-Adresse in Klasse übernehmen 
      $this->form['aktion'] = $aktion; 
   }    
    
   // PRIVATE 
   function sendEmail() { 
      $uid = md5(uniqid(rand())); 
      $this->aufdroeseln($this->suppress('sent','Submit')); 
      $this->generateEmailMessage(); 
      $header .= "MIME-Version: 1.0\n"; 
      $header .= "X-Mailer: PHP\n"; 
      $header .= "From: {$this->email['from']['name']} <{$this->email['from']['email']}>\n"; 
      $header .= "Reply-To: {$this->email['from']['email']}\n";
      $header .= "Cc: {$this->email['from']['email']}\n"; 
      $header .= "Return-Path: {$this->email['from']['email']}\n"; 
      if ($_FILES['userfile']['name']) { 
         $datei = fread(fopen($_FILES['userfile']['tmp_name'],"r"),filesize($_FILES['userfile']['tmp_name'])); 
         $datei = chunk_split(base64_encode($datei)); 
          
         $header .= "Content-Type: multipart/mixed; boundary=$uid\n"; 
         $header .= "--$uid\n"; 
         $header .= "Content-Type: text/plain\n"; 
         $header .= "Content-Transfer-Encoding: 7bit\n"; 
         $header .= $this->email['message']; 
         $header .= "\n\n--$uid\n"; 

         $header .= "Content-Type: {$_FILES['userfile']['type']}; name=\"{$_FILES['userfile']['name']}\"\n"; 
         $header .= "Content-Disposition: attachment\n"; 
         $header .= "Content-Transfer-Encoding: base64\n\n"; 
         $header .= "$datei\n"; 
         $header .= "--$uid\n"; 
         mail($this->email['adresses'],$this->email['subject'],'',$header); 
      } 
      else { 
         $header .= "Content-type: text/plain; charset=iso-8859-1\n"; 
         mail($this->email['adresses'],$this->email['subject'],$this->email['message'],$header); 
      } 
   } 

   // 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) > 15 OR strlen($value) > 34) { 
         $this->email['message'] .= "$key\n$value\n"; 
      } else { 
      $this->email['message'] .= $key; 
      $this->email['message'] .= str_repeat(' ',15-strlen($key)); 
      $this->email['message'] .= "$value\n"; 
      } 
   } 

   // PRIVATE 
   function generateEmailMessage() { 
      if ($this->aufgedroeselt) foreach ($this->aufgedroeselt as $key => $value) { 
         $this->add2Message($key,$value);                   
      } // end if 
   } 

   // 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="'.$this->form['aktion'].'" method="POST" enctype="multipart/form-data">'."\n"; 
      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 'file': 
            if (!empty($attribute['size'])) $parameter .= " size=\"{$attribute['size']}\""; 
            echo "<input type=\"file\" $parameter class=\"standard\" $style />"; 
            break; 
         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']}"]; 
            echo "<input type=\"text\" $parameter value=\"$value\" class=\"standard\" $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\" class=\"standard\" $style>$value</textarea>"; 
            break; 
         case 'select': 
            echo "<select $parameter class=\"standard\" $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\" class=\"formcheckbox\" />attrval="; 
                  echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\" class=\"formcheckbox\" />attrval="; 
               } else { 
                  echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\" class=\"formcheckbox\" />"; 
               } 
            } else { 
               if (!empty($attribute['selected']) && $attribute['selected'] == 'true') { 
                  echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\" checked=\"checked\" class=\"formcheckbox\" />attrsel="; 
               } else { 
                  echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\" class=\"formcheckbox\" />"; 
               } 
            } 
            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; 
      } 
      if ($sent && !$this->formularFeldKorrekt($attribute)) echo "<span style=\"color:{$this->form['colorError']};\">   Bitte ausfüllen.</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 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-z0-9-]*$",$_POST["{$feld['name']}"])) return false; 
      //if (!empty($feld['valid']) && $feld['valid'] == 'textmitumbruch' && !eregi("^[ \n\r.,;!?()öäüéàèâêîça-z0-9-]*$",$_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 "<span class=\"Ueberschrift\">Formularkonfiguration</span>"; 
   echo "<span class=\"Normal\">Hier ist das Formular sowie der Text einzugeben, der zusammen mit dem Formular ausgegeben werden soll:</span>"; 
   echo "CMS_HTML[0]"; 
} else { 
   $aktion = $auth->url(); // Action-Adresse ist URL    
   $formular = new w3form(); 
   $formular->setAktion("$aktion"); // Action-Adresse an Klasse übergeben 
   $formular->addEmailAdress("CMS_VALUE[0]"); 
   $formular->setEmailSubject("CMS_VALUE[1]"); 
   //$formular->setEmailFrom("CMS_VALUE[2]","CMS_VALUE[3]"); 
   $formular->setEmailFrom($_POST['E-Mail'],"\"".$_POST['Name'].", ".$_POST['Vorname']."\""); 
   $formular->setBackgroundError("CMS_VALUE[4]"); 
   $formular->setForm("CMS_HTML[0]"); 
   $antwort = "<span class=\"Normal\">Vielen Dank für Ihre Anfrage, ".$_POST['Anrede']." ".$_POST['Name'].".<br />\nWir haben Ihre Nachricht erhalten und werden sie umgehend bearbeiten.<br><br>Sie erhalten eine Kopie Ihrer Anfrage an ".$_POST['E-Mail']." gesendet</span>"; 
   $formular->setAnswer("$antwort"); 
   $formular->process(); 
} 

?>

ok, modul konfigurieren und das formular im editor ins textfeld kopieren, fertig.

müsste eigentlich funktionieren.

gruß halousi

mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag von mvf » So 8. Jan 2006, 02:22

hallo

habe das modul unter 4.6.4 getestet und es funktioniert :? halb und halb

soll hiessen wenn ich kein attachment anhänge, dann bekomme ich die mial mit allen eingegebenen feldern, gebe ich ein attachment ein, dann bekomme ich die mail mit attachment aber ohne 'body' content ???

kann jemand helfen?
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams

E. Hut
Beiträge: 15
Registriert: Di 14. Mär 2006, 17:58
Kontaktdaten:

Re: Webformular mit Fotoupload

Beitrag von E. Hut » Di 4. Okt 2011, 00:14

Mir geht es genauso: nach langem Ausprobieren klappt der Dateiupload, aber dann ohne den Rest des Formulars. Beides zusammen klappt nicht.

Hat das irgendjemand hinbekommen?

Danke & Gruß
E.

Gesperrt