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 ?

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:
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
anstatt
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