^_^

Gesperrt
i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

^_^

Beitrag von i-fekt » Sa 7. Jan 2006, 20:36

^_^
Zuletzt geändert von i-fekt am Fr 22. Okt 2010, 14:51, insgesamt 3-mal geändert.

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, 01:37

ich habe jetzt was das funktioniert :) (halbwegs :( )

soll heissen mail kommt an und anhang auch.

das ganze stammt aus diesem thread

http://contenido.org/forum/viewtopic.ph ... attachment

ich habe sowohl die formular eingabe als auch den outputcode auf ein attachment reduziert. zum testen:

click hier

leider noch mit 2 kleinen fehlern.

1) nach dem versenden erscheint im frontend

Code: Alles auswählen

Warning: fread(): supplied argument is not a valid stream resource in /home/httpd/vhosts/contenido.funjumping.de/httpdocs/front_content.php(770) : eval()'d code on line 405
2) in der mail kommt kein text an :(

code ist wie gesagt fast 1:1 wie im thread aus dem es stammt bis auf die kürzung

(soll ich meinen code hier nochmal posten?)
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

visionary
Beiträge: 43
Registriert: Di 4. Okt 2005, 22:57
Kontaktdaten:

Beitrag von visionary » So 8. Jan 2006, 12:16

@mvf

bitte poste mal den code

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, 14:39

visionary hat geschrieben:@mvf bitte poste mal den code
pooooh habe gestern nacht noch soviel rumprobiert, dass ich jetzt ncht mehr sicher bin aus welchem posting der nachfolgende code stammt :?

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 .= "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/parallel; boundary=$uid\n";
         $header .= "--$uid\n";
         $header .= "Content-Type: text/plain; charset=iso-8859-1\n";
         $header .= "Content-Transfer-Encoding: 8bit\n";
         $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'],$this->email['message'],$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>";
   $formular->setAnswer("$antwort");
   $formular->process();
}

?>
code für das formular selbst:

Code: Alles auswählen

<span class="Normal"> 
<table width="100%" cellpadding="1" border="0">  
<tr> 
<td><span class="Normal">Firma:</span></td>
 
<td>&nbsp;</td>
 
<td>###name:Firma; type:text; valid:text; size:50;mandatory:false###</td>
</tr>
 
<tr> 
<td><span class="Normal">Anrede:</span></td>
 
<td>&nbsp;</td>
 
<td>###name:Anrede; type:select; valid:text; size:1; option:bitte ausw&auml;hlen; option:Herr; option:Frau; value:bitte Ausw&auml;hlen###</td>
</tr>
 
<tr> 
<td><span class="Normal">Name:*</span></td>
 
<td>&nbsp;</td>
 
<td>###name:Name; type:text; valid:text; size:50; mandatory:true###</td>
</tr>
 
<tr> 
<td><span class="Normal">Stra&szlig;e, Nr.:*</span></td>
 
<td>&nbsp;</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>&nbsp;</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>&nbsp;</td>
 
<td>###name:Land; type:text; valid:text; size:50;mandatory:false###</td>
</tr>
 
<tr> 
<td><span class="Normal">Telefon:*</span></td>
 
<td>&nbsp;</td>
 
<td>###name:Telefon; type:text; valid:string; size:50; mandatory:true###</td>
</tr>
 
<tr> 
<td><span class="Normal">E-Mail:*</span></td>
 
<td>&nbsp;</td>
 
<td>###name:E-Mail; type:text; valid:email; size:50; mandatory:true###</td>
</tr>
 
<tr> 
<td><span class="Normal">Datei anh&auml;ngen:</span></td>
 
<td>&nbsp;</td>
 
<td><input type="file" name="userfile" /> </td>
</tr>
 
<tr> 
<td><span class="Normal">Mit der Bitte um:</span></td>
 
<td>&nbsp;</td>
 
<td>###name:Betreff; type:select; valid:text; size:1; option:bitte ausw&auml;hlen; option:ein Angebot; option:R&uuml;ckruf; value:bitte Ausw&auml;hlen###</td>
</tr>
 
<tr> 
<td><span class="Normal">Mitteilung:</span></td>
 
<td>&nbsp;</td>
 
<td>###name:Mitteilung; type:textarea; valid:string; rows:4; cols:38###</td>
</tr>
 
<tr> 
<td colspan="3"> 
<p align="left"><br />
<input type="submit" value="Anfrage senden" /> <br />
<br />
<br />
<span class="Normal">Felder die mit einem "*" gekennzeichnet sind m&uuml;ssen ausgef&uuml;llt werden.<br />
<br />
Vielen Dank f&uuml;r Ihre Nachricht.</span></p>
</td>
</tr>
</table>
</span>

setze ich den ersten content type im output auf

Code: Alles auswählen

$header .= "Content-Type: multipart/alternative; boundary=$uid\n";

bekomme ich sobald ich ein attachment anfüge immer den body der mail auch als anlage, also 2 attachments, das angehängte file plus eine textdatei mit dem body als inhalt, und der 'wahre' inhalt des bodys in der mail wird auch ordentlich gefüllt

setze ich den ersten content type auf

Code: Alles auswählen

$header .= "Content-Type: multipart/mixed; boundary=$uid\n";

bekomme ich sobald ich ein attachment anfüge den body der mail als anlage, also 2 attachments, das angehängte file plus eine textdatei mit dem body als inhalt, und der 'wahre' inhalt des bodys in der mail bleibt leer.

nehme ich ein attachment bekomme ich den body auch im body angezeigt.
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

visionary
Beiträge: 43
Registriert: Di 4. Okt 2005, 22:57
Kontaktdaten:

Beitrag von visionary » Mo 9. Jan 2006, 18:43

@mvf

habe jetzt das modul fertiggestellt war viel arbeit
der 2. anhang kommt nicht mehr :lol:

und so sieht es jetzt aus angepasst an das design
[/url]http://www.mk-anras.net/ta/cms/front_co ... at=217[url]

bitte keine mails abschicken danke!

[/url]

i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt » Mo 9. Jan 2006, 18:44

^_^
Zuletzt geändert von i-fekt am Fr 22. Okt 2010, 14:52, insgesamt 1-mal geändert.


visionary
Beiträge: 43
Registriert: Di 4. Okt 2005, 22:57
Kontaktdaten:

Beitrag von visionary » Mo 9. Jan 2006, 18:53

@i-fekt

färben sich die felder denn nicht rot wenn kein eintag da ist

wollte ein schlichtes einfaches design

habe deshalb auch die textausgabe zu den fehlen entfernt

ein fehler wird ja eh mit rotem backgrund dargestellt


ja hast recht
der ie kanns aber netscape nicht

da muss ich wohl wieder an den code ran

i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt » Mo 9. Jan 2006, 18:59

^_^
Zuletzt geändert von i-fekt am Fr 22. Okt 2010, 14:52, insgesamt 1-mal geändert.

visionary
Beiträge: 43
Registriert: Di 4. Okt 2005, 22:57
Kontaktdaten:

Beitrag von visionary » Mo 9. Jan 2006, 22:04

so jetzt klappts auch mit netscape

die fehlerfarbe ist jetzt mal grau

natürlich kann auch jede andere verwendet werden:lol:

demo
http://www.mk-anras.net/ta/cms/front_co ... ?idcat=217

simas
Beiträge: 153
Registriert: Fr 7. Mär 2003, 11:15
Wohnort: Gampelen, Schweiz
Kontaktdaten:

Beitrag von simas » So 15. Jan 2006, 17:50

Hallo zusammen,

Im Modul von Andreas hat es einen Fehler. Diesen merkt man normalerweise nicht weil man nur eine E-Mail-Adresse als Empfänger angibt:

Code: Alles auswählen

function addEmailAdress($email) { 
      if (empty($this->emailAdresses)) { 
         $this->email['adresses'] .= "$email"; 
      } else { 
         $this->email['adresses'] .= ", $email"; 
      } 
   } 
müsste sein:

Code: Alles auswählen

function addEmailAdress($email) { 
      if (empty($this->email['adresses'])) { 
         $this->email['adresses'] .= "$email"; 
      } else { 
         $this->email['adresses'] .= ", $email"; 
      } 
   } 
Die Variable emailAdresses gibt es nicht!

Gruss, Simon

visionary
Beiträge: 43
Registriert: Di 4. Okt 2005, 22:57
Kontaktdaten:

Beitrag von visionary » So 15. Jan 2006, 19:57

@simas

der oben gepostete code ist nicht der aktuellste

simas
Beiträge: 153
Registriert: Fr 7. Mär 2003, 11:15
Wohnort: Gampelen, Schweiz
Kontaktdaten:

Beitrag von simas » So 15. Jan 2006, 20:21

Ah gut.
ich hatte den Fehler im w3concepts.forms.v1 gefund und dachte dieser sei in diesem Modul auch drin.

Gruss, Simon

KoAn
Beiträge: 5
Registriert: Do 23. Feb 2006, 18:06
Kontaktdaten:

Beitrag von KoAn » Sa 25. Feb 2006, 15:17

Hallo,

ich habe das Modul w3concepts.form.v1 auch um die Attachment-Funktion erweitert, allerdings habe ich das Problem, dass bei mir dann nur der Pfad zum Attachment im Mail angeführt ist, die Datei aber nicht mitgeschickt wird.

Hier mal der Code:

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();
		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());
	         
           if ($_FILES['userfile1']['name']) { 
             $datei1 = fread(fopen($_FILES['userfile1']['tmp_name1'],"r"),filesize($_FILES['userfile1']['tmp_name'])); 
             $datei1 = chunk_split(base64_encode($datei1));
           } 
       
           // 2 
           if ($_FILES['userfile2']['name']) { 
             $datei2 = fread(fopen($_FILES['userfile2']['tmp_name'],"r"),filesize($_FILES['userfile2']['tmp_name'])); 
             $datei2 = chunk_split(base64_encode($datei2)); 
           }
           
           $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['userfile1']['type']}; name=\"{$_FILES['userfile1']['name']}\"\n"; 
           $header .= "Content-Disposition: attachment\n"; 
           $header .= "Content-Transfer-Encoding: base64\n\n"; 
           $header .= "$datei1\n"; 
           $header .= "--$uid\n"; 
       
           // 2 
           if($_FILES['userfile2']['name']) { 
             $header .= "Content-Type: {$_FILES['userfile2']['type']}; name=\"{$_FILES['userfile2']['name']}\"\n"; 
             $header .= "Content-Disposition: attachment\n"; 
             $header .= "Content-Transfer-Encoding: base64\n\n"; 
             $header .= "$datei2\n"; 
             $header .= "--$uid\n"; 
           } 
         }

	// 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();
}

?>
Vielleicht kann mir ja jemand weiterhelfen.


Grüße,

Andi

Gesperrt