Roger: $_POST-variablen extrahieren?

hallo!

per get_defined_vars() kann man sich ja alle definierten variablen ausgeben lassen.
kann man auch einen schritt weiter gehen und nur alle per post übergebenen variablen ausgeben lassen? am liebsten noch formatiert (name, wert).
hat jemand eine idee?

gruß.
roger.

  1. Hallo,

    per get_defined_vars() kann man sich ja alle definierten variablen ausgeben lassen.
    kann man auch einen schritt weiter gehen und nur alle per post übergebenen variablen ausgeben lassen? am liebsten noch formatiert (name, wert).

    print_r() koennte Dir weiterhelfen:
    print("<pre>");
     print_r($_POST);
    print("</pre>");

    http://www.php.net/manual/de/function.print-r.php

    Auch mit foreach() solltest Du etwas hinkriegen, z.B. so:
    foreach($_POST as $key => $value)
      { print(htmlspecialchars("Name: [$key] Wert: [$value]")."<br>"); }

    http://www.php.net/manual/de/control-structures.foreach.php

    Denk aber an die Sicherheit!
    Obigen Code wuerde ich nur verwenden, wenn ich sicher bin, dass
    ich der einzige bin, der etwas ans Skript schicken kann.
    Bei oeffentlichen Dingen muss man natuerlich sorgfaeltiger sein
    und darf die uebergebenen Werte nicht einfach so ausgeben.
    http://www.dclp-faq.de/q/q-security-variablen.html

    Gruesse,

    Thomas

    1. Hallo,

      Auch mit foreach() solltest Du etwas hinkriegen, z.B. so:
      foreach($_POST as $key => $value)
        { print(htmlspecialchars("Name: [$key] Wert: [$value]")."<br>"); }

      das war's lars!
      danke!

      gruß.
      roger.

      1. Hi Roger,

        da kannst Du mal sehen, wie schnell hier bei anständiger Fragestellung bedient wird :-))

        Grüße

        Tom

  2. hallo,

    das geht in etwa so:

    if($_SERVER['REQUEST_METHOD'] == 'POST') {
      echo "<table>"\n";
      foreach($_POST as $key=>$value) {
        echo "<tr><td>$key</td><td>$value</td></tr>\n";
      }
      echo "</table>\n";
    }

    lieben Gruß, Uschi

    1. hallo,

      das geht in etwa so:

      if($_SERVER['REQUEST_METHOD'] == 'POST')

      {

      echo "<table>"\n";
        foreach($_POST as $key=>$value)

      {

      echo "<tr>

      <td>$key</td>
                     <td>htmlspecialchars($value)</td>\n".
                  "</tr>\n";

      }
        echo "</table>\n";
      }

      lieben Gruß, Uschi

      und bei meiner Lösung fehlte das

      echo "<pre>";
      print_r($_POST);
      echo "</pre>";

      noch lieberen Gruß

      Tom

      1. Hallo,

        echo "<td>htmlspecialchars($value)</td>\n";

        Wenn schon so:
        echo "<td>".htmlspecialchars($value)."</td>\n";

        Zwischen doppelten Anfuehrungszeichen werden zwar Variablen analysiert (geparst),
        aber Funktionen nicht...

        Gruesse,

        Thomas

  3. Hi Roger,

    warum so kompliziert?

    print_r($_POST);

    tut es doch auch (fast).

    Leider arbeitet print_r() nicht mit htmlspecialchars, sondern gibt die Werte so aus, wie sie sind. Das führt manchmal zu merkwürdigen Ergebnissen. Da sollten die bei PHP einen Schalte einbauen...

    Grüße

    Tom