Frithjof: Referrer auslesen und darauf reagieren

Hallo Forum,

ich wusste nicht, wie ich den Titel besser wählen sollte. Folgendes Problem:

Ich und noch zwei andere Leute wollen unsere Homepages (zumindestens tw.) zusammenlegen.
Damit wir aber alle nur auf ein und dieselbe Datei zugreifen, wäre es schön, wenn diese sich durch Stylesheets in das vorgegeben Design einpasst.
Dementsprechend hab ich jetzt folgendes zusammengeschrieben, welches aber so nicht funktioniert. Vielleicht sieht einer von Euch den/einen Fehler!?

  
<script type="text/javascript">  
            <!--  
            function woher() //auch ohne funktion tut's hier nicht :(  
            {  
               herkunft = top.document.referrer  
               if (herkunft == 'http://adresse.de/test/111.html')  
               {document.write("111");}  
               if (herkunft == 'http://adresse.de/test/222.html');  
               {document.write("222");}  
            }  
  
            document.write(document.referrer + '<br>'); //Das hier funzt komischerweise  
//-->  
</script>  

Wäre dankbar für Tipps und ähnliches. Weiterführende Tipps, wie ich das in PHP realisieren könnte wären auch in Ordnung...

  1. Hi,

    Vielleicht sieht einer von Euch den/einen Fehler!?

    geht nicht, da ich nicht mal eine Fehlerbeschreibung sehe.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Wieder "Hallo" Forum!

      Vielleicht sieht einer von Euch den/einen Fehler!?
      geht nicht, da ich nicht mal eine Fehlerbeschreibung sehe.

      Peinlich! Du hast natürlich recht!
      Also laut Script ist es ja so, wenn ich von der Datei "111.html" auf die besagte Datei gehe, soll per document.write ein Text eingefügt werden, in der Art von "Aha, sie kommen von 111!"
      Im zweiten Fall halt mit der "222", allerdings kommt keinerlei Meldung, keine Fehler, kein Text im Dokument, nix.

      Finbde ich verwunderlich, da

      document.write(document.referrer + '<br>');

      ja funktioniert, deshalb die Frage, ob ich irgendwas übersehen hab' o.ä..

      Gruß, Frithjof

      1. Hallo,
        manche browser wie z.B. der IE haben übrigens den referer deaktiviert,
        weil es anscheinend einige ängstliche user gibt im internet,die
        ihre herkunft um jeden preis verschleiern wollen.
        Gruss vom Alain

        --
        ...wenn das gehirn so einfach wäre,es zu vestehen,
        wären wir zu dumm um es zu begreifen...
      2. Hi,

        Finbde ich verwunderlich, da

        document.write(document.referrer + '<br>');
        ja funktioniert,

        wieso wunderst Du Dich? Weiter oben fragst Du etwas völlig anderes ab. Zu einer Fehlerbeschreibung gehören übrigens noch mehr Debug-Ausgaben, beispielsweise im else-Teil der offenbar nicht greifenden if-Abfrage.

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
  2. Das wäre effektiv besser in PHP realisierbar...
    Fallunterscheidung anhand der Server-Variable HTTP_REFERER, allerdings wäre es vielleicht auch sinnvoll, wenn du von der jeweiligen Seite aus einfach einen spezifischen GET-Parameter übergibst, mit dem dann jeweils ein anderes "Design" oder wie du das nennen willst wiedergegeben wird.. auf JavaScript würde ich mich nicht verlassen, PHP läuft auf dem Server und der Client muss davon nichts wissen, JavaScript muss lokal funktionieren, usw. usw. => PHP!

    1. Hi,

      Das wäre effektiv besser in PHP realisierbar...

      nein. Siehe Archiv. Sowohl Deine Aussage als auch ihr Unsinn gilt übrigens für _alle_ serverseitige Techniken, nicht nur für eine davon, die zudem kaum empfehlenswert ist.

      Cheatah

      --
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
      1. Es ist ja wohl möglich, dass ein PHP-Script anhand einer Unterscheidung des Referers (obwohl ich das nicht machen würde) oder anhand eines GET-Parameters unterschiedliche Ausgabe liefern kann.

        Mein vorheriges Posting lässt sich auf die obige Aussage zurückführen.

        1. mit dem andern "Design" ist natürlich eine andere Angabe in einem HTML-Tag gemeint, z.B. ein class-Tag, und dieses kann das PHP-Script ausgeben, je nach Fall.

        2. Hi,

          Es ist ja wohl möglich, dass ein PHP-Script anhand einer Unterscheidung des Referers (obwohl ich das nicht machen würde) oder anhand eines GET-Parameters unterschiedliche Ausgabe liefern kann.

          recherchiere bitte, wie empfohlen, zunächst im Archiv, bevor Du unhaltbare Behauptungen von Dir gibst. Damit etwas per Referer unterschieden werden kann, muss eine solche Angabe erst mal existieren und nutzbar sein.

          Cheatah

          --
          X-Will-Answer-Email: No
          X-Please-Search-Archive-First: Absolutely Yes
          1. Gut, damit auch du es verstehst, Cheatah, der du offenbar das Gefühl hast, als einziger eine Ahnung von PHP zu haben und dir einen Spass daraus machst, mit unangebrachter Arroganz anderen Leuten zu antworten:

            Lies mal http://www.php.net/manual/en/reserved.variables.php
            unter "HTTP_REFERER":

            The address of the page (if any) which referred the user agent to the current page. This is set by the user agent. Not all user agents will set this, and some provide the ability to modify HTTP_REFERER as a feature. In short, it cannot really be trusted.

            "It cannot really be trusted" - richtig. Deshalb würde ICH mich auch nicht darauf verlassen, wie ich schon erwähnt habe, aber die Angabe existiert und sie funktioniert bis auf wenige Ausnahmefälle auch.

            Weiter ist das offensichtliche Problem des Herrn Posters hier, dass er eine Seite haben will, auf der dann ersichtlich ist, woher der User gekommen ist, offenbar gibt es zwei verschiedene "Herkunftsdateien" oder "-websites".

            Folglich könnte er eben diese Seite als PHP-Script realisieren, dass die erwähnte Variable ausliest, dies ist aber nicht so sicher (ja, richtig, ich erwähne es erneut, damit du dich in ein paar Minuten noch daran erinnerst). Also könnte er ja auf der einen "Herkunftsseite" einen Link wie folgt machen: script.php?origin=seite1 und auf der andern einen Link script.php?origin=seite2.

            Das script.php könnte nun also auf diese $origin-Variable zugreifen und sie auswerten. Ist sie definiert, kann er ausgeben, ob der User von Seite 1 oder 2 kommt oder eben nichts ausgeben wenn nicht definiert.

            Natürlich könnte jemand von einer völlig andern Seite diesen origin-Parameter übergeben, aber ich denke, dass meine Variante einer Lösung durchaus nahekommt.

            mfG
            Gnoll

            1. Hi,

              Gut, damit auch du es verstehst, Cheatah, der du offenbar das Gefühl hast, als einziger eine Ahnung von PHP zu haben

              das Problem hat _nichts_ mit PHP zu tun. Siehe _bitte_ Archiv.

              und dir einen Spass daraus machst, mit unangebrachter Arroganz anderen Leuten zu antworten:

              Auch hierzu siehe Archiv.

              Lies mal http://www.php.net/manual/en/reserved.variables.php

              Zur Verlinkung von URLs siehe </faq/>.

              "It cannot really be trusted" - richtig. Deshalb würde ICH mich auch nicht darauf verlassen, wie ich schon erwähnt habe, aber die Angabe existiert und sie funktioniert bis auf wenige Ausnahmefälle auch.

              Siehe zu den "wenigen" Ausnahmefällen im Archiv.

              Folglich könnte er eben diese Seite als PHP-Script realisieren,

              Oder mit jeder beliebigen anderen serverseitigen Technik. PHP ist da am wenigsten empfehlenswert - siehe Archiv. Und das eigentlich Problem bleibt immer identisch.

              Cheatah

              --
              X-Will-Answer-Email: No
              X-Please-Search-Archive-First: Absolutely Yes
              1. So, das wäre dann meine letzte Antwort:

                Ich erachte es als unsinnig, weiter auf deine Aussagen einzugehen, denn du bist offensichtlich nicht fähig, eine konstruktive Diskussion zu führen, siehe hierzu _bitte_ Archiv (Beitrag von Auge am 13. August 2002). Zum vorhergehenden Posting und zur korrekten Schreibweise der Pronomen "du" oder "dir" siehe _bitte_ Duden 1, R 52. Fakt ist jedenfalls, dass die hier erwähnte Fragestellung durch meinen Ansatz vielleicht hätte gelöst werden können, auch wenn das Thema "Javascript" lautet. Dein Problem ist, dass du nicht einen winzigen Schritt von deinem Standpunkt weichen kannst. Du bist völlig festgefahren und klammerst dich verzweifelt an deinen Kenntnissen und am Forums-Archiv fest (ist wohl deine Bibel). Das zeigt sich insbesondere an der Tatsache, dass du zu meinen erwähnten Schilderungen nicht einmal Stellung genommen, sondern nur auf das Archiv verwiesen hast. Du hast behauptet, eine Angabe zur Überprüfung des Referers existiere in PHP nicht, was aber leider nicht der Fall ist - offenbar hast du aber Schwierigkeiten damit, diesen Missgriff einzuräumen.

                Ich bin natürlich auch der Auffassung, dass die meisten neuen Beiträge bereits eine Antwort im Archiv haben, anstelle eines kurzen Verweises eine erneute Antwort zu posten ist allerdings nichts Verwerfliches.

                Ich hoffe, dass du in deinem Leben noch mit vielen Leuten ähnlich umgehen kannst und viele Freunde haben wirst.

                Gruss

                Gnoll

                1. Hi,

                  So, das wäre dann meine letzte Antwort:

                  und mit diesem verbalen Fußaufstampen soll ich mir noch die Mühe machen, auf Deinen Quatsch einzugehen? Deine sogenannten Fakten sind keine, Deine Recherche ist ausbaufähig, auf das Archiv zu verweisen ist sinnvoll, weil dort all Deine aus Unkenntnis resultierenden Fragen und Missverständnisse hinreichend oft und quasi beliebig genau bereits geklärt wurden, so dass nicht der geringste Grund existiert, dies erneut zu tun, und der Duden erlaubt nach neuer Rechtschreibung sowohl ein kleines als auch das bisherige höfliche, großgeschriebene "Du". Nebenbei bemerkt solltest Du mal nach dem Begriff "Spellflame" recherchieren.

                  Du hast behauptet, eine Angabe zur Überprüfung des Referers existiere in PHP nicht,

                  Lern lesen.

                  Cheatah

                  --
                  X-Will-Answer-Email: No
                  X-Please-Search-Archive-First: Absolutely Yes
                  1. [blablabla..]

                    Du hast behauptet, eine Angabe zur Überprüfung des Referers existiere in PHP nicht,
                    Lern lesen.

                    Hört doch mal auf zu streiten!
                    Das ist für Leute, die Hilfe erwarten nicht nützlich!

                  2. Hi Cheatah!

                    und mit diesem verbalen Fußaufstampen soll ich mir noch die Mühe machen, auf Deinen Quatsch einzugehen? Deine sogenannten Fakten sind keine, Deine Recherche ist ausbaufähig, auf das Archiv zu verweisen ist sinnvoll, weil dort all Deine aus Unkenntnis resultierenden Fragen und Missverständnisse hinreichend oft und quasi beliebig genau bereits geklärt wurden, so dass nicht der geringste Grund existiert, dies erneut zu tun, und der Duden erlaubt nach neuer Rechtschreibung sowohl ein kleines als auch das bisherige höfliche, großgeschriebene "Du". Nebenbei bemerkt solltest Du mal nach dem Begriff "Spellflame" recherchieren.

                    Ich verstehe nicht wirklich warum Du nicht mit 5 Worten eben schreiben kannst, dass nicht jeder Client einen Referer senden muss, obwohl Du mit Sicherheit merkst dass Ihr aneinander vorbei redet. Sicher kann man mit PHP & Co. den Referer auslesen - aber auch nur dann wenn er auch gesendet wurde. Das muss einem lediglich bewußt sein wenn man den Referer irgendwo zu verwenden möchte. Wenn man im Archiv nach "Refer(r)er" sucht bekommt man alleine 2003 über 500 Postings, und wenn man nicht weiß worauf Du hinaus willst ist vielleicht nicht jedem sofort klar wie man die Suche weiter eingrenzen sollte.

                    Grüße
                    Andreas

              2. Hi,

                da dachte ich mir, ich komme deiner Bitte nach und recherchiere im Archiv und siehe da, ein Deja Vu:
                http://forum.de.selfhtml.org/archiv/2003/6/48592/#m265244 ff.

                *SCNR*

                Viele Grüße
                Torsten

                --
                Wäre Stoizismus eine Programmiersprache, würde ich ein Experte sein.
  3. Hallo Frithjof,

    function woher() //auch ohne funktion tut's hier nicht :(

    wo rufst du die Funktion auf?

    herkunft = top.document.referrer

    was machst du, wenn beim Aufruf der seite - warum auch immer - kein referrer mitgeliefert wird?

    if (herkunft == 'http://adresse.de/test/111.html')
                   if (herkunft == 'http://adresse.de/test/222.html');

    wie soll das eigentlich funktionieren mit der Herkunft? Woher wollt ihr wissen, auf welche Seite der der da kommt will? So ganz klar ist mir das nicht, was ihr da vorhabt.

    document.write(document.referrer + '<br>'); //Das hier funzt komischerweise

    dann rufst du vermutlich die Funktion nicht auf.

    Weiterführende Tipps, wie ich das in PHP realisieren könnte wären auch in Ordnung...

    mit php funktioniert das genausowenig

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
  4. Ich und noch zwei andere Leute wollen unsere Homepages (zumindestens tw.) zusammenlegen.
    Damit wir aber alle nur auf ein und dieselbe Datei zugreifen, wäre es schön, wenn diese sich durch Stylesheets in das vorgegeben Design einpasst.

    Wie meinst Du das? Möchtet Ihr dieselbe HTML-Datei mit unterschiedlichem Stylesheet ausliefern? Diesem Ansinnen nach empfinde ich Deinen Codeschnippsel als etwas verwirrdend, weil dort verschiedene Seiten angesprochen werden.

    if (herkunft == 'http://adresse.de/test/111.html')
                   {document.write("111");}
                   if (herkunft == 'http://adresse.de/test/222.html');
                   {document.write("222");}

    Wäre dankbar für Tipps und ähnliches. Weiterführende Tipps, wie ich das in PHP realisieren könnte wären auch in Ordnung...

    Javascript ist dafür sowieso die denkbar schlechteste Möglichkeit.
    Aber auch die Referrer-Angabe ist nicht gerade verlässlich und absolut schleierhaft ist mir, was Ihr Euch im obigen Code für den Fall ausgedacht habt, daß Eure Seite direkt aufgerufen wurde. Keine verweisende Seite, keine Referrer-Angabe.

    Gruß,
      soenk.e

  5. OK, ich merk schon, dass mein Lösungsansatz nicht so gut ankommt. ;)

    Dann frag' ich anders und ohne Lösungsansatz:

    Drei Leute haben eine HP über Musik. Der eine Techno, der andere Drum&Bass und der letzte HipHop.
    Nun sollen ALLE auf jeweils eine HTML-Datei zugreifen, die Rubriken wären z.B. "Events", "Charts", "Partyberichte" u.ä..
    Für den Besucher der jeweiligen Seiten, sollen sich diese zentralen Dateien aber ins Design einfügen, dies wäre mit den jeweiligen Stylesheets der Seiten ja möglich.
    Ich weiß also den genauen referrer! Direktaufrufe hab' ich bisher mal außen vor gelassen (nicht weggelassen).

    Wie realisert man sowas dann also am Besten?

    1. Hi,

      Ich weiß also den genauen referrer!

      nein, höchstens die Herkunft, aber nicht den Referer.

      Wie realisert man sowas dann also am Besten?

      Durch Übergabe eines _definitiv_ vorhandenen Wertes.

      Cheatah

      --
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
  6. Danke, danke für eure rege Diskussion!

    Ihr habt mich überzeugt und ich lass das mit JavaScript und referrer.
    Ich übergeb eine ID und lade anhand derer das entsprechende Stylesheet!

    Klappt wunderbar, danke an alle!
    Frithjof