slimsmearlapp: Generierte Inputfelder ausgeben

Hallo,

ich habe mit Jquery neue Inputfelder generiert, die haben einen fortlaufenden Namen, durch einen counter. Das Skript habe ich, was ich fairerweise dazusagen möchte, nicht selbst geschreiben, da ich Javascript/JQuery noch lerne. Ich habe es hier:

http://www.mkyong.com/jquery/how-to-add-remove-textbox-dynamically-with-jquery/

Die neu generierten Inputfelder möchte ich mit PHP einfach über echo ausgeben. Wie mache ich das? Ich bin mir nicht sicher wie man die fortlaufenden Namen anspricht.

Den Code habe ich hier: http://jsfiddle.net/bv4ba/

allerdings funktioniert das ganze da nicht, wobei es in meinem browser funktioniert. ich hoffe es bringt trotzdem etwas.

Danke im vorraus,
Felix Schwarzer (slimsmearlapp)

  1. Hi,

    Die neu generierten Inputfelder möchte ich mit PHP einfach über echo ausgeben. Wie mache ich das? Ich bin mir nicht sicher wie man die fortlaufenden Namen anspricht.

    mach mal

      
    print_r($_POST);  
    
    

    nach dem Absenden des Formulars. Mit foreach zum Beispiel kannst du über den Array iterieren:

      
    foreach($_POST as $key => $value){  
        echo "$key => $val" . "<br>";  
    }  
    
    

    einzelne Keys des Arrays sprichst du zum Beispiel so an

      
    if(isset($_POST["inputfeld_1"])){  
     echo "inputfeld_1" . $_POST["inputfeld_1"];  
    }  
    
    
    1. @@Rod:

      nuqneH

        
      
      > foreach($_POST as $key => $value){  
      >     echo "$key => $val" . "<br>";  
      > }
      
      

      Kapitaler Fehler!! Nutzereingaben dürfen NIEMALS unbearbeitet ausgegeben werden.

      Faustregel: echo und $_POST/$_GET schreit nach [link:http://www.php.net/manual/de/function.htmlspecialchars.php@title=htmlspecialchars()]

      Qapla'

      --
      „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
      1. Tach!

        foreach($_POST as $key => $value){

        echo "$key => $val" . "<br>";
        }

        
        > Kapitaler Fehler!! Nutzereingaben dürfen NIEMALS unbearbeitet ausgegeben werden.  
        >   
        > Faustregel: `echo`{:.language-php} und `$_POST`{:.language-php}/`$_GET`{:.language-php} schreit nach `[link:http://www.php.net/manual/de/function.htmlspecialchars.php@title=htmlspecialchars()]`{:.language-php}  
          
        Kapitales Missverständnis! Kein einziger Wert darf ohne Beachtung des Ausgabekontextes ausgegeben werden - es sei denn, es handelt sich um eine kleine schnelle Debugausgabe.  
          
        Faustregel: Jegliche Ausgabe schreit nach der Beachtung des [Kontextwechsels](http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel). Nutzereingaben haben dabei keine Sonderstellung.  
          
          
        dedlfix.
        
        1. Vielen Dank für eure Hilfe!

          Das hat mir sehr geholfen.
          Werde es gleich mal ausprobieren,

          danke nochmal,
          Felix Schwarzer

      2. Hallo Gunnar,

        nuqneH

        foreach($_POST as $key => $value){
            echo "$key => $val" . "<br>";
        }

        
        >   
        > Kapitaler Fehler!! Nutzereingaben dürfen NIEMALS unbearbeitet ausgegeben werden.  
        >   
        > Faustregel: `echo`{:.language-php} und `$_POST`{:.language-php}/`$_GET`{:.language-php} schreit nach `[link:http://www.php.net/manual/de/function.htmlspecialchars.php@title=htmlspecialchars()]`{:.language-php}  
          
        das ist doch alles klar. Aber soll jemand, der nicht mal weiß, wie man auf ein Array zugreift, gleich mit solchen Problematiken behelligt werden? Ich denke, nein, ich weiß: nein. Das ist nicht zielführend.  
          
        
        
        1. Tach!

          das ist doch alles klar. Aber soll jemand, der nicht mal weiß, wie man auf ein Array zugreift, gleich mit solchen Problematiken behelligt werden? Ich denke, nein, ich weiß: nein. Das ist nicht zielführend.

          Ab wann ist es denn zielführend? Bei String-Notation bekommt man von den Tutorials recht schnell erklärt, dass man Anführungszeichen innerhalb eines Wertes maskieren muss. Warum lassen dann die meisten Tutorials aus, dass man nach diesem Prinzip auch noch andere Zeichen in anderen Situationen berücksichtigen muss? Muss man denn erst drei unsichere Scripts am laufen haben, um erzählt zu bekommen, wie man sie hätte sicherer schreiben können? Ich finde nicht, dass es einen sehr viel besseren Zeitpunkt als "so früh wie möglich" gibt.

          Dasselbe wäre auch für Debugging-Strategien sinnvoll. Man kommt früh genug mit Fehlern im eigenen Werk in Berührung und braucht dann wenigsstens das Wissen um die grundlegendsten Methoden. Aber auch solche Szenarien blenden die Tutorials meistens aus.

          dedlfix.

        2. @@Rod:

          nuqneH

          das ist doch alles klar.

          Dir vielleicht. Vielen anderen leider nicht.

          Aber soll jemand, der nicht mal weiß, wie man auf ein Array zugreift, gleich mit solchen Problematiken behelligt werden?

          Ja, unbedingt. Bervor man lernt, was man mit PHP anstellen kann, muss man lernen, was man mit PHP *anstellen* kann.

          Ich denke, nein, ich weiß: nein. Das ist nicht zielführend.

          Denk nochmal. Willst du jeden PHP-Anfänger (und auf dem Stand Stehengebliebene) Sicherheitslöcher ins Web stellen lassen, die als Spamschleudern oder Schlimmeres missbraucht werden?

          Ich weiß: Sanitizing von Werten, die außerhalb eigener Kontrolle liegen, gehört zu den grundlegenden Dingen, die JEDER Webentwickler wissen muss.

          Und das, wie dedlfix richtig ergänzte, nicht nur dann, wenn man etwas in den HTML-Kontext bringt (wobei man gegen XSS absichern muss), sondern bspw. auch, wenn man etwas in den SQL-Kontext bringt (wobei man gegen SQL-Injections absichern muss).

          Qapla'

          --
          „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
          1. Hallo Gunnar,

            ich verstehe dich ja und deinen Standpunkt, und unter gewissen Aspekten gebe ich dir absolut recht. Aber ich bin eben der Meinung, dass jemand, der noch ganz am Anfang steht, erstmal das simpelste _verstehen_ sollte. Was er dann umsetzt, und vor allem öffentlich ins Netz stellt, sind imho nochmal ein anderes Paar Stiefel.

            Aber soll jemand, der nicht mal weiß, wie man auf ein Array zugreift, gleich mit solchen Problematiken behelligt werden?

            Ja, unbedingt. Bervor man lernt, was man mit PHP anstellen kann, muss man lernen, was man mit PHP *anstellen* kann.

            ein weiter, weiter Weg liegt vor einem, bevor man lernt, wie man auf ein Array zugreift :)

            Ich denke, nein, ich weiß: nein. Das ist nicht zielführend.

            Denk nochmal. Willst du jeden PHP-Anfänger (und auf dem Stand Stehengebliebene) Sicherheitslöcher ins Web stellen lassen, die als Spamschleudern oder Schlimmeres missbraucht werden?

            Nicht schön, aber kann man das verhindern? Kontextwechsel ist dann ja nur ein Problem von vielen. Da gibts viele schöne, gefährliche Szenarien, die Anfänger in der Webentwicklung alle so machen können. Überhaupt Anfänger in der Programmierung. Ich weiß noch, als ich vor 15 Jahren mit meinem ersten Perlskript den Festplattenspeicher unseres Servers bis zum Anschlag vollgemüllt hatte...

            Ich weiß: Sanitizing von Werten, die außerhalb eigener Kontrolle liegen, gehört zu den grundlegenden Dingen, die JEDER Webentwickler wissen muss.

            Ist man denn schon ein "Webentwickler", wenn man auf ein PHP-Array zugreifen lernt (und diese extremst simple Operation noch nicht mal "kann")?

            Ich weiß auch gar nicht, ob der Threadersteller überhaupt versteht, um was es jetzt hier geht. Wie auch immer, grundsätzlich stimme ich Euch ja zu.

            grüße
            rod

            1. Tach!

              Ich weiß auch gar nicht, ob der Threadersteller überhaupt versteht, um was es jetzt hier geht. Wie auch immer, grundsätzlich stimme ich Euch ja zu.

              Das wissen wir auch nicht, aber soll man ihm deshalb das Wissen vorenthalten? Er hat ja auch noch eine Tastatur und kann sich melden, wenn er etwas nicht versteht, oder eine Suchmaschine danach befragen.

              dedlfix.

      3. Hallo,

        foreach($_POST as $key => $value){
            echo "$key => $val" . "<br>";
        }

        
        > Kapitaler Fehler!! Nutzereingaben dürfen NIEMALS unbearbeitet ausgegeben werden.  
          
        und wie waere dann die richtige/vollstaendige Antwort??  
          
        Ulli
        
        1. Tach!

          foreach($_POST as $key => $value){
              echo "$key => $val" . "<br>";
          }

          
          > > Kapitaler Fehler!! Nutzereingaben dürfen NIEMALS unbearbeitet ausgegeben werden.  
          > und wie waere dann die richtige/vollstaendige Antwort??  
            
          ~~~php
          echo '<pre>';  
          print_r($_POST); // oder auch var_dump($_POST)
          

          Es handelt sich vermutlich um eine Ausgabe zu Debug- und Verständniszwecken im heimischen Labor. Da sind großartige Sicherheitsmaßnahmen (und selbst ein schließendes </pre>) in der Regel unnötig.

          Allerdings hat der OP nicht genau benannt, zu welchem Zweck er die Ausgabe haben möchte. Deswegen kann eine "richtige/vollstaendige Antwort" nicht gegeben werden. Der Hinweis, dass htmlspecialchars() verwendet werden kann, hatte Gunnar in seiner Antwort stehen. Weitere Möglichkeiten je nach Szenario habe ich mit dem Verweis auf den Kontextwechselartikel nachgereicht.

          Aber gut, den obigen Code für den Kontext HTML in vollständig:

          foreach ($_POST as $key => $value)  
            printf("%s => %s<br>\n", htmlspecialchars($key), htmlspecialchars($value));
          

          Man könnte nun auch noch das > von => als $gt; notieren, aber unbedingt notwendig ist das nicht (bei einem < sähe das anders aus).

          dedlfix.