Steve: Formular-Variablen und Leerzeichen

Hallo zusammen,

mittels der Anweisung:

function getFormVars()
{
 global $HTTP_POST_VARS,$HTTP_GET_VARS;

foreach ($HTTP_POST_VARS as $key => $value)
 {
  global $$key; $$key = value;
 }

foreach ($HTTP_GET_VARS as $key => $value)
 {
  global $$key; $$key = $value;
 }
}

lese ich die Formulardaten und speichere diese in Variablen. Ich möchte nun führende und nachfolgende Leerzeichen löschen.

Wenn ich aber den trim Befehl einsetze $$key = trim($value); dann enthalten die Variablen ungültige Werte.

Kann mir bitte jemand erklären, wo der Fehler liegt?

Steve

  1. Hallo Steve,

    global $HTTP_POST_VARS,$HTTP_GET_VARS;

    du liebe Güte, aus welchem Museum hast du das denn ausgegraben?
    Falls dein Provider nicht wirklich eine ganz, ganz alte PHP-Version hat, vergiss diesen Ansatz bitte schnell. Bei einigen Hostern gibt es die Variablen HTTP_*_VARS schon gar nicht mehr.
    Stattdessen verwendet man heutzutage die superglobalen Arrays $_GET[], $_POST[], $_SERVER[] und $_COOKIES[], für bestimmte Fälle auch noch $_REQUEST[].

    foreach ($HTTP_POST_VARS as $key => $value)
    {
      global $$key; $$key = value;
    }

    Und das umkopieren ist unnötig und belegt nur Speicherplatz für eine zusätzliche Variable pro Parameter; du kannst direkt auf die Parameter zugreifen, z.B. $_POST['key'].

    Wenn ich aber den trim Befehl einsetze $$key = trim($value); dann enthalten die Variablen ungültige Werte.

    Das dürfte mit dem $$-Mechanismus zusammenhängen (Variablen mit variablem Namen), der hier auch, genauso wie die ganze Kopierorgie, völlig nutzlos ist. Beim gezielten Umkopieren und trim()-en einzelner Parameter tritt das Problem nämlich nicht auf.

    So long,
     Martin

    --
    Solange der Nagellack nicht trocken ist,
    ist eine Frau praktisch wehrlos.
      (Burt Reynolds, US-Schauspieler)
    1. hi martin,

      danke für die Info.

      foreach ($HTTP_POST_VARS as $key => $value)
      {
        global $$key; $$key = value;
      }

      das schöne an dieser anweisung ist aber, dass ich diese für mehrere programme einsetzten kann. hier braucht man nicht zu wissen wie die das element des formulars heisst.

      bei echo $_POST['benutzername']; muss man ja den namen des elementes angeben.

      ausserdem verschicke ich in meinem skript mit GET und auch mit POST  meine daten.

      bye

      steve