tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
601
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    madesign madesign ist offline Rookie
    Registriert seit
    Jun 2008
    Beiträge
    9
    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-Code:
    <?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 trueset_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($handleprint_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
    Geändert von madesign (10.09.10 um 13:52 Uhr)
     

  2. #2
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Mit foreach() über das Array iterieren, dabei Wert und Schlüssel mitnehmen und ausgeben...

    Code php:
    1
    2
    3
    4
    5
    6
    7
    8
    
    <?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.
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  3. #3
    madesign madesign ist offline Rookie
    Registriert seit
    Jun 2008
    Beiträge
    9
    Hello Felix,

    vielen, vielen Dank für die Anleitung. Ich denke damit bekomm ich es hin.

    Saludos, Michael
     

  4. #4
    madesign madesign ist offline Rookie
    Registriert seit
    Jun 2008
    Beiträge
    9
    Hallo,

    nicht so ganz.
    Ich ab es jetzt so erstellt:

    PHP-Code:
    $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
     

  5. #5
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    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.
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  6. #6
    madesign madesign ist offline Rookie
    Registriert seit
    Jun 2008
    Beiträge
    9
    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
     

  7. #7
    madesign madesign ist offline Rookie
    Registriert seit
    Jun 2008
    Beiträge
    9
    Ich hab es jetzt mal so probiert:

    PHP-Code:
    <?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 trueset_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($handleprint_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
     

Ähnliche Themen

  1. Form Mailer unschön
    Von xkoy im Forum CSS
    Antworten: 13
    Letzter Beitrag: 28.11.08, 16:33
  2. bestätigungsmail senden
    Von creativeheadz im Forum PHP
    Antworten: 7
    Letzter Beitrag: 02.06.05, 00:15
  3. Form Mailer
    Von mtk-flo im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 1
    Letzter Beitrag: 02.02.05, 09:21
  4. Flash und PHP Form-Mailer
    Von Heiko im Forum Flash Plattform
    Antworten: 7
    Letzter Beitrag: 16.09.04, 22:18
  5. Form Mailer mit cgi?
    Von CantNo im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 3
    Letzter Beitrag: 30.11.02, 18:52