Forum » Programiranje » Piškotki in virtualne poti
Piškotki in virtualne poti

Grizzly ::
Imam spletno stran, katere linki vsebujejo različne virtualne poti, na primer:
Torej: Čeprav linki vsebujejo slash, mapa "aplikacije" ne obstaja. Gre samo za obliko linkov, da je vsebina smiselno organizirana.
Na tej spletni strani uporabljam piškotke (za jezik prikaza, barvno shemo itd.) in tu nastopi težava. Ker linki vsebujejo slash, se piškotek nastavi samo za določen nivo. Na primer:
Kadar sem na linku "/aplikacije" se piškotek nastavi na nivo (path) "/".
Kadar pa sem na linku "/aplikacije/windows-aplikacije" se piškotek nastavi na nivo (path) "/aplikacije".
Torej: Vsak piškotek vsebuje drugačen value za "path" in posamezni piškotki med seboj niso vidni.
To pomeni, da imam na linku "/aplikacije" lahko nastavljeno neko barvno shemo oz. jezik prikaza.
Ko pa se postavim na link "/aplikacije/windows-aplikacije" prvega piškotka ne vidim in zato se uporabijo default vrednosti, ki so lahko drugačne od tistih, ki so shranjene v prvem piškotku.
Posledično imam na linku "/aplikacije" lahko drugačno barvno shjemo oz. jezik kot pa na linku "/aplikacije/windows-aplikacije". To ni v redu!
Rad bi piškotek nastavil na osnovnem nivoju (path="/") in do njega dostopal od koderkoli, tako da isti jezik oz. ista barvna shema velja vsepovsod na spletni strani.
Kako bi to implementiral?
/aplikacije /aplikacije/windows-aplikacije /aplikacije/linux-aplikacije /aplikacije/android-aplikacije
Torej: Čeprav linki vsebujejo slash, mapa "aplikacije" ne obstaja. Gre samo za obliko linkov, da je vsebina smiselno organizirana.
Na tej spletni strani uporabljam piškotke (za jezik prikaza, barvno shemo itd.) in tu nastopi težava. Ker linki vsebujejo slash, se piškotek nastavi samo za določen nivo. Na primer:
Kadar sem na linku "/aplikacije" se piškotek nastavi na nivo (path) "/".
Kadar pa sem na linku "/aplikacije/windows-aplikacije" se piškotek nastavi na nivo (path) "/aplikacije".
Torej: Vsak piškotek vsebuje drugačen value za "path" in posamezni piškotki med seboj niso vidni.
To pomeni, da imam na linku "/aplikacije" lahko nastavljeno neko barvno shemo oz. jezik prikaza.
Ko pa se postavim na link "/aplikacije/windows-aplikacije" prvega piškotka ne vidim in zato se uporabijo default vrednosti, ki so lahko drugačne od tistih, ki so shranjene v prvem piškotku.
Posledično imam na linku "/aplikacije" lahko drugačno barvno shjemo oz. jezik kot pa na linku "/aplikacije/windows-aplikacije". To ni v redu!
Rad bi piškotek nastavil na osnovnem nivoju (path="/") in do njega dostopal od koderkoli, tako da isti jezik oz. ista barvna shema velja vsepovsod na spletni strani.
Kako bi to implementiral?

Ales ::
Kakšna koda pa trenutno nastavlja piškotke? Od kod izvirajo?
Zdi se mi, da imaš obstoječi sistem, tako da potrebno najprej ugotoviti kakšen sistem je to in kako deluje, potem pa ga spremeniti.
Zdi se mi, da imaš obstoječi sistem, tako da potrebno najprej ugotoviti kakšen sistem je to in kako deluje, potem pa ga spremeniti.

Grizzly ::
Kakšna koda pa trenutno nastavlja piškotke? Od kod izvirajo?
Zdi se mi, da imaš obstoječi sistem, tako da potrebno najprej ugotoviti kakšen sistem je to in kako deluje, potem pa ga spremeniti.
Spletna stran je custom-made. Preko httaccessa vse zahtevke preusmerim na index.php tam pa preverjam URL in prikazujem vsebino, ki jo preberem iz podatkovne baze. Do te točke nič posebej zapletenega, saj enako deluje tudi Wordpress.
V index.php imam spisano celotno ogrodje spletne strani. V glavi imam link na javascript datoteko (nahaja se v rootu), kjer preko jQueryja procesiram vse klike na gumb.
Ko torej kliknem na gumb za spremembno barvne sheme, se v javascript datoteki izvede ustrezna koda, ki v piškotek shrani izbrano barvno shemo. Primer kode:
$("#changeTheme").click(function() { var currentTheme = $("#page-top").attr("class"); var nextTheme = ""; if (currentTheme == "white-black") nextTheme = "white-black"; if (currentTheme == "black-white") nextTheme "black-white"; document.cookie = "ColorTheme=" + nextTheme; /* Tu se v piskotek shrani nova barvna shema. */ window.location.href = "/"; /* Preusmerim na zacetno stran, da se preberejo nove vrednosti piskotkov. */ });
Zadnji ukaz (window.location.href) preusmeri na začetno stran. Kot rečeno, se preko httaccessa zahtevek preusmeri na index.php datoteko, kjer preberem vrednost v piškotkih (oz. če piškotkov ni, uporabim default vrednosti).
Za zdaj sem situacijo rešil tako, da piškotek ne nastavljam več v javascriptu, ampak v zunanji php datoteki, ki sem jo lociral v root. Se pravi, namesto "document.cookie" z ajaxom kličem datoteko "/set_cookie.php", kjer nastavim vrednost piškotka.
Ker je datoteka set_cookie.php locirana v rootu, se piškotek vedno ustvari na istem nivoju (path="/") in obveljajo iste nastavitve, ne glede na to, na katerem URL-ju nastavljam piškotke.
Ni najbolj učinkovita rešitev, ampak vsaj dela. Če kdo pozna boljšo rešitev, prosim za malo razlage.

kljuka13 ::
Rešitev je načeloma še enostavnejša: pri nastavljanju piškotka z Javascriptom moraš ustrezno nastaviti želeno pot:
document.cookie = "ColorTheme=" + nextTheme + ";path=/";

FireSnake ::
Točno tako!
Ni potrebe po spremenljivki nextTheme, ker ne naredi popolnoma nič, ker je vrednost ista kot je vrednost currentTheme.
Pa currentTheme je lahko const, ne var.
Pa še te ne bi rabil. Bi pa na rovaš tega bila berljivost malenkost slabša. V tem primeru bi imel dve vrstici kode.
Ni potrebe po spremenljivki nextTheme, ker ne naredi popolnoma nič, ker je vrednost ista kot je vrednost currentTheme.
Pa currentTheme je lahko const, ne var.
Pa še te ne bi rabil. Bi pa na rovaš tega bila berljivost malenkost slabša. V tem primeru bi imel dve vrstici kode.
Poglej in se nasmej: vicmaher.si
Zgodovina sprememb…
- spremenilo: FireSnake ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | ASP .NET MVC - kje začeti?Oddelek: Izdelava spletišč | 1260 (338) | acookook |
» | Informacijski pooblaščenec predstavil nove dobre prakse pri uporabi piškotkov (strani: 1 2 )Oddelek: Novice / Omrežja / internet | 21976 (15710) | AštiriL |
» | cookie nova zakonodajaOddelek: Izdelava spletišč | 10044 (8044) | stb |
» | Pripravite vašo spletno stran na nov zakon o piškotkih (strani: 1 2 3 4 … 12 13 14 15 )Oddelek: Izdelava spletišč | 219204 (170770) | Tydek |
» | [php] Cookie lost after headerOddelek: Programiranje | 1745 (1668) | Yacked2 |