w3c contact form

Gesperrt
walsi24
Beiträge: 95
Registriert: Di 25. Okt 2005, 20:48
Kontaktdaten:

w3c contact form

Beitrag von walsi24 » Mi 15. Aug 2012, 17:51

hallo zusammen

habe das w3c kontakformular schon bei anderen seiten im einsatz, jedoch gibt es hier nun fehler?!
http://schulefit.ch/cms/front_content.php?idcat=5 so wie ich nun gegoogelt habe liegt das an der php-version, stimmt das?

kann mir jemand sagen, wie man das beheben kann?

vielen dank!

McHubi
Beiträge: 1210
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: w3c contact form

Beitrag von McHubi » Do 16. Aug 2012, 07:53

Hallo,

schau mal auf die Fehlermeldung "Function split() is deprecated"
->
http://php.net/manual/de/function.split.php
statt dessen nimmst Du
http://www.php.net/manual/de/function.preg-split.php oder
http://www.php.net/manual/de/function.explode.php

Musst also das Modul an entsprechender Stelle anpassen. Viel Erfolg! :D
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)

walsi24
Beiträge: 95
Registriert: Di 25. Okt 2005, 20:48
Kontaktdaten:

Re: w3c contact form

Beitrag von walsi24 » Do 16. Aug 2012, 08:07

Danke! Ich versuchs mal :)

Hat das mit der php version zu tun?

McHubi
Beiträge: 1210
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: w3c contact form

Beitrag von McHubi » Do 16. Aug 2012, 08:30

Öh... Hol Dir mal nen Kaffee und guckst Du nochmal hier http://php.net/manual/de/function.split.php
Gleich neben dem Warnschild findest Du: "Diese Funktion ist seit PHP 5.3.0 DEPRECATED (veraltet). "
:mrgreen:
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)

walsi24
Beiträge: 95
Registriert: Di 25. Okt 2005, 20:48
Kontaktdaten:

Re: w3c contact form

Beitrag von walsi24 » Do 16. Aug 2012, 21:08

:D

ein teil habe ich nun (hoffentlich) geschafft... das andere muss ich nun noch auspröbeln...
php ist gar nicht meine welt :mrgreen:

danke dir!

walsi24
Beiträge: 95
Registriert: Di 25. Okt 2005, 20:48
Kontaktdaten:

Re: w3c contact form

Beitrag von walsi24 » Do 16. Aug 2012, 21:55

also der eine fehler ist ja jetzt weg... aber der andere ist noch...
habe ein paar & weggelöscht, dann war der fehler auch weg nur sendet das formular nicht...

kannst du evtl. wenn du kurz zeit hättest mal rein schauen? danke dir! :oops:

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();
# Spider IT Deutschland - New Mailer -->
      cInclude("classes", "class.phpmailer.php");
      $mail = new phpmailer;
      $mail->Host = "localhost";
      $mail->IsHTML(false);
      #Get mailer from settings
      switch (strtolower("CMS_VALUE[5]")) {
        case "smtp" :
            $mail->IsSMTP();
            $host = "CMS_VALUE[6]";
            $user = "CMS_VALUE[7]";
            $password = "CMS_VALUE[8]";
            if (($host != '') && ($user != '') && ($password != '')) {
                $mail->SMTPAuth = true;
                $mail->Host = $host;
                $mail->Username = $user;
                $mail->Password = $password;
            }
            break;
        case "mail" :
            $mail->IsMail();
            break;
        case "sendmail" :
            $mail->IsSendmail();
            break;
        case "qmail" :
            $mail->IsQmail();
            break;
        default :
      }
      $mail->FromName = $this->email['from']['name'];
      $mail->From = $this->email['from']['email'];
      $mail->ReplyTo = $this->email['from']['email'];
      $mail->AddAddress($this->email['adresses']);
      $mail->Subject = $this->email['subject'];
      $mail->Body = $this->email['message'];
      $mail->WordWrap = 50;
      $mail->Send();
      #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());
# Spider IT Deutschland - New Mailer <--
   }

   // 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 = preg_split('/###/',$formular);
      for ($i=1;$i<count($felder);$i=$i+2) {
         $attributte = preg_split('/;/',trim($felder[$i]));
         foreach ($attributte as $attribut) {
            $namewert = preg_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="/cms/front_content.php?idcatart=7" method="POST">';
      echo '<input type="hidden" name="sent" value="true" />';
      $formular = $this->form['form'];
      $formulardaten = $this->formularInterpretation(&$formular);
      $formular = preg_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();
}

?>
Zuletzt geändert von walsi24 am Fr 17. Aug 2012, 10:30, insgesamt 1-mal geändert.

McHubi
Beiträge: 1210
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: w3c contact form

Beitrag von McHubi » Fr 17. Aug 2012, 07:45

Hallo walsi24,

für das Einfügen von Code in einem Post ist der [ code ]-Button vorgesehen. Du hast hier den [ URL ]-Button für eine Webadresse genommen... :wink:

Schau mal hier: http://faq.contenido.org/content/16/265 ... cated.html
Und dann hier: http://www.php.net/manual/de/language.r ... s.pass.php

Eine Direktlösung kann ich Dir nicht servieren, aber eine Vermutung: In dem Artikel der contenido-faq gibt es den Hinweis "Man muss nur alle Parameterübergaben per Referenz im Modulquelltext entfernen." Bei php.net hast Du dann "Zu beachten ist, dass kein Referenz-Zeichen beim Funktionsaufruf steht, nur in der Funktionsdefinition." Aus der Kombi von beidem würde ich jetzt draus schließen, das Referenzzeichen in der Funktionsdefinition muss raus - also das &.
Findet man in Deinem Code zwei Mal:

Code: Alles auswählen

...
function formularInterpretation(&$formular)
...
function formularFeldKorrekt(&$feld)
...
Evtl. ist das schon mal ein Ansatz, auch wenn die Fehlermeldung bei Dir vier Mal vorkommt. Kann natürlich sein, dass das Modul dann nicht mehr funktioniert - das Referenzieren hatte ja seinen Sinn - und Du da noch so einiges anderes umschreiben müsstest. Kann Dir da aber ab hier nicht mehr weiterhelfen da ich da auch nichts weiteres mehr weiß.

Ansonsten liest das hier vielleicht auch - der zur Zeit urlaubende :mrgreen: - Oldperl, der den FAQ-Eintrag geschrieben hat und kann noch einen Hinweis geben. Oder du greifst auf ein anderes Kontaktformular zurück, was noch nicht so viele Jahre auf dem Buckel hat.

Viel Erfolg! :)
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)

walsi24
Beiträge: 95
Registriert: Di 25. Okt 2005, 20:48
Kontaktdaten:

Re: w3c contact form

Beitrag von walsi24 » Fr 17. Aug 2012, 12:48

Hallo :D

Das ist wenn man 7 sachen miteinander machen will :)
Frauen können das wohl wirklich besser ;)

Also ich hab das versucht und bin sogar soweit gekommen, dass keine fehlermeldung mehr angezeigt wird aber das formular war dann im ar*** ;)

Ich suche jetzt ein neues kontakformular aber irgendwie überzeugen die im forum noch nicht ganz…

Danke dir aber vielmals!!!

McHubi
Beiträge: 1210
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: w3c contact form

Beitrag von McHubi » Fr 17. Aug 2012, 13:24

Du hast Post... :wink:
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: w3c contact form

Beitrag von Spider IT » Fr 17. Aug 2012, 13:56

walsi24 hat geschrieben:Das ist wenn man 7 sachen miteinander machen will :)
Frauen können das wohl wirklich besser ;)
Frauen können zwei Sachen gleichzeitig machen, Männer schaffen mehr ;)

Gruß
René

walsi24
Beiträge: 95
Registriert: Di 25. Okt 2005, 20:48
Kontaktdaten:

Re: w3c contact form

Beitrag von walsi24 » Fr 17. Aug 2012, 18:20

:D

SUPER! Vielen Dank McHubi!

Gesperrt