Tom: php mailer in html einbinden

Beitrag lesen

Hello,

es hätte genügt, wenn Du diese beiden Abschnitte gepostet hättest.

Ich finde den "Formmailer grausam, will aber mal versuchen zu erläutern, was da geschieht.

<?php

Hier werden Variablen für das Script festgelegt; hast Du ja auch schon bemerkt

$strEmpfaenger = 'info@studiumwahl.de';
$strSubject    = 'Feedback';
$strReturnhtml = 'http://www.teamworxx.com/STUDYNET/PL/index-pl.html';
$strDelimiter  = ":\t";

Als Trennzeichen wird ein Tabulator benutzt

Das soll sicherlich bedeuten, dass dieser Mailer nur tätig wird, wenn das Formular per POST abgesendet wurde. Das ist aber leider nicht so. Da die Superglobalen Arrays $_POST und $_GET in JEDEM Script zur Verfügung stehen, egal wie es aufgerufen wurde, sorgt dieses Script für die "Selbstbespammung" mit leeren Mails...

if($_POST)

besser Daten und sSteuerdne Elemente getrennt halten und überhaupt

danach fragen, ob sie übermittelt wurden. Das geschieht dann wirklich

nur bei einem POST-Request

if (isset($_POST['btn']['absenden']) and isset($_POST['data']))

{

Eine leere Variable für die Aufnahme des Mailtextes wird vorbereitet

$strMailtext = "";

alle ÜBERMITTELTEN Wertepaare aus $_POST abholen

#  while(list($strName,$value) = each($_POST))

foreach($_POST['data'] as $key => $value)

{

der ansatzweise Versuch von Rekursion...

wenn $value selber ein Array ist

if(is_array($value))
  {

foreach($value as $subvalue)

{

die dann vermeintlich nicht mehr als Array vorliegenden Werte in

der Variable Mailtext sammeln

$strMailtext .= $key.$strDelimiter.$subvalue."\n";

}
  }
  else
  {

wenn es keine Subarray waren, auch in der Variable für den mailtext sammeln

$strMailtext .= $key.$strDelimiter.$value."\n";
  }
}

wenn der Mechanismus "Magic Quotes" (bitte im PHP-Manual nachlesen)

eingeschaltet ist, die Maskierungen wieder entfernen

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

Die enail absenden

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

?>

In Deinem Formular fehlen nun freilich die Eingabefelder, die im obigen Script so universell aufgelesen werden sollten

<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">

<p align="center"><input type="text" name="E-Mail" /></dd>

<p><input type="text" name="data[Anliegen]" size="45" /></p>

<p><textarea nane="data[Mitteilung]" rows="10" cols="45"></texarea></p>

<p align="center">

<input type="submit" name="btn[absenden]" value="Absenden" />

<input type="reset" value="Hoppla" />
            </p>
        </form>

Ich habe es nicht ausprobiert, aber so sollte es funktionieren.
Das Formular solltest Du noch um "Vornamwe, Name", "Telefon" und "email" ergänzen, denn sowas wird gerne vergessen anzugeben von den Schreibern.

Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)