Mailform Array filtern

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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]

    Comment


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

      Comment


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

        Comment


        • #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;
          }

          ?> 

          Comment


          • #6
            Originally posted by AmicaNoctis View Post
            vor der while-Schleife
            Inzwischen hast du deinen Code ein wenig umgestellt, aber ich bin zu faul das nachzuvollziehen ...

            Comment


            • #7
              Originally posted by onemorenerd View Post
              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);
               } 

              Comment


              • #8
                Noch einmal:
                Originally posted by AmicaNoctis View Post
                $_POST['Hinweis'] schon vor der while-Schleife ... mit unset entfernen.

                Comment


                • #9
                  merci

                  Comment

                  Working...
                  X