E-Mail Formular

Gesperrt
Peer
Beiträge: 309
Registriert: Fr 9. Sep 2005, 17:22
Kontaktdaten:

E-Mail Formular

Beitrag von Peer » Mo 21. Jul 2008, 21:33

Hallo,

ich benutze ganz häufig ein bestimmtes E-Mail Formular (Quelltext unten).
Mein Problem: Ich verwende nun Version 4.8.6 und mit dem Mod Rewrite funktioniert diese Modul leider nicht.

Es versendet keine Mails mehr und zeigt auch nicht mehr an welche Nachricht verschickt wurde. Es springt auf die Fehlerseite.

Kann mir da jemand helfen??

imput

Code: Alles auswählen

/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname      :  Mailkontakt
* Author         :  agon
* Copyright      :  Contenido - four for business
* Created        :  05-11-2003
* Modified       :  05-11-2003
* Modified again :  Feb. 29th 2004 by Lars D. Forseth <lars@forseth.de>
************************************************/



$db = new DB_contenido;
$db->query("LOCK TABLES mailkontakt WRITE"); // LOCK TABLES


/* FILTER GIVEN DATA */
if (!(eregi("([0-9]{1,11})",$mailkontaktid))) $mailkontaktid = 0;

$mailkontakt_name = str_replace (";","",$mailkontakt_name);
$mailkontakt_name = str_replace ("--","",$mailkontakt_name);
$mailkontakt_name = str_replace ("'","",$mailkontakt_name);
$mailkontakt_name = str_replace ("\"","",$mailkontakt_name);
$mailkontakt_name = htmlentities($mailkontakt_name);

$new_mailkontakt_name = str_replace (";","",$new_mailkontakt_name);
$new_mailkontakt_name = str_replace ("--","",$new_mailkontakt_name);
$new_mailkontakt_name = str_replace ("'","",$new_mailkontakt_name);
$new_mailkontakt_name = str_replace ("\"","",$new_mailkontakt_name);
$new_mailkontakt_name = htmlentities($new_mailkontakt_name);

$mailkontakt_email = str_replace (";","",$mailkontakt_email);
$mailkontakt_email = str_replace ("--","",$mailkontakt_email);
$mailkontakt_email = str_replace ("'","",$mailkontakt_email);
$mailkontakt_email = str_replace ("\"","",$mailkontakt_email);
$mailkontakt_email = htmlentities($mailkontakt_email);

$new_mailkontakt_email = str_replace (";","",$new_mailkontakt_email);
$new_mailkontakt_email = str_replace ("--","",$new_mailkontakt_email);
$new_mailkontakt_email = str_replace ("'","",$new_mailkontakt_email);
$new_mailkontakt_email = str_replace ("\"","",$new_mailkontakt_email);
$new_mailkontakt_email = htmlentities($new_mailkontakt_email);

if (($mailkontakt_sil!="Y") and ($mailkontakt_sil!="N")) $mailkontakt_sil!="N";
if (($mailkontakt_spd!="Y") and ($mailkontakt_spd!="N")) $mailkontakt_spd!="N";
if (($new_mailkontakt_sil!="Y") and ($new_mailkontakt_sil!="N")) $new_mailkontakt_sil!="N";
if (($new_mailkontakt_spd!="Y") and ($new_mailkontakt_spd!="N")) $new_mailkontakt_spd!="N";



if (($mailkontaktid>0) and $mailkontakt_name and $mailkontakt_email
    and $mailkontakt_sil and $mailkontakt_spd and ($do=="edit")) {
  if ($save=="yes") {
    $sql = "UPDATE mailkontakt SET mailkontakt_name=\"$mailkontakt_name\", ".
           "mailkontakt_email=\"$mailkontakt_email\", mailkontakt_sil=\"$mailkontakt_sil\", ".
           "mailkontakt_spd=\"$mailkontakt_spd\" WHERE mailkontaktid=$mailkontaktid";
  } // end if
  if ($del_user=="yes") {
    $sql = "DELETE FROM mailkontakt WHERE mailkontaktid=$mailkontaktid";
    $view_mailkontaktid = 0;
  } // end if
  $db->query($sql);
} // end if

if ($new_mailkontakt_name and $new_mailkontakt_email and $new_mailkontakt_sil
    and $new_mailkontakt_spd and ($do=="new")) {
  $sql = "INSERT INTO mailkontakt VALUES('', \"$new_mailkontakt_name\", ".
           "\"$new_mailkontakt_email\", \"$new_mailkontakt_sil\", \"$new_mailkontakt_spd\")";
  $db->query($sql);
  $view_mailkontaktid = 0;
} // end if


$sql = "SELECT * FROM mailkontakt ORDER BY mailkontaktid";
$db->query($sql);
$db->next_record();
$nr = $db->num_rows();

if (($nr>=1) and ($view_mailkontaktid<1)) {
  $view_mailkontaktid = $db->f("mailkontaktid");
} // end if
if ($nr < 1) $display = " display:none;";


echo "
 <!-- start Mailkontakt-backend -->

 <table width=\"600\" cellspacing=\"0\" cellpadding=\"3\" border=\"0\" style=\"font-size: 10pt;\">
  <tr valign=\"top\">
   <td>
    <input type=\"radio\" name=\"do\" value=\"edit\">
    &nbsp;<b>Bereits vorhandenen Empfänger einsehen und dann evtl. bearbeiten oder l&ouml;schen:</b>
   </td>
  </tr>
  <tr>
   <td align=\"center\">
    <select name=\"view_mailkontaktid\" style=\"width: 400px;\">";


for ($i=0; $i<$nr; $i++) {
  if (($db->f("mailkontaktid")) == $view_mailkontaktid) {
    $mailkontakt_name = $db->f("mailkontakt_name");
    $mailkontakt_email = $db->f("mailkontakt_email");
    $mailkontakt_sil = $db->f("mailkontakt_sil");
    $mailkontakt_spd = $db->f("mailkontakt_spd");
    $a = " selected";
  } else {$a = "";}
  echo "
     <option value=\"".($db->f("mailkontaktid"))."\"".$a.">&nbsp;".($db->f("mailkontakt_name")).
     "&nbsp;&nbsp;<".($db->f("mailkontakt_email")).">&nbsp;";
  $db->next_record();
} // end for


echo "
    </select>
   </td>
  </tr>
  <tr><td>&nbsp;</td></tr>
  <tr><td align\"center\">
   <table align=\"center\" width=\"600\" border=\"0\" cellpsacing=\"0\" cellpadding=\"0\"
    style=\"font-size: 10pt; border: 1px;border-color: #000000;
    border-style: solid; background-color: #EFEFEF;".$display."\">
    <tr>
     <td width=\"20\"><b>ID</b></td>
     <td width=\"245\"><b>Empf&auml;nger-Name</b></td>
     <td width=\"245\"><b>Empf&auml;nger-Email</b></td>
     <td width=\"45\"><b>sil</b></td>
     <td width=\"45\"><b>spd</b></td>
    </tr>";


echo "
    <tr>
     <td>
      <input type=\"hidden\" name=\"mailkontaktid\" value=\"".$view_mailkontaktid."\">".$view_mailkontaktid."
     </td>
     <td><input type=\"\" name=\"mailkontakt_name\" value=\"".$mailkontakt_name."\" size=\"32\"></td>
     <td><input type=\"\" name=\"mailkontakt_email\" value=\"".$mailkontakt_email."\" size=\"32\"></td>
     <td align=\"center\">
      <select name=\"mailkontakt_sil\">
       <option value=\"Y\"";
if ($mailkontakt_sil == "Y") echo " selected";
echo ">Y
       <option value=\"N\"";
if ($mailkontakt_sil == "N") echo " selected";
echo ">N
      </select>
     </td>
     <td align=\"center\">
      <select name=\"mailkontakt_spd\">
       <option value=\"Y\"";
if ($mailkontakt_spd == "Y") echo " selected";
echo ">Y
       <option value=\"N\"";
if ($mailkontakt_spd == "N") echo " selected";
echo ">N
      </select>
     </td>
    </tr>";


echo "
    <tr><td colspan=\"5\">&nbsp;</td></tr>
    <tr>
     <td>&nbsp;</td>
     <td align=\"left\">
      <input type=\"checkbox\" name=\"del_user\" value=\"yes\">
      !* Empf&auml;nger l&ouml;schen *!
     </td>
     <td colspan=\"3\" align=\"right\">
      <input type=\"checkbox\" name=\"save\" value=\"yes\">
      &Auml;nderungen&nbsp;&uuml;bernehmen.
     </td>
    </tr>
    <tr><td colspan=\"5\">&nbsp;</td></tr>
   </table>
  </tr>
  <tr><td>&nbsp;</td></tr>
  <tr><td>&nbsp;</td></tr>
  <tr valign=\"top\">
   <td>
    <input type=\"radio\" name=\"do\" value=\"new\">
    &nbsp;<b>Einen neuen Empfänger anlegen:</b>
   </td>
  </tr>
";




echo "
<tr><td align\"center\">
   <table align=\"center\" width=\"600\" border=\"0\" cellpsacing=\"0\" cellpadding=\"0\"
    style=\"font-size: 10pt; border: 1px;border-color: #000000;
    border-style: solid; background-color: #EFEFEF;\">
    <tr>
     <td width=\"20\"><b>ID</b></td>
     <td width=\"245\"><b>Empf&auml;nger-Name</b></td>
     <td width=\"245\"><b>Empf&auml;nger-Email</b></td>
     <td width=\"45\"><b>sil</b></td>
     <td width=\"45\"><b>spd</b></td>
    </tr>";


echo "
    <tr>
     <td>N</td>
     <td><input type=\"\" name=\"new_mailkontakt_name\" size=\"32\"></td>
     <td><input type=\"\" name=\"new_mailkontakt_email\" size=\"32\"></td>
     <td align=\"center\">
      <select name=\"new_mailkontakt_sil\">
       <option value=\"Y\">Y
       <option value=\"N\">N
      </select>
     </td>
     <td align=\"center\">
      <select name=\"new_mailkontakt_spd\">
       <option value=\"Y\">Y
       <option value=\"N\">N
      </select>
     </td>
    </tr>";


echo "
    <tr><td colspan=\"5\">&nbsp;</td></tr>
   </table>
  </tr>
  <tr><td>&nbsp;</td></tr>
  <tr><td>&nbsp;</td></tr>";


echo "
  <tr valign=\"top\">
   <td><pre>
   <b><u>
 Legende:</u></b><br>
  &raquo; sil = \"show in list\",
    bedeutet dass der Empfänger in dem Drop-Down-Menü für den Endnutzer erscheint.
    Mögliche Werte sind \"Y\" für \"YES\" und \"N\" für \"NO\".<br>
  &raquo; spd = \"send per default\",
    bedeutet dass diesem Empfänger auf jeden Fall eine Kopie der Email zugeht,
    falls er nicht in der Drop-Down-Liste angezeigt wird.
    Die möglichen Werte entsprechen denen von \"sil\".<br>
   </pre></td>
  </tr>
 </table>

 <!-- end Mailkontakt-backend -->

 ";

$db->query("UNLOCK TABLES"); // UNLOCK TABLES


Output

Code: Alles auswählen

<?php

/*******************************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname      :  Mailkontakt
* Author         :  agon
* Copyright      :  Contenido - four for business
* Created        :  05-11-2003
* Modified again :  July 25th 2004 by Lars D. Forseth <lars@forseth.de>
* Modified again :  June 18th 2005 by Lars D. Forseth <lars.@forseth.de>
********************************************************/


/* domain */
$domain = "";
$default_empfaenger = "Spurensuche-OWL";
/* end "domain" */


echo "
<!-- start Mailkontakt output -->
";
$db = new DB_Contenido;


/* data was given */
if (($mail == "yes") and (strlen($from_name)>1) and
    (strlen($from_mail)>5) and (strlen($mailkontaktid)>0) and (strlen($comment)>2)) {


  // if invalid mailkontaktid given
  if (!(eregi("([0-9]{1,11})",$mailkontaktid))) {
    $error = "
         <!-- error: invalid mailkontaktid given -->
         <br><br><br>
         <center><p><font color=\"darkred\"><b>
         Diesen Empf&auml;nger gibt es nicht (mehr)!
         <br>
         Versuch' es sp&auml;ter bitte nochmal.
         </b></font></p></center>
         <br><br><br>
         ";
  } // end if invalid mailkontaktid given



  // filter $from_name:
  $end = (int) strlen($from_name);
  $from_name_new = "";
  for ($i=0; $i<$end; $i++) {
    if (eregi("^[a-zäöüÄÖÜß0-9&_ -]$",$from_name[$i]))  $from_name_new .= $from_name[$i];
  } // end for
  $from_name = $from_name_new;
  // end "filter $from_name"

        
  $sql = "SELECT * FROM mailkontakt WHERE mailkontaktid=$mailkontaktid ".
         "OR mailkontakt_spd=\"Y\" ORDER BY mailkontaktid";
  $db->query($sql);
  $db->next_record();
  $nr = $db->num_rows();

  $mailto = "";
  $spd = "";
  $mailkontakt_name = "";
  $header="From: ".$from_name." <".$from_mail.">";

  // no data in DB
  if ($nr < 1) {
    $error = "
         <!-- error: no data in DB -->
         <br><br><br>
         <center><p><font color=\"darkred\"><b>
         Diesen Empf&auml;nger gibt es nicht (mehr)!
         <br>
         Versuch' es sp&auml;ter bitte nochmal.
         </b></font></p></center>
         <br><br><br>
         ";
  } // end no data in DB

  // get recipients from DB
  for ($i=0; $i<$nr; $i++) {
    if ($mailkontaktid == ($db->f("mailkontaktid"))) {
      $mailto = ($db->f("mailkontakt_email"));
      $mailkontakt_name = $db->f("mailkontakt_name");
    } // end if
    if (!($mailkontaktid == ($db->f("mailkontaktid"))) and (($db->f("mailkontakt_spd"))=="Y")) {
      $spd .= ",".($db->f("mailkontakt_email"));
    } // end if
    $db->next_record();
  } // end "get recipients from DB"

  if (strlen($mailto) < 5) {
    $tmp = explode(",",$spd,2);
    $mailto = $tmp[1];
  } else {$mailto .= $spd;}

  // check if email-adress from user is correct
  $length = (int) (strlen($from_mail));
  if ($length > 100 or $length < 5) {$length_err = 1;}
  else {$length_err = 0;}
  $valid = (eregi ("^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]+$",$from_mail));

  if (strlen($error)>3) {echo $error;}

  else { // no error occured
    if (!($valid==1) or ($length_err==1)) {
      $links        = explode('?',$PHP_SELF);
      $link         = $links[0];
      $link         = $link."?idcat=".$idcat; // back-link
      echo "
<br><br><br>
<font color=\"red\"><b>
 <u>ACHTUNG:</u><br>
 Die angegebene Email-Adresse ist ung&uuml;ltig!<br>
 Bitte&nbsp;&uuml;berpr&uuml;fen...<br><br>
 <center>
  <form action=\"$link\" method=\"post\">
   <input type=\"hidden\" name=\"mailkontaktid\" value=\"$mailkontaktid\">
   <input type=\"hidden\" name=\"from_name\" value=\"$from_name\">
   <input type=\"hidden\" name=\"from_mail\" value=\"$from_mail\">
   <input type=\"hidden\" name=\"comment\" value=\"$comment\">
   <input type=\"submit\" value=\"&laquo;&nbsp;zur&uuml;ck\">
  </form>
 </center>
</b></font>
<br><br>";
    } // end check user email-address
    else {
      /* for security reasons in case of spam and the kind */
      $now = date("l dS of F Y \@ G:i:s"); // Example: Wednesday 15th of January 2004 15:51:38
      $ip = getenv("REMOTE_ADDR");
      $comment .= "\n\n\n\n";

      /* finally mail message */
      mail($mailto,"Kontaktanfrage über Homepage ",$comment,$header);

      // give confirmation to user:
      if (strlen($mailkontakt_name) < 1) $mailkontakt_name = $default_empfaenger;
      echo "
<br><br><br><br>
<font color=\"red\"><i>Folgende Nachricht ging eben raus:</i></font>
<br><br><br>
<table border=\"0\" align=\"center\" cellpadding=\"1\" cellspacing=\"0\">
 <tr>
  <td class=\"text\"><p><b>Absender:</b></p></td>
  <td>&nbsp;&nbsp;</td>
  <td width=\"90%\" class=\"text\"><p>";
      echo $from_name." <".$from_mail.">";
      echo "</p></td>
 </tr>
 <tr>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
 </tr>
 <tr>
  <td class=\"text\"><p><b>Empf&auml;nger:</b></p></td>
  <td>&nbsp;&nbsp;</td>
  <td width=\"90%\" class=\"text\"><p>".$mailkontakt_name."</p></td>
 </tr>
 <tr>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
 </tr>
 <tr>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
 </tr>
 <tr valign=\"top\">
  <td class=\"text\"><p><b>Ihre Nachricht:</b></p></td>
  <td>&nbsp;&nbsp;</td>
  <td class=\"text\"><p>".nl2br($comment)."</p></td>
 </tr>
</table>
";
    } // end else ("user's email-addres is ok")
  } // end else ("no error occured")


} // end "data was given"








/* no data was given (yet), so give back form */
else {

  $db1 = new DB_Contenido;
  $sql1 = "SELECT * FROM mailkontakt WHERE mailkontakt_sil=\"Y\" ORDER BY mailkontakt_name";
  $db1->query($sql1);
  $db1->next_record();
  $nr1 = $db1->num_rows();
  if ($nr1 > 0) $show_list = "yes";


  $sql = "SELECT * FROM mailkontakt ORDER BY mailkontaktid";
  $db->query($sql);
  $db->next_record();
  $nr = $db->num_rows();

  /* there are recipients in DB */
  if ($nr > 0) {

    echo "";

    // not all fields were filled during last submission!
    if ($mail == "yes") {
      echo "
  <font class=\"text\"><font color=\"red\">
   <u>ACHTUNG:</u>&nbsp;<i>Bitte alle Felder <b>korrekt</b> ausf&uuml;llen!</i>
  </font></font><br><br>";
    } // end if "not all fields filled"

    echo "
  <form name=\"mail\" action=\"".$auth->url()."\" method=\"post\" class=\"text\">
  <br><br><table border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">
  ";

    /* if there are any recipients with sil=="Y" */
    if ($show_list == "yes") {
      echo"
   <tr>
    <td  valign=\"middle\" class=\"text\" width=\"130px\"><p><b>Empf&auml;nger:</b></p></td>
    <td>&nbsp;</td>";

      echo "
    <td>
     <select name=\"mailkontaktid\" style=\"width: 251px;\">";

      for($x=0; $x<$nr1; $x++){
        echo "
      <option value=\"".($db1->f("mailkontaktid"))."\"";
        if (($db1->f("mailkontaktid")) == $mailkontaktid) echo " selected";
        echo ">".($db1->f("mailkontakt_name"));
        $db1->next_record();
      } // end for
      echo "
     </select>
    </td>
    ";
      // end drop-down-menu


      echo "
    <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
   </tr>";
   } // end if($show_list == "yes")
   else {echo "<tr><td colspan=\"4\"><input type=\"hidden\" name=\"mailkontaktid\" value=\"0\"</td></tr>";}

   echo "
   <tr>
    <td class=\"text\" valign=\"middle\" width=\"130px\"><p><!--Dein--><b>Ihr Name:</b></p></td>
    <td>&nbsp;</td>
    <td><input type=\"text\" name=\"from_name\" size=\"38\" value=\"".$from_name."\" maxlength=\"100\"></td>
    <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
   </tr>
   <tr>
    <td class=\"text\" valign=\"middle\"><p><!--Deine--><b>Ihre E-Mail:</b></p></td>
    <td>&nbsp;</td>
    <td><p><input type=\"text\" name=\"from_mail\" size=\"38\" value=\"".$from_mail."\" maxlength=\"100\"></p></td>
    <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
   </tr>
   <tr>
    <td class=\"text\" valign=\"top\"><p><b><!--Deine--> Nachricht:</b></p></td>
    <td>&nbsp;</td>
    <td><p>
     <text"."area cols=\"45\" rows=\"10\" name=\"comment\" style=\"width:250px\" wrap=\"verdana\">".
      $comment.
    "</text"."area></p></td>
    <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
   </tr>
   <tr>
    <td colspan=\"4\" align=\"center\">
     <br>
     <input type=\"hidden\" name=\"mail\" value=\"yes\">
     <input type=\"submit\" value=\"Mail senden &raquo;\">
    </td>
   </tr>
  </table>
 </fo"; echo "rm>
 <br><br>";

  } // end "there are recipients in DB"


  /* there are no recipients in DB */
  else {
    echo "
    <p><br><br><br>
    <center><font color=\"darkred\"><b>
     Momentan sind leider keine Empf&auml;nger in der Datenbank eingetragen,
     bitte versuch' es sp&auml;ter nocheinmal.
    </b></font></center>
    <br><br><br></p>
    ";
  } // end "there are no recipients in DB"



} // end "no data was given (yet)"

echo "
<!-- end Mailkontakt output -->
";

?>


xmurrix
Beiträge: 3147
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: E-Mail Formular

Beitrag von xmurrix » Mi 13. Aug 2008, 22:19

Hallo Peer,

das Modul verwendet zum Setzen des action-Attributes des Formulares den Code "$auth->url()".

$auth->url() liefert den Pfad zum aktuell ausgeführten Script, das nicht front_content.php ist, das wird die Ursache für dein Problem sein.

Ich war der Meinung, dies behoben zu haben, anscheinend ist da noch Nachbesserung im Plugin angesagt.

Als Vorschlag kann ich dir als Workaround folgendes geben:

Ersetze in der Modulausgabe die Zeile 224

Code: Alles auswählen

  <form name=\"mail\" action=\"".$auth->url()."\" method=\"post\" class=\"text\"> 
gegen

Code: Alles auswählen

  <form name=\"mail\" action=\"front_content.php?idart=".$idart."\" method=\"post\" class=\"text\"> 
Das sollte das Problem vorerst beheben.

Gruß
xmurrix

Peer
Beiträge: 309
Registriert: Fr 9. Sep 2005, 17:22
Kontaktdaten:

Beitrag von Peer » Do 14. Aug 2008, 23:59

Hallo,

vielen Dank

musicmaker3112
Beiträge: 9
Registriert: Mi 10. Sep 2008, 08:32
Kontaktdaten:

Beitrag von musicmaker3112 » Fr 21. Nov 2008, 10:08

hallo,

ich habe das Modul eingebunden, kann aber in der Konfiguration keinen neuen Kontakt abspeichern. Die eingegebene Email und der Name werden nicht übernommen.

Könnt Ihr mir helfen ?

pommes
Beiträge: 60
Registriert: So 21. Mai 2006, 19:05
Kontaktdaten:

Re: E-Mail Formular

Beitrag von pommes » Fr 29. Mai 2009, 10:50

Selbes Problem mit Version 4.8.11

Gesperrt