*BLADE*: Kompletten REQUEST ausgeben

Hallo,

wie kann ich alle im REQUEST stehenden Daten ausgeben (http://www.123.de/index.php?test_a=123&test_b=456&test_c=789  -->>  Array( test_a => 123; test_b => 456; test_c => 789))

Wenn ich folgenden Befehl ausführe...

print $_REQUEST

...kommt:

Alles mösgliche wie z.B. [PHPSESSIONID]. Ich will aber nur das was nach dem ? in der Adresszeile steht.

Gruß
*BLADE*

  1. Ich grüsse den Cosmos,

    Alles mösgliche wie z.B. [PHPSESSIONID]. Ich will aber nur das was nach dem ? in der Adresszeile steht.

    $SERVER['QUERY_STRING'] dürfte das sein, was du suchst.

    Wenn du alle Parameter schon zerlegt haben willst,

    print_r($_REQUEST);

    Möge das "Self" mit euch sein

    --
    Fragt ein Atom das andere: Hast du mein Elektron gesehen? Ich bin heute so positiv.
    ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)
    1. Hallo Manuel,

      Wenn du alle Parameter schon zerlegt haben willst,
      print_r($_REQUEST);

      Er will doch nur die Daten, die im Query-String angegeben wurden, also $_GET.

      Grüße aus Freiburg,
      Marian

      --
      Microsoft broke Volkswagen's world record: Volkswagen made only 22 million bugs!
      <!--[if IE]><meta http-equiv="refresh" content="0; URL=http://www.getfirefox.com"><[endif]-->
      1. Ich grüsse den Cosmos,

        Er will doch nur die Daten, die im Query-String angegeben wurden, also $_GET.

        Also wenn er den kompletten Request haben will, ist das für mich mehr als $_GET. Aber das ist vermutlich definitionssache.
        Wie geschrieben wurde, unterschlägt $_GET wenn ein Parameter doppelt übergeben wurde und nimmt einfach den letzen Wert an.

        Möge das "Self" mit euch sein

        --
        Fragt ein Atom das andere: Hast du mein Elektron gesehen? Ich bin heute so positiv.
        ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)
    2. Hi!

      $SERVER['QUERY_STRING'] dürfte das sein, was du suchst.

      Kleiner Tippfehler:
      Statt $SERVER['QUERY_STRING'] sollte es $_SERVER['QUERY_STRING'] heißen.

      Und bei einem korrekten Query-String werden die einzelnen Parameter auch als Variablen im (superglobalen) Array $_GET gespeichert.

      D.h. bei dem Request http://example.com/file.php?a=1&b=2 wird in $_SERVER["QUERY_STRING"] dann a=1&b=2 enthalten sein und die Variablen $_GET["a"] mit dem Wert 1 und die Variable $_GET["c"] mit dem Wert 2 vorbelegt.

      Schöner Gruß,
      rob

      1. Hi!

        Einen Flüchtigkeitsfehler korrigiere ich, einen anderen mache ich selbst...

        und die Variable $_GET["c"] mit dem Wert 2 vorbelegt.

        Natürlich muß es $_GET["b"] heißen.

        Schöner Gruß,
        rob

      2. Hi,

        Und bei einem korrekten Query-String werden die einzelnen Parameter

        unter Umständen

        auch als Variablen im (superglobalen) Array $_GET gespeichert.

        Rufe folgendes Script

        <?php  
        echo "<pre>";  
        print_r($_GET);  
        echo $_SERVER["QUERY_STRING"];  
        echo "</pre>";  
        ?>
        

        mit einem Query-String ?a=1&a=2 auf.

        Die Ausgabe ist
        Array
        (
            [a] => c
        )
        a=b&a=c

        Es wird also einer der Parameter von PHP in $_GET unterschlagen, obwohl die letzte Zeile der Ausgabe zeigt, daß PHP durchaus Kenntnis von dem ersten Parameter hat.

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. Hi!

          <?php

          echo "<pre>";
          print_r($_GET);
          echo $_SERVER["QUERY_STRING"];
          echo "</pre>";
          ?>

          
          >   
          > mit einem Query-String ?a=1&a=2 auf.  
          >   
          > Die Ausgabe ist  
          > Array  
          > (  
          >     [a] => c  
          > )  
          > a=b&a=c  
          >   
          > Es wird also einer der Parameter von PHP in $\_GET unterschlagen, obwohl die letzte Zeile der Ausgabe zeigt, daß PHP durchaus Kenntnis von dem ersten Parameter hat.  
          
          Nein. Es wird nicht wirklich ein Parameter unterschlagen.  
          Es tritt genau das ein, was (meines Erachtens nach) auch zu erwarten ist.  
          Erst wird a der Wert "b" zugewiesen und dieser dann gleich wieder durch die neue Zuweisung (a=c) mit dem Wert "c" überschrieben.  
          Wenn man dieses Verhalten kennt, dann sollte es keine Probleme geben.  
          Ich wüßte jetzt auch nicht, welchen Sinn es hätte, zweimal den gleichen Parameter mit unterschiedlichen Werten zu übergeben...  
          Da muß man dann halt den Query-String selbst zerlegen, wenn man so etwas macht...  
            
          Schöner Gruß,  
          rob
          
          1. echo $begrüßung;

            Ich wüßte jetzt auch nicht, welchen Sinn es hätte, zweimal den gleichen Parameter mit unterschiedlichen Werten zu übergeben...

            Mehrfachauswahl in einem Select-Feld, um nur mal einen zu nennen.

            echo "$verabschiedung $name";

          2. Hi,

            Es wird also einer der Parameter von PHP in $_GET unterschlagen, obwohl die letzte Zeile der Ausgabe zeigt, daß PHP durchaus Kenntnis von dem ersten Parameter hat.
            Nein. Es wird nicht wirklich ein Parameter unterschlagen.

            Doch. Es wird der erste Parameter namens a unterschlagen.
            Wieso sollten verschiedene Parameter nicht denselben Namen haben dürfen?

            Worin unterscheidet sich diesbezüglich der Name "a" von "a[]"?

            Es tritt genau das ein, was (meines Erachtens nach) auch zu erwarten ist.

            Du erwartest, daß bei a=b&a=c die Hälfte unterschlagen wird, bei a[]=b&a[]=c dagegen nicht? Warum?

            Erst wird a der Wert "b" zugewiesen und dieser dann gleich wieder durch die neue Zuweisung (a=c) mit dem Wert "c" überschrieben.
            Wenn man dieses Verhalten kennt, dann sollte es keine Probleme geben.

            Bei Perl stehen alle Werte zur Verfügung über die normalerweise für den Parameterzugriff verwendete CGI::param($name);

            In Java-Servlets stehen alle Werte zur Verfügung über die normalerweise für den Parameterzugriff verwendete Klasse HttpServletRequest.

            Bei PHP steht nur der letzte Wert zur Verfügung über das normalerweise für den Parameterzugriff verwendete $_GET, es sei denn, der Name endet auf [].

            Ich wüßte jetzt auch nicht, welchen Sinn es hätte, zweimal den gleichen Parameter mit unterschiedlichen Werten zu übergeben...

            Siehe Antwort von dedlfix, <select multiple="multiple">.

            Da muß man dann halt den Query-String selbst zerlegen, wenn man so etwas macht...

            Wenn man PHP benutzt, ja.

            cu,
            Andreas

            --
            Warum nennt sich Andreas hier MudGuard?
            O o ostern ...
            Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
            1. Hi!

              Du erwartest, daß bei a=b&a=c die Hälfte unterschlagen wird, bei a[]=b&a[]=c dagegen nicht? Warum?

              Wenn ich einer Variablen einen Wert zuweise und dieser dann nochmal einen Wert zuweise, dann erwarte ich, daß überschrieben wird.
              Wenn ich ein Array einsetze, dann erwarte ich, daß das nächste Array-Element angelegt und befüllt wird.

              Bei Perl stehen alle Werte zur Verfügung über die normalerweise für den Parameterzugriff verwendete CGI::param($name);

              Auch bei PHP stehen alle Werte zur Verfügung, wenn man $_SERVER['QUERY_STRING'] einsetzt. In $_GET wird das entsprechende Element dann überschrieben.
              Aus meiner Sicht, ist das aber kein Problem, weil ich die Sache dementsprechend angehe.
              Und ja, es stimmt. Den gleichen Namen zu vergeben, ergibt in einigen Fällen einen Sinn. Da hatte ich so gar nicht dran gedacht.
              Wenn man nämlich, wie erwähnt, beispielsweise mit Checkboxen (oder anderem) arbeitet, vergibt man den gleichen Namen.
              Dann setze ich allerdings ein Array anstelle einer normalen Variable ein.
              Wenn man das so macht:
              <input type="checkbox" name="irgendwas[]">
              gibt es mit PHP auch wieder keine Probleme.

              Mit verschiedenen Sprachen muß man einige Dinge halt ein wenig anders angehen. Das muß man natürlich wissen.
              Ich finde das Verhalten von PHP in diesem Fall OK und würde mir nicht wünschen, daß es anders wäre.
              Bisher hat das für mich noch nie zu einem Problem geführt.

              Schöner Gruß,
              rob

              1. Hi,

                Du erwartest, daß bei a=b&a=c die Hälfte unterschlagen wird, bei a[]=b&a[]=c dagegen nicht? Warum?
                Wenn ich einer Variablen einen Wert zuweise und dieser dann nochmal einen Wert zuweise, dann erwarte ich, daß überschrieben wird.

                In der URL stehen aber keine Variablen, sondern Parameter.

                Bei Perl stehen alle Werte zur Verfügung über die normalerweise für den Parameterzugriff verwendete CGI::param($name);
                Auch bei PHP stehen alle Werte zur Verfügung, wenn man $_SERVER['QUERY_STRING'] einsetzt.

                Ja, äußerst umständlich.

                Und ja, es stimmt. Den gleichen Namen zu vergeben, ergibt in einigen Fällen einen Sinn. Da hatte ich so gar nicht dran gedacht.

                Um so weniger sinnvoll ist es, daß man dann für PHP spezielle Namen (mit [] am Ende) verwenden muß, um einfach auf die Parameter-Werte zugreifen zu können.

                Ich finde das Verhalten von PHP in diesem Fall OK

                Ich nicht, weil es vollkommen unlogisch ist.

                cu,
                Andreas

                --
                Warum nennt sich Andreas hier MudGuard?
                O o ostern ...
                Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                1. Hi!

                  Wenn ich einer Variablen einen Wert zuweise und dieser dann nochmal einen Wert zuweise, dann erwarte ich, daß überschrieben wird.
                  In der URL stehen aber keine Variablen, sondern Parameter.

                  Das ist mir klar.
                  Ich meinte das so, wie ich es geschrieben habe. Wenn ich einer Variablen zum zweiten Mal einen Wert zuweise, erwarte ich, daß dieser überschrieben wird.
                  Genau das ist es, was in diesem Fall passiert.

                  Ich finde das Verhalten von PHP in diesem Fall OK
                  Ich nicht, weil es vollkommen unlogisch ist.

                  Ansichtssache.
                  Ich halte es nicht für unlogisch.
                  Ich mag das Verhalten von PHP.
                  Das ist auch der Grund, warum ich lieber mit PHP arbeite als mit Perl.

                  Schöner Gruß,
                  rob