Jan: Gibt es sowas wie $ENV{'DOCUMENT_URI'}

Hallo,

ich puzzle gerade an einem script,
mit dem ich die "Wanderung" meiner BesucherInnen checken möchte.
Ich will einfach wissen, ob die Seiten interessant sind,
und die Leute ein bischen drauf rumklicken,
oder ob ich die Navigation optimieren muss etc.

Also dachte ich ein kurzes script überall einbinden,
was einfach nur IP, Zeitstempel und $ENV{'REQUEST_URI'} loggt.
Schade nur, dass REQUEST_URI eher den REFERER ausgibt.
Also nicht die Seite, in die das script eingebunden ist,
sondern es sagt mir, aus dem Navigationsframe aufgerufen zu werden.

Gibt es sowas wie $ENV{'DOCUMENT_URI'}
oder muss ich den echo var an den Query String hängen
und dann auslesen?

Danke und Viele Grüsse, Jan

  1. Hi!

    Was hälst Du von Serverlogfiles?

    Clemens

    1. Was hälst Du von Serverlogfiles?

      Hi Clemens,
      ist mir zu umständlich und mein altes WebSuccess 3 scheint
      mit den Logs auch nicht mehr kompatibel zu sein.

      So könnte ich mir quasi "on the fly"
      schnell und aktuell die Daten ausgeben lassen.

      Grüsse, Jan

    2. Hi,

      Was hälst Du von Serverlogfiles?

      und wo bekommen die Logfiles die Information her?
      Vom lieben Gott? ;-)

      Vielleicht sollte man mal überlegen, ob man nicht gezielt auf eine Frage antwortet, weil sie u.U. auf bestimmte Ideen abzielt.

      Reiner

      1. Hi,

        Was hälst Du von Serverlogfiles?

        und wo bekommen die Logfiles die Information her?
        Vom lieben Gott? ;-)

        Good is a Apache!

        Hi Reiner!

        Welche Laus ist Dir über die Leber gelaufen?

        Vielleicht sollte man mal überlegen, ob man nicht gezielt auf eine Frage antwortet, weil sie u.U. auf bestimmte Ideen abzielt.

        Vielleicht sollte man mal die Möglichkeit in Betracht ziehen, dass man vor lauter Wald die Bäume nicht mehr sieht, sprich einen output per Script erzeugt (oder erzeugen will), den z.B. der Apache standardmäßig liefert, Afaik sind genau die Angaben, die Jan haben will in apache/logs/access.log

        Clemens

        1. Hi!

          Welche Laus ist Dir über die Leber gelaufen?

          Keine, so direkt!

          Vielleicht sollte man mal überlegen, ob man nicht gezielt auf eine Frage antwortet, weil sie u.U. auf bestimmte Ideen abzielt.

          Vielleicht sollte man mal die Möglichkeit in Betracht ziehen, dass man vor lauter Wald die Bäume nicht mehr sieht, sprich einen output per Script erzeugt (oder erzeugen will), den z.B. der Apache standardmäßig liefert, Afaik sind genau die Angaben, die Jan haben will in apache/logs/access.log

          Deine Antwort geht in keinster Weise auf die ursprüngliche Frage ein!
          Wenn jemand fragt, wie Marmorkuchen gebacken wird, sagst Du sicher auch nicht als erstes, daß es da so Packungen von Dr. Öttger gibt...

          Deine Antwort sagt aus, wie man die Sprünge über die Seiten filtern kann, aber dazu muß das auch in den Logs so gespeichert sein. Wenn das aber nicht drin ist, der Mensch keinen Apache hat?
          Und: Die Frage zielte darauf ab, mit welchen Environmentvariablen  man das filtern könnte (das macht der Server nicht anders), also wie das DIREKT auswerfen kann, oder?

          Alles Gute,
          Reiner

  2. Hallo,

    [...]

    Gibt es sowas wie $ENV{'DOCUMENT_URI'}
    oder muss ich den echo var an den Query String hängen
    und dann auslesen?

    hilft Dir vielleicht $ENV{'HTTP_REFERER'} weiter?

    Reiner

    1. Hallo,

      [...]

      Gibt es sowas wie $ENV{'DOCUMENT_URI'}
      oder muss ich den echo var an den Query String hängen
      und dann auslesen?

      hilft Dir vielleicht $ENV{'HTTP_REFERER'} weiter?

      Hi Reiner,
      nee, leider nicht. Dann habe ich auch nur 50x "menu.html",
      ohne zu wissen, welche Seite aufgerufen wird :o(

      Erste spannende Erfahrungen:
      Die Leute klicken zwar oft auf das Framemenu,
      aber eine Stufe weiter (das Untermenu auf den Einzelseiten)
      wird das echt wenig ...

      Das gibts wohl noch was zu optimieren.

      Viele Grüsse, Jan

      1. Hi Reiner,
        nee, leider nicht. Dann habe ich auch nur 50x "menu.html",
        ohne zu wissen, welche Seite aufgerufen wird :o(

        Achso, Du wolltest praktisch den Top-Frame...
        Guck mal auf http://cgi.xwolf.de/cgi/environment.shtml. Da sind die die Variablen schön aufgelistet. DOCUMENT_URI gibt es tatsächlich.

        Vielleicht hilft das ja weiter?

        Alles Gute,
        Reiner

        1. Hi Reiner,

          war ein guter Link, hat aber leider nicht weitergeholfen.
          Der holt den DOCUMENT_URI auch über ssi (denk ich mal)

          Das script dort ist ziemlich identisch mit FrankSs
          http://forum.de.selfhtml.org/?m=72696&t=13137 bzw.
          der Self env.pl
          http://selfhtml.teamone.de/cgiperl/intro/umgebungsvariablen.htm

          Viele Grüsse, Jan

          1. Hi Jan,

            war ein guter Link, hat aber leider nicht weitergeholfen.
            Der holt den DOCUMENT_URI auch über ssi (denk ich mal)

            äh, ja und?

            Was soll Deiner Meinung nach der Unterschied zwischen der
            Environment-Versorgung von SSI und CGI sein?

            Viele Grüße
                  Michael

  3. Hallo

    Gibt es sowas wie $ENV{'DOCUMENT_URI'}

    Welche Enviroment-Vars gesetzt werden, hängt u.a. von der Konfiguration des Webservers ab. Du kannst Dir alle ausgeben lassen mit dem kleinen Scriptchen hier.

    #!/usr/bin/perl
    print "Content-type: text/html\n\n";
    print "<HTML><BODY><TABLE BORDER=0 cellspacing=0 cellpadding=0>\n";
    print "<TR><TD>$_</TD><TD> </TD><TD>$ENV{$_}</TD></TR>\n" for (sort keys %ENV);
    print "</TABLE></BODY></HTML>\n";

    oder muss ich den echo var an den Query String hängen
    und dann auslesen?

    Ich habe auch auf einigen Seiten so ein "logger". Das ist ein per <img src="access.pl?SEITENNAME"> eingebundenes Script, welches einfach den $ENV{'QUERY_STRING'} und "IP, Host, UserAgent, Timestamp" loggt und ein transparentes 1px-GIF zurückgibt. Funktioniert nur bedingt, denn auch das GIF wird gecached und dann wird nur geloggt, wenn's nicht im Cache ist. (Bei mir gabs auch keine passende $ENV.)

    Gruß Frank

    1. Hi Frank,

      Danke, das war schon mal ne gute Idee.
      Ich habe noch +window.location.pathname+ rangehängt,
      und das funktioniert soweit.

      Mit dem Cache ist auch ein guter Einwand.
      Werde ich mal beobachten und ggf. doch 'ne ssi-version schreiben.
      Da gibt es nämlich den <!--#include virtual="access.pl?DOCUMENT_URI" -->
      Damit ist eine Referer-Abfrage aber wieder unpräziser.
      (Falls man so'n all-in-one-script haben will)

      Viele Grüsse, Jan

      1. Hallo Jan

        Danke, das war schon mal ne gute Idee.
        Ich habe noch +window.location.pathname+ rangehängt,
        und das funktioniert soweit.

        ja, aber nur, wenn der User JavaScript auch eingeschaltet hat...

        Gruß Frank