Mailform Array filtern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Mailform Array filtern

    Hallo zusammen,

    diese Forum ist eine klasse Quelle, um Probleme zu lösen und Inspiration zu finden. Normalerweise reicht die Forumsrecherche immer um eine Lösung zu finden. Diesmal komm ich aber einfach nicht klar.

    Ich habe eine "stinknormale" PHP-Form, die eine Mail verschickt. Ich möchte, dass ein Feld des Formulars im Betreff der E-Mail abgebildet wird (bereits gelöst: $strSubject = $_POST['Hinweis'] ABER dieser Wert soll dann nicht mehr im Text der E-Mail erscheinen.

    Ich hab bereits versucht, dass array zu filtern, unset.... hat nicht funktioniert.

    Eine Idee?

    Besten Dank

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

     }
     if(
    get_magic_quotes_gpc())
     {
      
    $strMailtext stripslashes($strMailtext);
     }
     
    $strSubject $_POST['Hinweis'];

    $header "MIME-Version: 1.0\r\n";
    $header .= "Content-type: text/plain; charset=utf-8\r\n";
    $header .= "Content-Transfer-Encoding: 8bit\r\n";

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


  • #2
    Hallo,

    eigentlich ganz einfach: $_POST['Hinweis'] schon vor der while-Schleife (die übrigens imho mit foreach schöner aussehen würde) abrufen und sichern und dann mit unset entfernen. Wenn du daraufhin in die Schleife einsteigst, ist es schon nicht mehr da und wird folglich auch nicht in den Nachrichtentext übernommen.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Theoretisch klar, wann/wie muss ich denn den unset-befehl anwenden? (vor Array/im Array?)

      Kommentar


      • #4
        PHP-Code:
        unset($array['key']); 

        Kommentar


        • #5
          Ich müsste jetzt vermutlich 3 Stunden hin und her probieren, weshalb ich mir einfach mal die Blöse gebe und nochmal frage:

          Wo und wie rein muss das unset?

          PHP-Code:
          if($_POST)
          {
           
          $strMailtext "";
           
          $strSubject $_POST['Hinweis'];
           while(list(
          $strName,$value) = each($_POST))
           {
            if(
          is_array($value))
            {
             -----> 
          unset($value[3]); ?
             -----> 
          unset($value['Hinweis']); ?
             foreach(
          $value as $value_array)
             {
             
          $strMailtext .= $strName.$strDelimiter.$value_array."\n\r";
             }
            }
            else
            {
             
          $strMailtext .= $strName.$strDelimiter.$value."\n\r";
            }

           }
           if(
          get_magic_quotes_gpc())
           {
            
          $strMailtext stripslashes($strMailtext);
           }
           
          $header "MIME-Version: 1.0\r\n";
          $header .= "Content-type: text/plain; charset=utf-8\r\n";
          $header .= "Content-Transfer-Encoding: 8bit\r\n";

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

          ?> 

          Kommentar


          • #6
            Zitat von AmicaNoctis Beitrag anzeigen
            vor der while-Schleife
            Inzwischen hast du deinen Code ein wenig umgestellt, aber ich bin zu faul das nachzuvollziehen ...

            Kommentar


            • #7
              Zitat von onemorenerd Beitrag anzeigen
              Inzwischen hast du deinen Code ein wenig umgestellt, aber ich bin zu faul das nachzuvollziehen ...
              Hi, es hat sich kaum etwas geändert. Ich habe lediglich die unset-befehle reingemacht und Zeile 4 das $_POST von unten nach oben geholt.

              Danke für die Hilfe!

              PHP-Code:
              if($_POST)
              {
               
              $strMailtext "";
               
              $strSubject $_POST['Hinweis'];
               while(list(
              $strName,$value) = each($_POST))
               {
                if(
              is_array($value))
                {

                 -----> 
              unset($value[3]); ?
                 -----> 
              unset($value['Hinweis']); ?

                 foreach(
              $value as $value_array)
                 {
                 
              $strMailtext .= $strName.$strDelimiter.$value_array."\n\r";
                 }
                }
                else
                {
                 
              $strMailtext .= $strName.$strDelimiter.$value."\n\r";
                }

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

              Kommentar


              • #8
                Noch einmal:
                Zitat von AmicaNoctis Beitrag anzeigen
                $_POST['Hinweis'] schon vor der while-Schleife ... mit unset entfernen.

                Kommentar


                • #9
                  merci

                  Kommentar

                  Lädt...
                  X