Seite 1 von 1

w3c contact form

Verfasst: Mi 15. Aug 2012, 17:51
von walsi24
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!

Re: w3c contact form

Verfasst: Do 16. Aug 2012, 07:53
von McHubi
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

Re: w3c contact form

Verfasst: Do 16. Aug 2012, 08:07
von walsi24
Danke! Ich versuchs mal :)

Hat das mit der php version zu tun?

Re: w3c contact form

Verfasst: Do 16. Aug 2012, 08:30
von McHubi
Ö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:

Re: w3c contact form

Verfasst: Do 16. Aug 2012, 21:08
von walsi24
: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!

Re: w3c contact form

Verfasst: Do 16. Aug 2012, 21:55
von walsi24
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();
}

?>

Re: w3c contact form

Verfasst: Fr 17. Aug 2012, 07:45
von McHubi
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! :)

Re: w3c contact form

Verfasst: Fr 17. Aug 2012, 12:48
von walsi24
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!!!

Re: w3c contact form

Verfasst: Fr 17. Aug 2012, 13:24
von McHubi
Du hast Post... :wink:

Re: w3c contact form

Verfasst: Fr 17. Aug 2012, 13:56
von Spider IT
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é

Re: w3c contact form

Verfasst: Fr 17. Aug 2012, 18:20
von walsi24
:D

SUPER! Vielen Dank McHubi!