2009-08-22 7 views
5

Stworzyłem poszukiwania stronie klienta przy użyciu modułu Finder w połączeniu z modułem widoków. Problem polega na tym, że mój klient chce, aby za każdym razem, gdy użytkownik wybiera i wyszukuje firmy w określonym obszarze, to samo powinno być przechowywane jako sesja lub plik cookie na komputerze odwiedzającego. Zapewni to, że powtarzający się użytkownik zobaczy to samo, co wcześniej. Proszę sprawdzić na stronie: http://naplesres.designbracket.com/Jak przechowywać sesji/ciastko w Drupal 6 na komputerze odwiedzającego

Co więcej, chcę również wiedzieć, czy w oparciu o wcześniejsze wyszukiwanie można skonfigurować widoki w sposób, który tylko w firmie jego obszaru lokalnego jest przekazywany w pozostałych widokach używanych na strona internetowa, tj. na stronach Auto, Beauty itp.

Każda pomoc w postaci linków do dokumentów, wskazówki dotyczące tego, jak się do tego zabrać byłyby głęboko doceniane.

Dzięki

+0

Czy użytkownicy są zalogowani? – googletorp

+0

Wyszukiwanie może zostać przeprowadzone zarówno przez anonimowych, jak i zalogowanych użytkowników. Zasadniczo strona musi zapamiętać wyszukiwanie wykonane wcześniej przez tę samą osobę i podać domyślny zestaw wyników. – Sbhambry

Odpowiedz

3

Oczywiście można to zrobić, ale to nie jest normalne Drupal sposób to zrobić. Zazwyczaj przechowujesz informacje w sesji (użyj sess_write/sess_read) lub, jeśli użytkownik jest zalogowany, w informacji o koncie użytkownika.

Przechowywanie informacji w ciasteczku oznacza, że ​​może zostać zmienione po stronie klienta, i będziesz musiał uczynić swój kod ekstra niezawodny, tak jak w przypadku wszelkich danych pochodzących od użytkownika.

Jeśli trzymać go w sesji, to być przechowywane tak długo, jak w życiu sesji, ale potem znikają. Dla anonimowych użytkowników naprawdę nie ma lepszego sposobu. OTOH dla zalogowanych, przechowywanie informacji w $user->data Oznacza będą dostępne tak długo, jak nie je usunąć, ponieważ zostaną one zapisane w users tabelach.

Pamiętaj też, że pliki cookie sesji są generowane ponownie po przejściu z anonimowego na zalogowany, ale zachowują zawartość sesji, dzięki czemu możesz umieścić dane w anonimowej sesji i nadal je przechowywać po zalogowaniu się użytkownika, a następnie zapisać je. w danych jego konta. Zajrzyj pod numer includes/session.inc, aby dowiedzieć się, jak to działa.

9

Jeśli potrzebujesz czegoś śledzić i musisz pracować z użytkownikiem niezalogowanym, to musisz użyć pliku cookie, aby go śledzić. Nie możesz użyć sesji do przechowywania rzeczy dla anonimowych użytkowników w Drupalu, ponieważ jest ona związana z obiektem użytkownika.

Istnieje opis tutaj - http://www.w3schools.com/PHP/php_cookies.asp - ale pozwól mi iść do niego.

Zaczynasz używać setcookie (name, value, expire) - zakładamy, że chcemy wywołać tę wartość business_search, a my użyjemy wartości testowej "80204", która jest kodem pocztowym - to działa równie dobrze, jeśli używasz "Denver, CO". Nie chcemy to wygaśnie za, oh, sześć miesięcy, więc chcielibyśmy, aby zadzwonić:

setcookie('business_search', '80204', time() + 3600 * 24 * 180); 

tym czasie nie reprezentuje około sześć miesięcy warto sekund dodawanych do czasu teraz.

Pobieranie pliku cookie jest jeszcze łatwiejsze - wystarczy użyć $ _COOKIE ['business_search'], a funkcja zwróci wartość. Tak więc, możemy po prostu użyć tego kodu:

<?php 
function saveSerch($search_term) { 
    setcookie('business_search', $search_term, time() + 3600 * 24 * 180); 
} 

function readSearch() { 
    return $_COOKIE['business_search']; 
} 
?> 
+1

-1. To jest bardzo miły opis ciasteczek, ale pytanie zadano w odniesieniu do ram Drupala. Ta odpowiedź nie omawia sesji w Drupalu i może powodować zamieszanie podczas próby integracji z nim. –

+1

Powiedziałbym, że wartość -1 jest zbyt ostra. Odpowiedź była bardzo pomocna, co w połączeniu z powyższą odpowiedzią pomaga wyjaśnić kilka rzeczy. Powiedziałbym tylko "Dziękuję za John" :) – Sbhambry

+0

Odpowiadałem w odniesieniu do ram Drupala, a ja * przeprowadziłem * omawianie sesji w Drupalu w pierwszym akapicie. Na przykład: "Nie możesz użyć sesji do przechowywania rzeczy dla anonimowych użytkowników w Drupalu, ponieważ jest ona związana z obiektem użytkownika". Wyjaśnię więc, jak zrobić z ciasteczkami, które będą działać z anonimowymi odwiedzającymi. –

3

Jeśli masz problemy z uzyskaniem po stronie klienta cookies, aby trzymać w Drupal, spróbuj użyć opcjonalnego parametru dla ścieżki.

przykład:

setcookie('myCookieName', 'myCookieData', 0, '/');

Następnie na następnym wyjściu strona załadowała plików cookie na ekranie. Powinieneś zobaczyć plik cookie na wyjściu.

print_r($_COOKIE);

-lub więcej specifically-

print $_COOKIE['myCookieName'];

Cheers!

Powiązane problemy