2009-08-22 10 views
5

Ich habe eine Suche nach einer Client-Website mit Finder-Modul in Verbindung mit Sichten-Modul erstellt. Das Problem ist, dass mein Kunde möchte, dass jedes Mal, wenn ein Benutzer die Geschäfte in einem bestimmten Bereich auswählt und sucht, diese dann als Sitzung oder Cookie auf dem Computer des Besuchers gespeichert werden sollen. Dies würde sicherstellen, dass ein wiederholter Besucher dieselbe Suche sieht, die er zuvor gemacht hatte. Überprüfen Sie bitte die Website: http://naplesres.designbracket.com/So speichern Sie Session/Cookie in Drupal 6 auf dem Computer des Besuchers

Darüber hinaus möchte ich auch, wenn zuvor auf der Suche basierend wissen kann ich die Ansichten in einer Art und Weise zu konfigurieren, dass nur Unternehmen seiner Umgebung sind im übrigen die Ansichten verwendet, weitergegeben die Website zB auf den Seiten Auto, Beauty usw.

Irgendwelche Hilfe in Form von Links zu Dokumenten, Hinweise, wie Sie darüber gehen, wäre sehr zu schätzen.

Dank

+0

Sind die Benutzer angemeldet? – googletorp

+0

Die Suche kann sowohl von anonymen als auch von eingeloggten Benutzern durchgeführt werden. Grundsätzlich muss sich die Site nur an die Suche erinnern, die zuvor von derselben Person durchgeführt wurde, und einen Standardsatz von Ergebnissen werfen. – Sbhambry

Antwort

3

Natürlich ist es getan werden kann, aber es ist nicht die normale Drupal Art und Weise tun. Normalerweise speichern Sie die Informationen entweder in der Sitzung (verwenden Sie sess_write/sess_read) oder, wenn der Benutzer angemeldet ist, in den Benutzerkontoinformationen.

Wenn Sie die Informationen im Cookie speichern, bedeutet dies, dass sie auf der Clientseite manipuliert werden können, und Sie müssen Ihren Code, wie bei allen vom Benutzer stammenden Daten, besonders sicher machen.

Wenn Sie es in der Sitzung behalten, wird es so lange gespeichert, wie die Sitzung lebt, aber danach wieder verschwinden. Für anonyme Benutzer gibt es wirklich keinen besseren Weg. OTOH, für eingeloggte Benutzer, speichern die Informationen in $user->data bedeutet, dass sie verfügbar sein werden, solange Sie sie nicht entfernen, da sie in den users Tabellen gespeichert werden. Vergessen Sie nicht, dass drupal-Sitzungscookies beim Wechsel von anonym zu angemeldet neu generiert werden, aber den Sitzungsinhalt behalten, so dass Sie Daten in die anonyme Sitzung einfügen können und diese beim Anmelden des Benutzers noch haben und dann speichern können in seinen Kontodaten. Details dazu finden Sie unter includes/session.inc.

9

Wenn Sie etwas im Auge behalten müssen und mit dem nicht eingeloggten Benutzer arbeiten müssen, verwenden Sie einen Cookie, um den Überblick zu behalten. Sie können die Sitzung nicht zum Speichern von Objekten für anonyme Besucher in Drupal verwenden, da sie an das Benutzerobjekt gebunden ist.

Es gibt eine Beschreibung hier - http://www.w3schools.com/PHP/php_cookies.asp - aber lass mich hineingehen.

Sie beginnen mit setcookie (Name, Wert, ablaufen) - wir nehmen an, dass wir diesen Wert business_search nennen möchten, und wir verwenden einen Testwert von "80204", das ist eine Postleitzahl - dies funktioniert genauso gut, wenn Sie "Denver, CO" verwenden. Wir wollen nicht, es, oh, sechs Monate verstreichen, so würden wir nennen wollen:

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

diese Zeit gibt es etwa sechs Monate im Wert von Sekunden stellt jetzt zu der Zeit hinzugefügt werden.

Noch einfacher ist es, den Cookie zu verwenden - verwenden Sie einfach $ _COOKIE ['business_search'] und es wird den Wert zurückgeben. So konnten wir nur diesen Code verwenden:

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

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

-1. Dies ist eine sehr schöne Beschreibung von Cookies, aber die Frage wurde in Bezug auf das Drupal-Framework gestellt. Diese Antwort behandelt keine Sitzungen in Drupal und könnte zu Verwirrung bei der Integration führen. –

+1

Ich würde sagen, dat a -1 ist ein bisschen zu hart .. Ich fand die Antwort ziemlich hilfreich und diese in Verbindung mit der obigen Antwort hilft, einige Dinge zu klären. Ich würde nur Danke John sagen :) – Sbhambry

+0

Ich antwortete in Bezug auf das Drupal-Framework, und ich * habe * Sitzungen im ersten Absatz in Drupal besprochen. Zum Beispiel: "Sie können die Sitzung nicht verwenden, um Dinge für anonyme Besucher in Drupal zu speichern, da sie an das Benutzerobjekt gebunden ist." Also erkläre ich, wie man mit Cookies arbeitet, die mit anonymen Besuchern funktionieren. –

3

Wenn Sie Probleme haben, Ihre clientseitige Cookies immer in Drupal zu halten, versuchen Sie den optionalen Parameter für Pfad.

Beispiel:

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

Dann auf der nächsten Seite Lastausgang Cookies auf dem Bildschirm. Sie sollten Ihren Cookie in der Ausgabe sehen.

print_r($_COOKIE);

-oder mehr specifically-

print $_COOKIE['myCookieName'];

Prost!