array in form-mailer auslesen und Bestätigungsmail senden

madesign

Grünschnabel
Hallo,

ich benutze ein Mailformular welches aber leider die Nachricht als array verschickt.
Was dann so aussieht:
Array
(
[Nombre] => Michael
[Mensaje] => Test
[Empresa] => Design
[Domicilio] =>
[Telefono] =>
[E-Mail] =>
)
Ich möchte es aber so haben:
Nombre: Michael
Mensaje Test
Empresa Design
usw.

Das script:
PHP:
<?php
define ('MAILTO', "meine@mail.com"); // Empfänger hier eintragen
define ('MAILFROM', "Interconsulting"); // ggfls. Absender hier eintragen
define ('CHARSET', "ISO-8859-15"); // Zeichenkodierung ggfls. anpassen
$Pflichtfelder = array('Nombre', 'Mensaje', 'Empresa', 'Domicilio', 'E-Mail'); // ggfls. weitere Pflichtfelder angeben


$AddHeader = 'Content-Type: text/plain; charset='.CHARSET;
if(MAILFROM) $AddHeader .= chr(13).chr(10).'From: '.MAILFROM;

if($Formular_abgeschickt = !empty($_POST)) {
  $Formular_leer = true; set_magic_quotes_runtime(0);
  $_POST = array_map('Formular_Daten', $_POST);
}
function Formular_Daten($val) {
  global $Formular_leer;
  if(is_array($val)) return array_map('Formular_Daten', $val);
  if(get_magic_quotes_gpc()) $val = stripslashes($val);
  if($val = trim($val)) $Formular_leer = false;
  return $val;
}

function Formular_Pflichtfelder() {
  global $Pflichtfelder;
  $Fehler = '';
  foreach ($Pflichtfelder as $Feld) {
    $key = str_replace(' ','_',$Feld);
    if(!(isset($_POST[$key]) && trim($_POST[$key]))) {
      if($Fehler) $Fehler .= '<br />';
      $Fehler .= 'Por favor escriba su "' . $Feld . '".';
    }
  }
  return $Fehler;
}

function Formular_neu($log='.htPOSTdata.txt') {
  if(file_exists($log) && is_readable($log)
   && file_get_contents($log) == print_r($_POST,true))
  return false;
  if($handle=@fopen($log, 'w')) {
    fwrite($handle, print_r($_POST,true)); fclose($handle);
  }
  return true;
}

function Formular_Check() {
  global $Formular_leer;
  if($Formular_leer) $Fehler = 'Por favor complete el formulario!';
  elseif(!$Fehler = Formular_Pflichtfelder()) {
    if(!Formular_neu()) $Fehler = 'Nachricht war bereits verschickt.';
  }
  return $Fehler;
}

function Formular_Eingabe($Feldname, $def='') {
  if(!empty($_POST[$Feldname])) echo htmlspecialchars($_POST[$Feldname]);
  else echo $def;
}
?>
Des weiteren würde ich gerne an den Sender (Ja ich weiss um die Nachteile) eine Bestätigungsmail schicken.

Vielen Dank für jede Hilfe, Michael
 
Zuletzt bearbeitet:
Mit [phpf]foreach[/phpf] über das Array iterieren, dabei Wert und Schlüssel mitnehmen und ausgeben...

PHP:
<?php
$array = array('foo' => 'bar', 'katz' => 'maus');

foreach($array as $key => $value)
{
  echo "{$key}: {$value}";
}
?>

Die E-Mailadresse des Senders hast du ja, wie man eine Mail abschickt, sollte dir dein Formmailer zeigen und dann musst du nur noch den Teil einmal kopieren und MAILTO durch die E-Mailadresse des Senders ersetzen... Und natürlich den Inhalt den du senden möchtest.
 
Hallo,

nicht so ganz.
Ich ab es jetzt so erstellt:

PHP:
$mail_content = array('Nombre' => 'Nombre', 'Empresa' => 'Empresa', 'Domicilio' => 'Domicilio', 'Telefono' => 'Telefono', 'E-Mail' => 'E-Mail', 'Mensaje' => 'Mensaje');

foreach($array as $key => $value)
{
echo "{$key}: {$value}";
}

Aber egal wo ich es einfüge ich bekomme eine Fehlermeldung wenn ich das Script teste.
Ich hab auch die einzelnen Felder mit Absatz formatiert aber die Fehlermeldung kommt schon beim Array.

Liebe Grüsse, Michael
 
Die Fehlermeldung an sich wäre dann noch interessant...
Und so wie du es aufgebaut hast, macht es leider keinen Sinn.
Du musst dich an das Array des Formulars wenden.
 
Hallo Felix,

irgendwie scheint ja das Array beim abschicken generiert zu werden. (Ich mein nicht das array der Pflichtfelder). Insofern weiss ich nicht wo ich ansetzen muss.
Die Fehlermeldung lautete Warning: Invalid argument supplied for foreach()

Saludos, Michael
 
Ich hab es jetzt mal so probiert:

PHP:
<?php
define ('MAILTO', "michael.anlauf@googlemail.com"); // Empfänger hier eintragen
define ('MAILFROM', "Interconsulting"); // ggfls. Absender hier eintragen
define ('CHARSET', "ISO-8859-15"); // Zeichenkodierung ggfls. anpassen
$Pflichtfelder = array('Nombre', 'Mensaje', 'Empresa', 'Domicilio', 'E-Mail'); // ggfls. weitere Pflichtfelder angeben

$AddHeader = 'Content-Type: text/plain; charset='.CHARSET;
if(MAILFROM) $AddHeader .= chr(13).chr(10).'From: '.MAILFROM;

$nachricht = ' 
    [Nombre] => '.$_POST['Nombre'].' 
				[Empesa] => '.$_POST['Empresa'].'
				[Domicilio] => '.$_POST['Domicilio'].' 
				[Telefono] => '.$_POST['Telefono'].' 
    [E-Mail] => '.$_POST['E-Mail'].' 
    [Nachricht] => '.$_POST['Nachricht'];
		
  $_POST = array_map('Formular_Daten', $_POST);

if($Formular_abgeschickt = !empty($_POST)) {
  $Formular_leer = true; set_magic_quotes_runtime(0);
		
}
function Formular_Daten($val) {
  global $Formular_leer;
  if(is_array($val)) return array_map('Formular_Daten', $val);
  if(get_magic_quotes_gpc()) $val = stripslashes($val);
  if($val = trim($val)) $Formular_leer = false;
  return $val;
}

function Formular_Pflichtfelder() {
  global $Pflichtfelder;
  $Fehler = '';
  foreach ($Pflichtfelder as $Feld) {
    $key = str_replace(' ','_',$Feld);
    if(!(isset($_POST[$key]) && trim($_POST[$key]))) {
      if($Fehler) $Fehler .= '<br />';
      $Fehler .= 'Por favor escriba su "' . $Feld . '".';
    }
  }
  return $Fehler;
}

function Formular_neu($log='.htPOSTdata.txt') {
  if(file_exists($log) && is_readable($log)
   && file_get_contents($log) == print_r($_POST,true))
  return false;
  if($handle=@fopen($log, 'w')) {
    fwrite($handle, print_r($_POST,true)); fclose($handle);
  }
  return true;
}

function Formular_Check() {
  global $Formular_leer;
  if($Formular_leer) $Fehler = 'Por favor complete el formulario!';
  elseif(!$Fehler = Formular_Pflichtfelder()) {
    if(!Formular_neu()) $Fehler = 'Nachricht war bereits verschickt.';
  }
  return $Fehler;
}

function Formular_Eingabe($Feldname, $def='') {
  if(!empty($_POST[$Feldname])) echo htmlspecialchars($_POST[$Feldname]);
  else echo $def;
}
?>

Formular...


<?php
if($Formular_abgeschickt) {
  if($Formular_Fehler = Formular_Check())
    echo '<p class="Meldung" id="Fehler">',$Formular_Fehler,'</p>';
  elseif(@mail(MAILTO, "Nachricht", $nachricht  , $AddHeader))
    echo '<p class="Meldung" id="OK">Su formulario ha sido enviado.</p>';
  else echo '<p class="Meldung" id="Fehler">Cuando se envía el mensaje ha producido un error!</p>';
}
?>

Aber jetzt kommt eine Fehlermeldung das das Formular nicht ausgefüllt ist auch wenn alle Felder ausgefüllt sind.
Was mach ich falsch?

Saludos, Michael
 
Zurück