Seite 1 von 1

w3concepts.form.v1 - Probleme beim senden

Verfasst: Do 7. Dez 2006, 13:37
von gap
Hallo Forum,

leider komme ich nicht weiter, Ich benutze das Formular w3concepts.form.v1 ein wirklich cooles kontaktformular doch leider gehts im Moment nicht...Bei einem anderen Versuch auf meinem eigenen Server gings :(

Meine Frage wie versendet eigentlich das Modul selbst auf der Seite von w3concepts habe ich keine Info dazu gefunden. - Ich weiss dass ich doof bin aber vielleicht könnte sich ja trotzdem einer mir annehmen.

Muss ich in Contenido noch einstellen wie die Mails versandt werden z.b. Kennwort oder so ? Fehlermeldung bekomme ich auf jedenfall keine nach dem senden glange ich zur Bestätigungsseite eine Mail wird aber nicht gesendet.

Bin Dankbar für jede Hilfe :)

Verfasst: Do 7. Dez 2006, 14:13
von xmurrix
Hallo,

w3concepts.form.v1 verwendet ja die mail()-Funktion von PHP. Schau dir mal folgenden Post zu eventuellen Problemen bei manchen Providern an:
http://www.contenido.org/forum/viewtopic.php?t=12676

Gruß
xmurrix

-f Funktion leider wieder keine Mail

Verfasst: Mo 11. Dez 2006, 19:11
von gap
Danke für Deine schnelle Antwort. Leider hatte ich keinen Erfolg wenn ichs richtig gemacht habe ...hier mein code. Mein Provider ich traus mich kaum sagen ist strato. Muss ich am Input auch noch was machen ?

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(),"-f".$this->email['from']['email']);  
   } 

   // 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-z0-9-]*$",$_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'] == '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); 
      } 
   } 

} 

class delimitedFile extends w3form { 

   function success() { 
      $daten = fopen ("datei.csv", "a"); 
      fwrite($daten,"{$_POST['vorname']},{$_POST['nachname']}\n"); 
      fclose ($daten); 
      echo $this->form['answer']; 
   } 

} 

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 delimitedFile(); 
   $formular->setBackgroundError("CMS_VALUE[4]"); 
   $formular->setForm("CMS_HTML[0]"); 
   $formular->setAnswer("CMS_HTML[1]"); 
   $formular->process(); 
} 

?>

Verfasst: Mo 11. Dez 2006, 19:51
von wosch
Mal eine ganz dumme Zwischenfrage:
Hast du bei dem Artikel das w3concepts.form.v1 verwendet bei Konfiguration die Angaben Sender, Empfäger, ... gemacht?

(Es gibt Provider die nur die eigene Domain / Mailadresse als Sender zulassen - auch das mal in Betracht gezogen und probiert?)

leider ja

Verfasst: Mo 11. Dez 2006, 20:40
von gap
ich komm und komm nicht drauf die Einstellungen im Artikel habe ich gemacht... muss ich den Absender dort auch angeben und im input einrichten ? oder reicht die Zieladresse ?

Re: leider ja

Verfasst: Mo 11. Dez 2006, 21:05
von wosch
gap hat geschrieben:ich komm und komm nicht drauf die Einstellungen im Artikel habe ich gemacht... muss ich den Absender dort auch angeben und im input einrichten ? oder reicht die Zieladresse ?
Bild
1: das ist die Mailadresse an die gesendet wird,
hier sollte eine gültige Mailadresse der Absende-Domain stehen
2: das ist die Mailadresse an die eine Antwort gesendet werden könnte,
im Zweifelsfall hier ebenfalls eine gültige Mailadresse der Absende-Domain eintragen.
Wenn es dann nicht tut - :?:
Ich würde dann mal den Provider fragen, denn dann hat es mit dem Moduls eigentlich nichts mehr zu tun, dieses Modul ist super, wenn man die dem Modul zugrunde liegende interne Logik verstanden hat.

so is es :)

Verfasst: Mo 11. Dez 2006, 21:11
von gap
habe alle angaben gemacht ...ich finde das modul auch super nur in dem fall wills nicht

Provider und Servervorraussetzungen stimmen

Verfasst: Mi 13. Dez 2006, 11:13
von gap
Hallo Forum,

nach Rücksprache mit meinem Provider müsste alles Funktionieren - hat keiner einen Rat für mich ohne Fehlermeldungen ist es recht schwierig für mich ...

Verfasst: Mi 13. Dez 2006, 17:40
von wosch
Das einzigste was mir noch auf Anhieb einfällt ist:
du probierst mal das Formular des Beispielmandanten aus,
und zwar mit den 4 verschiedenen Methoden.
Wenn dort alle 4 Methoden funktionieren :?:
Funktionieren nicht alle - nochmal nachsehen ob w3concepts.form.v1 eine dieser nicht gehenden Funktionen verwendet.
(Und dann ggf. Forschen warum diese Funktion bei deinem Provider nicht geht)

PHP funktion überprüft

Verfasst: Di 19. Dez 2006, 18:27
von gap
Hallo Forum ich nochmal :)

ich habe diesen code gerade ausprobiert der funktioniert einwand frei ...allerdings sehe ich nicht wirklich wo mein Problem steckt Kann sich nochmal einer meinen oben gesendeten code anschauen ? Danke


<html>

<body>

<form action="index.php5">

<br>Empfaenger:<input type=text name=email value=''>
<br>Betreff:<input type=text name=betreff >
<br>Absender<input type=text name=von >
<br>Body:<textarea name=body> </textarea >
<br><input type=submit value=senden >
</form>

</body>

</html>



<?

extract($_POST);
extract($_GET);

if (isset ($email)) {

mail("$email","$betreff","$body","From : $von");
echo "Email versendet !";
}

else { echo"Kein Empfeanger angegeben !";}
?>

Verfasst: Di 19. Dez 2006, 18:44
von HerrB
Mal abgesehen davon, dass man das Forumar supi zum Spammen missbrauchen kann, das hier gehört da nicht hin:

Code: Alles auswählen

<form action="index.php5"> 
Siehe im vorhandenen Code für Beispiele, wie es heißen müsste (front_content.php?...).

Gruß
HerrB

Verfasst: Di 19. Dez 2006, 18:50
von xmurrix
Hallo,

vielleicht sollte in der mail()-Funktion einfach ein Leerzeichen zwischen "-f" und der E-Mail-Adresse rein, also

Code: Alles auswählen

"-f ".$this->email['from']['email']
anstatt

Code: Alles auswählen

"-f".$this->email['from']['email']
Gruß
xmurrix

Verfasst: Di 19. Dez 2006, 18:51
von kummer
HerrB hat geschrieben:Mal abgesehen davon, dass man das Forumar supi zum Spammen missbrauchen...
ich glaube das muss hier mal in aller deutlichkeit gesagt sein: wenn jemand den empfänger selber wählen will, dann solle er oder sie einen email-client verwenden. es ist einfach extrem schlecht, wenn ein besucher den empfänger direkt angeben kann. das sollte man nie, nie, wirklich nie machen.

man kann eine drop-downliste mit möglichen empfängern angeben. dabei soll aber nicht die email übertragen werden, sondern bloss ein schlüssel, mit dem die email dann ermittelt werden kann.

ich bin mir sicher, dass jedes formular, welches die eingabe einer empfänger-email-adresse erlaubt, früher oder später wird überarbeitet werden müssen, weil spam überhand zu nehmen beginnt. und nicht vergessen: man merkt das selber lange zeit nicht unbedingt, da ja jemand anderes die emails erhält. und die werden nicht wirklich zufrieden sein.

hallo kummer Hallo Herr B

Verfasst: Di 19. Dez 2006, 19:05
von gap
will den Empfänger gar nicht selber wählen das kleine php dings habe ich nur genutzt um meinen Provider zu testen. Da ich sonst nicht weiterkomme. Mit dem kleinen php Formular klappts also nun weis ich nur nicht warum das w3concepts.form.v1 bei mir nicht geht. siehe ganz oben.

Die php seite war also nur ein Versuch. Bin ich auf dem Holzweg ?

Trotzdem aber danke für den Hinweis mit dem Spam.

wenn ich method="POST" einfach weglasse gehts auch allerdings komm ich dann nicht mehr auf die Bestätigungsseite. Oh man ich hab sooo wenig Ahnung