2017-04-26 2 views
1

Ich versuche ein System einzurichten, wo ein Cookie erstellt wird, wenn ein Benutzer auf einer bestimmten Seite landet.JavaScript Redirect basierend auf dem Vorhandensein von Cookies

zum Beispiel: Wenn ein Benutzer zu .com/jp/a3 geht, wird ein Cookie erstellt.

Ich verwende diesen Code, um den Cookie zu erstellen und es scheint, den Cookie auf dieser Seite zu erstellen.

<script> 
    document.cookie = "name_of_cookie=a3; expires=31 Dec 2017 12:00:00 UTC; path=/" 
</script> 

Ich habe derzeit Seiten .com/jp/a1 durch .com/jp/a3 erstellt. Es besteht also die Möglichkeit, dass drei Cookies erstellt werden.

Beim nächsten Besuch des Benutzers möchte ich, dass der Browser nach diesen Cookies sucht und auf diese Seite umleitet, wenn ein Nutzer die normale Zielseite aufruft. Wenn ein Benutzer mehrere Seiten besucht hat, möchte ich, dass die Priorität auf die Seite gesetzt wird, die sie zuerst besucht haben. (Dies kann bedeuten, einige if else-Anweisungen in mein Javascript zu codieren, um das Cookie zu setzen, das ich annehme?) Wenn das schwierig ist, würde ich damit zufrieden sein, einfach durch die Liste a1-a3 als a1 mit der höchsten Priorität und a3 als niedrigster zu gehen.

Ich habe versucht, den folgenden Code zu meiner website.com/index.html Datei hinzuzufügen, aber habe kein Glück.

<script> 
    function getCookie(cname) { 
    var name = name_of_cookie + "="; 
    var decodedCookie = decodeURIComponent(document.cookie); 
    var ca = decodedCookie.split(';'); 
    for(var i = 0; i < ca.length; i++) { 
     var c = ca[i]; 
     while (c.charAt(0) == ' ') { 
      c = c.substring(1); 
     } 
     if (c.indexOf(name) == 0) { 
      return c.substring(name.length, c.length); 
     } 
    } 
    return ""; 
    } 

    function checkCookie() { 
    var redirect = getCookie("name_of_cookie"); 
    if (redirect != "") { 
     window.location = "http://www.website.com/jp/" + redirect; 
    } else { 
     window.location = "http://www.website.com/" 
    } 
    } 

    checkCookie(); 
</script> 

Ein Problem, ich glaube, ich kann, konfrontiert werden, ist, dass, während ich auf den a3.com Seiten bin, kann ich das Cookie in meinem Speicher zu sehen, aber wenn ich zu meinem index.html Seite gehen Ich kann den Cookie in meinem Speicher nicht sehen. Ich habe den Pfad zu/festgelegt, wird das Cookie nur im .com/jp/Unterordner verfügbar machen, oder sollte es auf der .com/index.html Seite erreichbar sein?

Vielen Dank im Voraus für jede Hilfe, die jemand zur Verfügung stellen könnte.

+0

*** "Ich habe versucht, den folgenden Code zu meiner Website hinzuzufügen: /index.html"*** - ist Ihr Server für die Ausführung von' php'inside 'html' konfiguriert? –

+0

Das ist eine sehr gute Frage. und ich bin darüber nicht positiv. Vielleicht ist es am besten, sich an Javascript zu halten. :) – rycankun

+0

Entweder ändern Sie index.html Erweiterung zu. PHP oder verwenden Sie JavaScript für die Umleitung. Sie können die Cookies auch auf der Client-Seite lesen: https://www.w3schools.com/js/js_cookies.asp –

Antwort

0

Sie scheinen die getCookie-Funktion falsch definiert zu haben. Beim Testen habe ich den Fehler name_of_cookie is not defined bekommen. Es scheint, dass in der ersten Zeile Ihrer getCookie() Funktion, verwendet man name_of_cookie statt cname wie Sie den Parameter definiert getCookie(cname)

Alles, was Sie tun müssen, ist es, zu

auch
var name = cname + "="; 

ändern, indem Sie den Pfad angeben Als / sollten Sie in der Lage sein, die Cookies von Ihrem Index auch zu sehen.

+0

Hallo @Abraham Murciano Benzadon Danke für die Hilfe! Ich habe einen Rat von früheren Kommentaren genommen und habe versucht, Javascript zu erstellen, das das stattdessen tut. aber immer noch nicht ganz da :) Ich habe meine Frage mit dem neuen Java Script aktualisiert. Ich habe deinen Vorschlag einer Umbenennung in .php versucht, aber ich hatte immer noch kein Glück. – rycankun

+0

Ich sehe das neue JavaScript, aber ich sehe nicht, warum es nicht funktioniert .. Haben Sie die Funktion getCookie() definiert, es ist keine native JavaScript-Funktion. Sie haben auch die checkCookie-Funktion definiert, aber Sie haben sie nicht ausgeführt. Sie müssen es mit 'checkCookie();' Wenn eines dieser Dinge funktionieren, lassen Sie mich wissen und schlecht aktualisieren die Antwort –

+0

Hallo @Abraham Murciano Benzadon Ich habe die komplette Funktion mit der Funktion getCookie() enthalten, und checkCookie(); am Ende genannt werden, aber aus irgendeinem Grund scheint es immer noch nicht zu funktionieren. – rycankun

0

Einfacher Fehler!

Ich habe Zitate um Name_of_cookie in der zweiten Zeile vergessen.

Korrigierte Antwort lautet:

<script> 
    function getCookie(cname) { 
    var name = "name_of_cookie" + "="; 
    var decodedCookie = decodeURIComponent(document.cookie); 
    var ca = decodedCookie.split(';'); 
    for(var i = 0; i < ca.length; i++) { 
     var c = ca[i]; 
     while (c.charAt(0) == ' ') { 
      c = c.substring(1); 
     } 
     if (c.indexOf(name) == 0) { 
      return c.substring(name.length, c.length); 
     } 
    } 
    return ""; 
    } 

    function checkCookie() { 
    var redirect = getCookie("name_of_cookie"); 
    if (redirect != "") { 
     window.location = "http://www.website.com/jp/" + redirect; 
    } else { 
     window.location = "http://www.website.com/" 
    } 
    } 

    checkCookie(); 
</script> 

Vielen Dank für die Unterstützung jeder!

Verwandte Themen