Dynamicznie śledzę użytkownika przez sieć. Ostatnie 5 odwiedzonych stron są pokazywane jako nawigację o pieczeniu wakacyjnym:

DogdataBase >> Dogname >> Nazwa użytkownika >> KennelName >> Dogname >> itp. ....

Jest dynamicznie generowana ścieżka odwiedzonych stron ... Ten skrypt jest w PHP i działa bardzo dobrze.

Teraz używam sesji, aby przenieść tę tablicę odwiedzanych stron na inną stronę. Wypróbowany również LocalStorage w JS.

Moim problemem jest, jeśli użytkownik ma więcej okien mojej sieci. Tablica jest udostępniana dla wszystkich instancji (Windows) mojej sieci dla 1 użytkownika.

A więc wygląda to tak:

W1 - Okno 1

W2 - Okno 2

W1.dogdatabase >> W1.dogname >> W2.USERNAME >> W1.Kennename >> W2.dogname

Ale ja chcę to tak:

W1.dogdatabase >> W1.dogname >> W1.kennelName

W2.USERNAME >> W2.dogname.

Moje pytanie brzmi: jak przesunąć tablicę odwiedzanych stron do innej strony, aby były konkretne dla każdego okna mojej sieci dla 1 użytkownika w PHP lub JS?

Dziękuję Andrew

Edytuj - Rozwiązany! :

Więc zrobiłem nawigację do bułki :)

Mam taką tablicę wielowymiarową:

array (
[0] : (nameOfPage,pageURL)
[1] : (nameOfPage,pageURL)
etc..
)

Użyłem sessionstorage, aby uzyskać tę tablicę na inną stronę. Niesamowite jest, że sessionstorage jest unikalny dla każdego okna / zakładki w sieci, więc nie potrzebuję identyfikacji okna / karty. Gdy okno / karta jest zamknięta, przechowywanie jest wyczyszczone. Następna dobra funkcja jest po tym, że użytkownik kliknąć przycisk Wstecz, SessionStorage wróci do wartości hystorecyjnej na tej stronie. Gdy strona zostanie ponownie otwarta z funkcji panelu Browser WIA, Sharedstorage jest również na bieżącej wartości. Więc to niesamowite.

Do zapisywania tablicy do SessionStorage:

sessionStorage.setItem(key, JSON.stringify(myarray));

Do czytania tablicy z SessionStorage:

var myarray = JSON.parse(sessionStorage.getItem(key));

Klucz zmienny jest nazwa:

var key = 'navigation';
-1
BigOHenry 16 sierpień 2014, 12:14

2 odpowiedzi

Najlepsza odpowiedź

SessionStorage byłoby najlepszym rozwiązaniem, sugeruję, abyś użył Biblioteka zarządzania pamięcią sesji taką jak ta . To może pomóc w przechowywaniu nie tylko prostych danych tekstowych / numerowych, ale w ten sposób taką tablicę.

$.setSession('key','value');
$.setSession('array1',[1,2,3,4,5]);
$.setSession('array2',Array(1,2,3,4,5));

I aby uzyskać te dane, wystarczy użyć funkcji petression

$.getSession('key'); // returns 'value'
$.getSession('array1'); // returns [1,2,3,4,5]
0
Khalid 16 sierpień 2014, 22:32

Dziękuję za swoją wskazówkę Adam. Nie było dokładnie rozwiązaniem, ale było właściwe.

Użyję sessionstorage zamiast Localstorage. SessionStorage jest sepekretd dla każdego okna / zakładki i jego wyczyszczony, gdy okno / karta jest zamknięta.

Więc nie muszę wykryć okien (nie potrzebujesz generowania identyfikatora okna / zakładki) i nie potrzebujesz dbania o oczyścić pamięć. Localstorage jest udostępniany dla wszystkich systemów Windows / Tabs i należy go usunąć ręcznie (przeglądarka zamykająca nie wyczyścić Localstorage).

-1
BigOHenry 16 sierpień 2014, 21:50