dedlfix: Sendmail Absender

Beitrag lesen

echo $begrüßung;

Wie wäre das Formular zu ergänzen, bzw. wie kann ich aus dem Array (?) der Formulardaten das Feld mit der E-Mail-Adresse auslesen und in die From-Zeile ausgeben.

Das kommt darauf an, welchen Wert das name-Attribut des Eingabefelds hat, in das der Absender eingetragen werden soll. Prinzipiell steht der Wert in $_POST['wert_des_name-attributes'].

Da dieser Wert allerdings von einem Client kommt und in einen Mail-Header eingebaut werden soll, ist hier unbedingt noch eine Prüfung vorzunehmen, damit dieses Mail-Formular nicht als Spam-Schleuder missbraucht werden kann. Wenn du in dem eingegebenen Wert ein Zeilenumbruchzeichen findest, dann ist das ein untrügliches Zeichen für einen Missbrauchsversuch durch einen Spammer.

if (isset($_POST['wert_des_name-attributes'])) {
  // Zeilenumbruchszeichen enthalten? Spamverdacht!
  if (strpos($_POST['wert_des_name-attributes'], "\r") !== false or
      strpos($_POST['wert_des_name-attributes'], "\n") !== false)
    die('Abbruch wegen Spamversuch.'); // [*]

$strEmpfaenger = $_POST['wert_des_name-attributes'];
} else {
  $strEmpfaenger = 'Default-Wert'; // oder Abbruch/Affenformularkorrektur wegen fehlenden Wertes
  // ggf. noch eine Prüfung auf zulässiges Format einbauen.
}

if($_POST)

Ob eine Variable gesetzt ist prüft man unter PHP mit der Funktion isset(). Die obige Form ist Javascript-Stil.

if (isset($_POST))

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

Ich finde ein

foreach ($_POST as $strName => $value)

übersichtlicher als dieses while-list-each-Konstrukt. Das ist PHP-3-Stil, weil es da noch kein foreach gab (ist aber kein Fehler, funktioniert auch so).

if(get_magic_quotes_gpc())

Wenn man Probleme mit eingeschaltetem Magic-Quotes-Feature erwartet dann ist es besser, sie gleich zu Anfang des Scripts und generell zu eleminieren, anstatt ihnen eine Individualbehandlung zukommen zu lassen, die man dann vielleicht im Eifer des Gefechts vergisst.

echo "$verabschiedung $name";