Volker: Mit GET übergebene Variable nicht erkannt

Themenbereich PHP und/oder SSI

Hallo,
In der Variante
test.shtml:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">  
<html>  
<head>  
</head>  
<body>  
<?php  
print ("Ergebnis: ");  
print_r($_GET);  
?>  
</body>  
</html>

wird als Ergebnis angezeigt:
   Ergebnis: Array([aa]=>xx).

In der Varinate
inhalt.shtml:

<?php  
print ("Ergebnis: ");  
print_r($_GET);  
?>

test.shtml:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">  
<html>  
<head>  
</head>  
<body>  
<!--#include virtual="/inhalt.shtml" -->  
</body>  
</html>

wird als Ergebnis angezeigt:
   Ergebnis: Array([aa]=>xx),
die Variable also nicht erkannt.
Woran kann dies liegen?

  1. Hello,

    könntest Du Scripte (Ressourcen), Requests und Responses bitte nochmal sortieren?
    Im Moment verstehe ich nur Bahnhof.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hi!

      Im Moment verstehe ich nur Bahnhof.

      Es ist nach 19h00 ich kann Dich "auf meinem Ticket" mitfahren lassen...

      off:PP

      --
      "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
      1. Hello,

        Hi!

        Im Moment verstehe ich nur Bahnhof.

        Es ist nach 19h00 ich kann Dich "auf meinem Ticket" mitfahren lassen...

        Und wie könnten wir den OP einsammeln? Oder ist das für mich sowieso zu spät dafür?

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hi!

          Im Moment verstehe ich nur Bahnhof.

          Es ist nach 19h00 ich kann Dich "auf meinem Ticket" mitfahren lassen...

          Und wie könnten wir den OP einsammeln? Oder ist das für mich sowieso zu spät dafür?

          Ich kann zwischen 19h00 und 7h00 zwei Leute kostenlos mitnehmen - OP müßte sich dazu allerdings *erklären*.

          off:PP

          --
          "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
    2. Hallo,
      ich wüsste keine bessere Sortierung, nur vielleicht eine Zusammenfassung:
      Wenn das php-Skript in der Datei steht, erkennt es eine mit "GET" übergebene Variable, wenn das gleiche php-Skript mit SSI-include eingefügt wird, dann nicht.
      Gruß
      Volker

      1. Hello,

        ich wüsste keine bessere Sortierung, nur vielleicht eine Zusammenfassung:

        Wenn das php-Skript in der Datei steht, erkennt es eine mit "GET" übergebene Variable, wenn das gleiche php-Skript mit SSI-include eingefügt wird, dann nicht.

        Wenn ich Dich jetzt richtig verstehe, dann meinst Du die Priorität der Handler.

        1=PHP
         2=SSI

        PHP wird auf http getriggert und ausgeführt, wenn die Endung '.shtml' in der Liste der zu parsenden Dateien liegt

        Anschließend wird der SSI-Parser ausgeführt. Dann ist der PHP-Parser aber schon fertig.

        Ob die Priorität einstellbar ist, kann ich Dir auch nicht aus dem Handgelenk beantworten.

        Aber Du könntest es mit der Option 'exec' versuchen. Dazu müsstest Du den PHP-Interpreter mir exec aufrufen und ihm den Namen des Scriptes übergeben. Dann wird das externe Programm (PHP) ausgeführt und dessen Ausgabe an der Aufrufstelle in die Standardausgabe geschrieben.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hello,

          Wenn das php-Skript in der Datei steht, erkennt es eine mit "GET" übergebene Variable, wenn das gleiche php-Skript mit SSI-include eingefügt wird, dann nicht.

          Ich habe eben selber nochmal nachgelesen und erkläre es mir so:

          Wenn Du die PHP-Anweisungen direkt in die Datei schreibst, werden sie innerhalb desselben Environmentes ausgeführt. Die Aufrufparameter stehen daher zur Verfügung.

          Wenn Du den PHP-Aufruf per include oder exec (müsste sich mMn genauso verhalten) durchführst, wird eine neue Shell eröffnet, in der das Script ausgeführt wird. Diese erbt aber nicht automatisch das Environment der äußeren Shell. Du müsstest also vermutlich die Umgebungsvariablen (Aufrufparameter) mit übergeben beim Aufruf.

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
           ☻_
          /▌
          / \ Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
  2. Hallo,

    In der Variante
    test.shtml:

    [...]

    wird als Ergebnis angezeigt:
       Ergebnis: Array([aa]=>xx).

    In der Varinate
    inhalt.shtml:

    [...]

    wird als Ergebnis angezeigt:
       Ergebnis: Array([aa]=>xx),

    also das gleiche Ergebnis.

    die Variable also nicht erkannt.

    Da ich keinen Unterschied beim Ergebnis sehe, kann ich Deine Aussage nicht nachvollziehen. Ich vermute, Tom und Peter Pan gings nicht anders.

    Freundliche Grüße

    Vinzenz

    1. Hallo,

      also das gleiche Ergebnis.

      Du hast Recht, im zweiten Falle musste es heißen: Array ()
      Immer dieses gedankenlose Cut-and-paste!
      Gruß
      Volker

  3. Themenbereich PHP und/oder SSI

    In SSI werden die Umgebungs-Variablen (QUERY_STRING ist eine Solche) anders adressiert. Du hast da wahrscheinlich nur eine Referenz bekommen und nicht den Inhalt. In Perl sieht das so aus:

      
    # CGI  
    $ENV{QUERY_STRING}  
      
    # SSI  
    $QUERY_STRING  
    
    

    Und ich behaupte mal ganz kühn, dass es in PHP ganz ähnlich ist ;)

    Btw.; ein ARRAY entsteht, wenn es mehrere GET-Parameter mit gleichem Namen gibt.

    Hotti

    1. Hi,

      [PHP]
      Btw.; ein ARRAY entsteht, wenn es mehrere GET-Parameter mit gleichem Namen gibt.

      Das mag bei perl/CGI.pm so sein, ist aber bei PHP nicht so.
      Ein Array entsteht, wenn im Namen des Parameters Paare eckiger Klammern vorkommen (Ggf. in den Klammern enthaltene Zeichen werden als Index genommen). Gleichnamige Parameter ohne eckige Klammern überschreiben sich (bzw. "spätere" überschreiben "frühere").

      Bis die Tage,
      Matti

      1. Hi,

        [PHP]
        Btw.; ein ARRAY entsteht, wenn es mehrere GET-Parameter mit gleichem Namen gibt.

        Das mag bei perl/CGI.pm so sein, ist aber bei PHP nicht so.

        Kein Wunder, dass so manche Rewrite-Rule mit [QSA] nicht tut.

        Hotti

        1. Hello,

          [PHP]
          Btw.; ein ARRAY entsteht, wenn es mehrere GET-Parameter mit gleichem Namen gibt.

          Das mag bei perl/CGI.pm so sein, ist aber bei PHP nicht so.

          Kein Wunder, dass so manche Rewrite-Rule mit [QSA] nicht tut.

          Wer in seinen Benziner Dieselkraftstoff einfüllt, muss sich auch nicht wundern, wenn der nicht tut.

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
           ☻_
          /▌
          / \ Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
          1. hi Tom,

            Wer in seinen Benziner Dieselkraftstoff einfüllt, muss sich auch nicht wundern, wenn der nicht tut.

            Kommt aufs Mischungsverhältnis an. Mein alter Kadett hat es mit einem (versehentlich getankten) Benzin/Diesel-Gemisch sogar über 5 Alpenpässe geschafft (vollbeladen). Allerdings hat sich beim Pierburg-Vergaser die ganze Verschraubung gelöst (aufgeweichte Dichtungen), aber den musste ich sowieso aus einem noch anderen Grund mal wieder auseinanderbauen, als wir in Österreich angekommen sind ;-)

            Zum Thema: Die PHP-eigenwillige Interpretation der HTTP-RFCs ist für mich einer der Gründe, in Sachen PHP nichts mehr zu machen. Perl, CGI.pm, fertig.

            Hotti