Carsten Pieper: Error-CGI mit HTTP_REFERER

Hallo zusammen!

Ich habe mir folgende .htacess angelegt:

ErrorDocument 401 http://www.dyckburg.de/cgi-bin/error.pl
ErrorDocument 403 http://www.dyckburg.de/cgi-bin/error.pl
ErrorDocument 404 http://www.dyckburg.de/cgi-bin/error.pl
ErrorDocument 500 http://www.dyckburg.de/cgi-bin/error.pl

In der error.pl soll nun die Umgebungsvariable HTTP_REFERER ausgelesen werden, und mir eine Email geschickt werden, damit ich weiß, welche Seite(n) Fehler verursachen.

Die Emails bekomme ich auch soweit, nur das die Angabe der aufrufenden Seite meistens fehlt.

Eine Nachfrage bei meinem ISP hat ergeben, dass es die Variable gibt, eine Ausgabe des Umgebungsvariablen-Testskripts aus selfHTML enthält sie aber nicht: http://www.dyckburg.de/cgi-bin/env.pl

Da ich aber schon Emails bekommen habe, in denen ein Verzechnis, komischerweise keine Datei, wie geplant, angegeben war und aufgrund der Antwort meines ISPs gehe ich von der Existenz der Variable aus und Frage deshalb wo der Fehler liegen könnte oder ob sonst irgendjemand ne schicke Idee zur Lösung meines Problems hat.

Dafür danke ich schonmal im Voraus, sage Gute Nacht und wünsche ein schönes Wochenende,

pipeman

  1. Hi,

    ErrorDocument 401 http://www.dyckburg.de/cgi-bin/error.pl

    das ist falsch.

    ErrorDocument 403 http://www.dyckburg.de/cgi-bin/error.pl

    Das ist richtig, aber nicht was Du möchtest.

    In der error.pl soll nun die Umgebungsvariable HTTP_REFERER ausgelesen werden,

    Der Referer ist, wie Du aus dem Archiv selbstverständlich weißt, nicht verlässlich. Verzichte bei der ErrorDocument-Direktive auf absolute URLs und suche Dir aus dem Environment die Umgebungsvariable Deiner Wahl raus.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      ErrorDocument 401 http://www.dyckburg.de/cgi-bin/error.pl

      das ist falsch.

      Warum? Es funktioniert offensichtlich. Ein Test ohne "http://www.dyckburg.de/" hat nicht funktioniert.

      ErrorDocument 403 http://www.dyckburg.de/cgi-bin/error.pl

      Das ist richtig, aber nicht was Du möchtest.

      Em, was möchte ich denn? Ich dachte ich möchte alle 401,403,404,500 Fehler abfangen. Damit ich weiß, welcher Fehler aufgetreten ist, wird inzwischen error.pl?error=<fehlernummer> aufgerufen. Funktioniert auch.

      In der error.pl soll nun die Umgebungsvariable HTTP_REFERER ausgelesen werden,

      Der Referer ist, wie Du aus dem Archiv selbstverständlich weißt, nicht verlässlich. Verzichte bei der ErrorDocument-Direktive auf absolute URLs und suche Dir aus dem Environment die Umgebungsvariable Deiner Wahl raus.

      Klar, nur ist mir leider bisher noch keine Alternative unter die Fittiche gekommen, weder über www.dyckburg.de/cgi-bin/env.pl noch über http://selfhtml.teamone.de/cgiperl/intro/umgebungsvariablen.htm

      Ich bin für Tipps, welche Umgebungsvariable man nehmen könnte, sehr dankbar.

      Grüße und nen schönes Wochenende,

      pipeman

      1. Hi Carsten,

        Hi,

        ErrorDocument 401 http://www.dyckburg.de/cgi-bin/error.pl
        das ist falsch.
        Warum? Es funktioniert offensichtlich.

        definiere "funktioniert" - und lies http://httpd.apache.org/docs/mod/core.html#errordocument.

        Ich bin für Tipps, welche Umgebungsvariable man nehmen könnte, sehr dankbar.

        _Wie_ hast Du env.pl aufgerufen?

        Ein direkter Aufruf über die URL-Zeile ist natürlich nicht das, was Cheatah meinte - Du mußt das Skript schon selbst als ErrorDocument einbinden und dann sehen, was es Dir zeigt.
        Die verfügbaren Environment-Variablen hängen stark davon ab, warum (über welchen Mechanismus) das Skript aktiviert wurde.

        Viele Grüße
              Michael

        --
        T'Pol: I apologize if I acted inappropriately.
        V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
        (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
        Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.