Alex vom AdvoGraf-Team: + (PHP) Referrer abfragen und ggf. umleiten

Hallo, liebe Forumer/innen,

vor einigen Tagen mussten wir ausgerechnet von FvG erfahren, dass
AdvoGraf auf der Domain http://www.gravenreut.de in einem 100%-
Frame eingebunden ist.

Nachdem sich der Domaininhaber leider nicht dazu durchringen kann, das
abzustellen oder wenigstens eine Auswahlseite zu http://www.gravenreuth.de
oder http://www.advograf.de zu schalten, haben wir eine "Notlösung"
via JavaScript entwickelt:

<script language="JavaScript">
    <!--
    if(document.referrer  == "http://www.gravenreut.de/")
    {
        window.location.href="http://www173.l8.xodox.com/sys/tiedemann.htm";
    }
    //-->
    </script>

Im IE 5.x (ggf. auch 4.x, nicht getestet) klappt das wunderbar. NN
erkennt den Wert von document.referrer nicht und gibt eine leere
Zeichenfolge aus; also keine Umleitung.

Auch ein Versuch, das Problem serverseitig mit PHP zu lösen (nach einem
Beispiel aus dem PHP3-Forum) hat leider nicht geklappt:

<?php
    if (getenv("Server_Name")="http://www.gravenreut.de")
    {
    header("http://www173.l8.xodox.com/sys/tiedemann.htm")
    }
    ?>

Hat jemand von Euch eine Idee, wie wir das leidige Problem lösen
können? Eine Änderuung auf der Domain selber wäre ideal, aber solange
sich der Domaininhaber tot stellt, müssen wir versuchen, es unsererseits
in den Griff zu bekommen.

Vielen Dank für jeden brauchbaren Tipp.

Viele Grüsse,
  Alex vom AdvoGraf-Team

<img src="http://www173.l8.xodox.com/demo/advograf.gif" alt="www.advograf.de" style="cursor:hand;" onClick="window.location.href='http://www.advograf.de/'" onmouseover="window.status='http://www.advograf.de';return true;" onmouseout="window.status='';return true">

Satire wider den Abmahnwahn im Internet:
AdvoGraf - und der User zahlt sofort!
http://www.advograf.de

  1. Hallo Alex,

    Auch ein Versuch, das Problem serverseitig mit PHP zu lösen (nach einem
    Beispiel aus dem PHP3-Forum) hat leider nicht geklappt:

    <?php
        if (getenv("Server_Name")="http://www.gravenreut.de")

    ich denke, CGI-Variablen bestehen ausschließlich aus Großbuchstaben?
    Laß Dir doch mal alle Variablenwerte ausgeben, die Du an dieser Stelle sehen kannst. (http://www.teamone.de/selfaktuell/artikel/schroepl03.htm#a18)

    Siehe insbesondere auch http://httpd.apache.org/docs/custom-error.html für weiterführende Ideen.
    (Der Server der eingegebenen HTTP-Adresse "http://www.advograf.de" identifiziert sich als "Apache/1.3.9 (Unix)".)

    mfG - Michael

  2. Hallo Alex,

    »»   if (getenv("Server_Name")="http://www.gravenreut.de")

    header("http://www173.l8.xodox.com/sys/tiedemann.htm")

    Das müsste IMHO
      if (getenv("HTTP_REFERER")=="http://www.gravenreut.de/")
        header("Location: http://www173.l8.xodox.com/sys/tiedemann.htm");
    heissen, funktioniert aber, bis auf bei ausgeschaltetem JavaScript, eher
    schlechter als die JS Lösung.

    (Ähm... SERVER_NAME... da kommt doch immer "www173.l8.xodox.com" bei raus,
    weil da das Script läuft.)

    Per Referer gehts nicht 100%, da der, wie du ja schon festgestellt hast,
    browserspezifisch verschieden erzeugt wird. Es gibt auch genug Proxies
    (Junkbuster,WebWasher...) die den Referer entfernen.

    Also bleibt dir nur eins der bekannten 'wie verhindere ich das meine Seite in
    einem fremden Framenset aufgerufen wird' Scripte.
    (z.b.: if(window.name != "content") top.location.href="http://www173.l8.xodox.com/sys/tiedemann.htm"; )

    Dreistufiger Vorschlag:

    • Umleitung mit PHP per Referer: Alle IE User die keinen Proxy benutzen bzw.
        deren Proxy den Referer nicht filtert
    • Umleitung mit JS per Referer: Alle IE User, die JS eingeschaltet haben.
    • Umleitung per Framesetkillerscript: Alle NN user die JS eingeschaltet haben.

    Damit fallen die NN User mit ausgeschaltetem JavaScript immer noch durch.
    Keine Idee wie man das hinkriegt, ausser sie immer auf die Auswahlseite zu
    schicken.

    Gruss,
    Carsten

    1. Hallo Carsten,

      erstmal Danke an Dich und Michael.

      »»   if (getenv("Server_Name")="http://www.gravenreut.de")

      header("http://www173.l8.xodox.com/sys/tiedemann.htm")

      Das müsste IMHO
        if (getenv("HTTP_REFERER")=="http://www.gravenreut.de/")
          header("Location: http://www173.l8.xodox.com/sys/tiedemann.htm");
      heissen, funktioniert aber, bis auf bei ausgeschaltetem JavaScript, eher
      schlechter als die JS Lösung.

      (Ähm... SERVER_NAME... da kommt doch immer "www173.l8.xodox.com" bei raus,
      weil da das Script läuft.)

      habe ich auch gemerkt - trotzdem war Michaels Tipp nicht schlecht. Ich habe mir daraufhin mal die ganzen PHP-Umgebungsvariablen mit phpinfo() angesehen und etwas getestet. Leider war es wenig ergiebig; wie Du schon gesagt hast, der HTTP_REFERER ist bei meinen Tests mit dem NN leer gewesen. Aber ich habe dabei was dazugelernt, insofern war es nicht völlig sinnlos.

      Also bleibt dir nur eins der bekannten 'wie verhindere ich das meine Seite in
      einem fremden Framenset aufgerufen wird' Scripte.
      (z.b.: if(window.name != "content") top.location.href="http://www173.l8.xodox.com/sys/tiedemann.htm"; )

      So ähnlich werden wir es wohl erstmal machen (auch wenn es leicht auszuhebeln ist).

      Dreistufiger Vorschlag:

      • Umleitung mit PHP per Referer: Alle IE User die keinen Proxy benutzen bzw.
          deren Proxy den Referer nicht filtert
      • Umleitung mit JS per Referer: Alle IE User, die JS eingeschaltet haben.
      • Umleitung per Framesetkillerscript: Alle NN user die JS eingeschaltet haben.

      Das scheint mir etwas viel Aufwand für die paar Leute, die sich von da zu uns verirren - mit der Frame-Abfrage kriegen wir zumindest die, die JS eingeschaltet haben, und das sind wohl die meisten.

      Wenn wir ganz sicher gegen "fremde Frames" sein wollen, brauchen wir halt 'ne Domain mit Webspace, PHP etc., damit wir uns das Frameset auf advograf.de schenken können. Mal sehen...

      Danke nochmal und viele Grüße,
      Heiko