Formmailer: direkt *.php i.O., include n.i.O.

derschotte

Grünschnabel
Hallole,

hab den Formmailer von Selfhtml der auch wunderbar funktioniert. Allerdings nur wenn ich die kontakt.php direkt aufrufe. Ruf ich den Mailer allerdings über include in meiner index.php (siehe Code) auf, bekomme ich keine Mail und keine Fehlermeldung. Wer kann mir da auf die Sprünge helfen?

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="format.css" type="text/css">
<link rel="stylesheet" href="menue.css" type="text/css">

<title>xxx</title>
</head>
<body>



<table align="center" width="100%"  cellspacing="0" cellpadding="0" border="0"  id="aussen" >
<tr>
    <td align="center"  width="100%" >
        <table   id="main_top"  cellspacing="0" cellpadding="0" border="0"   >
            <tr>
                <td valign="middle" id="top1"></td>
            </tr>
<tr>
<td valign="middle" id="top2">&nbsp;</td>
</tr>
<tr>
<td id="top3" >

&nbsp;


</td>
</tr>

<tr>
<td     class="buleiste" >
<!--menü-->
<table  align="center"    id="menu1"   border="0" cellpadding="0" cellspacing="0"    >
<tr>
    <td ><a href="index.php?i=1"  >Start</a></td><td><img src="images/trenn.jpg" width="2" height="56" border="0" alt=""></td>
    <td ><a href="index.php?i=2"  >Leistungen</a></td><td><img src="images/trenn.jpg" width="2" height="56" border="0" alt=""></td>
    <td ><a href="index.php?i=3"  >über Mich</a></td><td><img src="images/trenn.jpg" width="2" height="56" border="0" alt=""></td>
    <td ><a href="index.php?i=4"  >Erfolge</a></td><td class="menutrenn"><img src="images/trenn.jpg" width="2" height="56" border="0" alt=""></td>
    <td ><a href="index.php?i=6"  >Kontakt</a></td><td class="menutrenn"><img src="images/trenn.jpg" width="2" height="56" border="0" alt=""></td>
    <td ><a href="index.php?i=7"  >Partner</a></td><td class="menutrenn"><img src="images/trenn.jpg" width="2" height="56" border="0" alt=""></td>
</tr>
</table>
<!--ende menü-->
</td>
</tr>
<table >

<!--ende oben-->

<table   id="main"  align="center"       border="0" cellpadding="0" cellspacing="0"  >
    <tr>
        <td  valign="top"    align="center" >
        <table  align="center"  id="main2"    border="0" cellpadding="0" cellspacing="0">
<tr>

<td  id="inbox"  >

    <?php
        switch($_GET['i']){
        case 1: include ("content/start.php"); break;
        case 2: include ("content/test.php"); break;
        case 3: include ("content/uebermich.php"); break;
        case 4: include ("content/erfolge.php"); break;
        case 5: include ("content/check.php"); break;        
        case 6: include ("content/kontakt.php"); break;
        case 7: include ("content/partner.php"); break;            
        case 8: include ("content/impressum.php"); break;            
        default: include ("content/start.php");
        }            
    ?>

    </table>
</td>
</tr>


</table>
    <div id="footer">
        <b><a href="index.php?i=8"  >Impressum</</b>
    </div>


</body>
</html>
Danke für Tipps
 
Hi derschotte,
was steht denn in der kontakt.php drin? Möglicherweise ist es ein Pfadproblem, da du den Basepfad verwenden musst, wenn inkludiert wird.
 
Danke für den Hinweis! Kannst du das vll konretisieren?

Inhalt der includierten Datei in für mich abgeänderten Einstellungen:
PHP:
<?php

### Konfiguration ###

# Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen!

# An welche Adresse sollen die Mails gesendet werden?
$strEmpfaenger = 'IhrName@provider.xy';

# Welche Adresse soll als Absender angegeben werden?
# (Manche Hoster lassen diese Angabe vor dem Versenden der Mail ueberschreiben)
$strFrom       = '"Formmailer" <IhrAndererName@provider.xy>';

# Welchen Betreff sollen die Mails erhalten?
$strSubject    = 'Feedback';

# Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden?
# Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben!
$strReturnhtml = 'http://www.provider.xy/IhrName/IhreSeite.htm';

# Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen?
$strDelimiter  = ":\t";

### Ende Konfiguration ###

if($_POST)
{
 $strMailtext = "";

 while(list($strName,$value) = each($_POST))
 {
  if(is_array($value))
  {
   foreach($value as $value_array)
   {
    $strMailtext .= $strName.$strDelimiter.$value_array."\n";
   }
  }
  else
  {
   $strMailtext .= $strName.$strDelimiter.$value."\n";
  }
 }

 if(get_magic_quotes_gpc())
 {
  $strMailtext = stripslashes($strMailtext);
 }

 mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
  or die("Die Mail konnte nicht versendet werden.");
 header("Location: $strReturnhtml");
 exit;
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
    <head>
        <title>Einfacher PHP-Formmailer</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>
        <h1>Beispielformular</h1>
        <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">
            <!-- Hier die eigentlichen Formularfelder eintragen. Die folgenden sind Beispielangaben. -->
            <dl>
                <dt>Ihr Name:</dt>
                <dd><input type="text" name="Versender" /></dd>
                <dt>Ihre E-Mail:</dt>
                <dd><input type="text" name="E-Mail" /></dd>
                <dt>Sie k&ouml;nnen:</dt>
                <dd><input type="checkbox" name="kannwas[]" value="HTML" />HTML <input type="checkbox" name="kannwas[]" value="PHP" />PHP</dd>
                <dt>Sie sind:</dt>
                <dd><input type="radio" name="sexus" value="M" />Mann <input type="radio" name="sexus" value="Frau" />Frau</dd>
                <dt>Sie m&ouml;gen:</dt>
                <dd><select name="Browser"><option value="Opera">Opera</option><option value="Mozilla">Mozilla</option></select></dd>
                <dt>Bemerkungen:</dt>
                <dd><textarea name="Bemerkungen" rows="3" cols="20">Bemerkungen</textarea></dd>
            </dl>
            <!-- Ende der Beispielangaben -->
            <p>
            <input type="submit" value="Senden" />
            <input type="reset" value="Zurücksetzen" />
            </p>
        </form>
    </body>
</html>

Danke
 
Hmm, nach einem schnellen Überfliegen kann es bspw. an
Code:
<?php print $_SERVER['PHP_SELF']; ?>
liegen. Du kannst diesen Teil ja zum Test einfach mal direkt durch kontakt.php ersetzen. Dann müsste es funktionieren. Das Problem ist einfach, dass das Formular an index.php gesendet wird und in der index.php ja nicht steht, was nun gemacht werden soll.

Du kannst es ja bspw. an index.php?step=senden oder so schicken und in die index.php machst du dann ne Abfrage nach $_GET["step"] und wenn diese Variable senden ist kommt eben der senden Teil.


Viel Erfolg und einen schönen Abend.
 
Zurück