Rico: Seitenzwang mit previousurl und document.referrer

Hi

ich versuche gerade eine Art Seitenzwang einzubinden, damit man nur von meiner Startseite der Homepage die eigendliche Haupseite aufrufen kann. Dazu hab ich ein kleines Script gefunden und angepasst. Momentan wird aber jedesmal die referrer Url als falsch gewertet auch wenn sie von der angegebene Seite angewählt wird.
Kann mir jemand helfen, wo der fehler liegt bzw noch etwas fehlt?

<script>
<!--
var previousurl="http://www.von-dieser-seite.de/start.html"
if (document.referrer!=previousurl){
location.replace('http://www.irgend-eine.addresse.de')
history.go(-1)
(
alert("Zugriff auf diese Seite wurde verweigert, Du kommst nicht von der Startseite!")
}
//-->
</script>

MfG
Rico

  1. Hallo,

    ich versuche gerade eine Art Seitenzwang einzubinden, damit man nur von meiner Startseite der Homepage die eigendliche Haupseite aufrufen kann.

    Warum?

    Wenn ich Deine Seite gebookmarkt habe und versuche diesen Bookmark zu verwenden und da kommt so eine (dämliche) Meldung dann würde ich sagen lmaA und komme Dich bestimmt so schnell nicht wieder besuchen.

    Gruss
       MichaelB

  2. Hallo,

    leider kann ich Dir nicht direkt helfen, aber ich würde es nicht "tun". Denn nicht wenige Surfer/Browser schicken gar keinen refferer. Das kann man nämlich unterbinden, um je mehr PC-zeitschriften ihre seiten mit "so-surfen-Sie-anonym" anfüttern, je mehr Leute können Deine Seite nicht besuchen.

    Wenn Du Javascript voraussetzt, kannst Du dem windows-Objekt name einen Wert zuweisen. Bei der darauf folgenden Seite schaust Du nach, ob dieser Wert auch vorhanden ist. Wenn ja, kam der Besucher über die Startseite, wenn nein, dann schick ihn, wohin Du willst. Du versuchst im Prinzip nach der Idee dieses Artikels:

    http://aktuell.de.selfhtml.org/artikel/javascript/wertuebergabe/index.htm

    einen Wert von einer Seite zur nächsten zu übergeben. Klapts, dann kam der Besucher durch die Vordertür, klapts nicht, dann kam er hinten herum....

    Chräcker

    http://www.Stempelgeheimnis.de

    1. Hallo Chräcker,

      http://aktuell.de.selfhtml.org/artikel/javascript/wertuebergabe/index.htm

      Leider funktioniert diese Methode nicht zuverlässig. Wenn das Fenster schon vorher einen Namen hatte, ändert IE 5.5 diesen nicht dauerhaft, sondern setzt ihn beim Laden einer neuen Seite auf den alten Wert zurück. Siehe: < http://groups.google.com/groups?dq=&hl=de&lr=lang_de&ie=UTF-8&threadm=mfbt09.381.ln%40pinguin.salesianer.de&rnum=1&prev=/>

      Es wäre doch gut, wenn man auch im Feature-Artikel darauf hinweisen würde.

      Grüße, Stefan

      --

      <img src="http://zapp.i-networx.de/logo.gif" border=0 alt="">    http://zapp.i-networx.de/

      1. Hallo,

        oh, Danke für diesen Hinweis. Und ja, das sollte man aufnehmen. Schreib doch mal eine Mail (oder gabs nicht mal eine "potentielle-Fehler-Anlaufstelle"? - Notfalls an den Autor, er würde sich dann schon Gehör verschaffen können ,-))

        Zum Ausgangsproblem: dann eben die konservative Methode: neue Url mit angehängtem parameter aufrufen und auf der neuen Seite schauen, ob an der url eben dieser Parameter dran ist..... (also die zuerst genante Methode im Artikel....)

        nochmals Danke,

        Chräcker

        http://www.Stempelgeheimnis.de

        1. Hallo Chräcker,

          Schreib doch mal eine Mail (oder gabs nicht mal eine "potentielle-Fehler-Anlaufstelle"? - Notfalls an den Autor, er würde sich dann schon Gehör verschaffen können ,-))

          Vom Autor selbst stammt ja dieser Usenet-Thread. Es wundert mich auch etwas, aber offenbar hält er einen Hinweis dann wohl für nicht so wichtig.

          Zum Ausgangsproblem: dann eben die konservative Methode: neue Url mit angehängtem parameter aufrufen und auf der neuen Seite schauen, ob an der url eben dieser Parameter dran ist..... (also die zuerst genante Methode im Artikel....)

          ja, das bleibt noch, aber window.name war viel, viel schöner.

          Grüße, Stefan

  3. Hi

    also ich versteh das ganze problem nicht so ganz, sonst hätt ich wohl mein kleines scripts selbst soweit gekriegt das es läuft..

    wozu muss ich den fensternamen auswerten bzw umbenennen? ich möchte doch lediglich nur das wenn mit dem script von der start.html seite die hauptseite aufrufe es richtig erkannt wird, alles andere geht ja bereits wie es soll..?

    im übrigen hab ich das gemacht weil ich meinen Seiten
    gewissen Styl werliehen habe und Bilder, Texte habe die nicht jeder
    und damit meine ich lediglich jeder kleiner Bub sich an meinem Quelltext zu schaffen macht und sich alles billig runterkopiert.

    das es wohl immer IRGENDEINE möglichkeit gäbe is wohl klar, aber
    diese werden wohl nicht mal 1% rausfinden womit der zweck mehr als erfühlt wäre..

    MfG

    1. Hallo Rico,

      [...] selbst soweit gekriegt das es läuft..
      [...] wenn mit dem script von der start.html seite die hauptseite aufrufe
      [...] werliehen habe
      ...
      [...] der zweck mehr als erfühlt wäre..

      Scnr: Ich glaube irgendwie nicht, dass jeder kleine Schulbub deine Texte klauen will. Zumindest nicht bei deiner Einstellung gegenüber der Rechtschreibung. (Ich versuche es wenigstens :)

      Und um zu der technischen Seite deines Problems zu kommen: Wie wäre es, wenn du mal einen Link zu deinem Versuch postest, dann kann man dir auch helfen und sagen wo dein Fehler liegt.

      Außerdem verhinderst du mit dem, was du vorhast keinen Diebstahl (dein eines Prozent ist doch sehr optimistisch geschätzt). Du verärgerst nur deine Besucher, aber wenn du es so willst...

      Gruß,
            Stefan

      1. Scnr: Ich glaube irgendwie nicht, dass jeder kleine Schulbub deine Texte klauen will. Zumindest nicht bei deiner Einstellung gegenüber der Rechtschreibung. (Ich versuche es wenigstens :)

        na nen rechtschreibfanatiker bin ich wohl wirklich nicht, deswegen werden meine texte auf der hp auch vorher zig mal gecheckt *s*

        ich habe es ja wieder rausgenommen da es ja nicht funktioniert..

        problem was auftritt..

        so wie das script oben steht, wird die seite geladen das meldefenster
        kommt auf, und durch den history.replace neueintrag dann auf die angegebene seite gelinkt..

        da aber ja eigendlich steht document.referrer !=  also nur wenn ungleich der eingelesenen URL ist führe dies aus..
        versteh ich dies nicht, ausser es ist ein fahler befehl für ungleich
         ( != ) ??

        MfG

    2. Hallo,

      also ich versteh das ganze problem nicht so ganz, sonst hätt ich
      wohl mein kleines scripts selbst soweit gekriegt das es läuft..

      Du wertest den referrer aus. Aber wer sagt Dir, daß jeder Browser einen Referrer liefert? Dem ist nämlich nicht so. Du erwischst mit Deiner Methode, wenn sie mal läuft, lange nicht jeden Besucher.

      Übergibst Du aber von der ersten Seite an die Zweite einen x-beliebigen Wert, dann kann die zweite Seite prüfen, ob sie diesen Wert bekommen hat. ist jemand von einer fremdseite direkt auf die zweite Seite eingestiegen, fehlt logischerweise dieser Wert. Und Du kannst ihn zur gewünschten Startseite schicken. Diese lösung hat nichts mit Deiner versuchten problemlösung zu tun sondern etwas mit Deinem eigendlichem problem ;-)

      Chräcker

      http://www.Stempelgeheimnis.de

  4. Hallo Rico,

    <script>

    <script type="text/javascript">

    <!--
    var previousurl="http://www.von-dieser-seite.de/start.html"
    if (document.referrer!=previousurl){

    Was sagt "alert(document.referrer);"? Im IE funktioniert referrer z.B nicht lokal von der Festplatte, sondern nur im Netz.

    location.replace('http://www.irgend-eine.addresse.de')

    diese Zeile überschreibt den letzten History-Eintrag und lädt eine neue Seite. Der Rest des Scriptes ist aber noch auf der alten Seite, die jetzt bereits entladen wird.

    history.go(-1)

    ...und hier willst du nochmal eins weiter zurück?

    (

    die Klammer hat kein Gegenstück

    alert("Zugriff auf diese Seite wurde verweigert, Du kommst nicht von der Startseite!")
    }
    //-->
    </script>

    Grüße, Stefan

    1. Hallo Rico,

      <script>

      <script type="text/javascript">

      <!--
      var previousurl="http://www.von-dieser-seite.de/start.html"
      if (document.referrer!=previousurl){

      Was sagt "alert(document.referrer);"? Im IE funktioniert referrer z.B nicht lokal von der Festplatte, sondern nur im Netz.

      also meines erachtens soll bis hier hin ausgeführt werden..
      setze vorangegangene url.. var previousurl="http://www.von-dieser-seite.de/start.html

      dann

      wenn seiten.herkunft ungleich der aufgenommen url ist führe aus:

      überschreibe historyeintrag mit dieser addy
      ( hat die verwendung wenn ich aus einem neu geöffneten browserfenster die seite versuche aufzurufen würde zwar nen alert textfeld kommen aber die seite anschliessend dennoch geladen werden)

      location.replace('http://www.irgend-eine.addresse.de')

      jetzt gehe eine seite zurück ( nun kann ich in jedemfall auf die
      eben angebene seite springen und diese laden, egal von wo ich die seite lade)

      history.go(-1)

      zeige ein meldefenster mit zugriff verweigert...
      (

      alert("Zugriff auf diese Seite wurde verweigert, Du kommst nicht von der Startseite!")
      }
      //-->
      </script>

      script ende und history.go back wird ausgeführt..

      problem was ich habe es wird in jedemfall die falsche adresse
      eingelesen auch wenn die previous url stimmt und von dort aus aufgerufen wird..

      nur warum versteh ich nicht.. da oben ja url != (also ungleich) nur dann ausgeführt werden soll.. macht es aber nicht
      falscher befehl?

      1. Hallo Rico,

        nur warum versteh ich nicht.. da oben ja url != (also ungleich) nur dann ausgeführt werden soll.. macht es aber nicht
        falscher befehl?

        nun lass es dir doch einfach ausgeben! alert(document.referrer);
        Schreib das ganz oben rein (in die Zeile vor if(document.referrer...)), und dann siehst du ja, warum es ungleich previousurl ist.

        Grüße, Stefan

        1. Hallo Rico,

          nur warum versteh ich nicht.. da oben ja url != (also ungleich) nur dann ausgeführt werden soll.. macht es aber nicht
          falscher befehl?

          nun lass es dir doch einfach ausgeben! alert(document.referrer);
          Schreib das ganz oben rein (in die Zeile vor if(document.referrer...)), und dann siehst du ja, warum es ungleich previousurl ist.

          Grüße, Stefan

          hm also entweder hat mir das script soviel nerv geraubt das ich jetzt nichtmal diesen aufruf mehr hinkrieg oder es kann keine url ausgelesen werden..
          ich bekomm ein leeres textfeld ?!??

          mfg

          1. Hallo Rico,

            hm also entweder hat mir das script soviel nerv geraubt das ich jetzt nichtmal diesen aufruf mehr hinkrieg oder es kann keine url ausgelesen werden..
            ich bekomm ein leeres textfeld ?!??

            Bei einem ganz normalen Link müßte das mit dem Referrer eigentlich klappen, wenn JS nicht abgeschaltet ist. Beim IE geht es nicht lokal, und auch bei document.open() wird kein Referrer übergeben. Vielleicht gibt es aber auch noch mehr Sonderfälle, keine Ahnung.

            Grüße, Stefan