Drupal Cookie Modul - bitte testen
Eingetragen von quiptime (4972)
am 13.12.2008 - 21:08 Uhr in
am 13.12.2008 - 21:08 Uhr in
Eine Recherche zum Thema Cookie hat ergeben das Drupal keine Funktion ala
drupal_cookie()
kennt.
Um Missverständnisse auszuschliessen. Ich rede von einer einfachen Cookie Funktion ohne Session Feature. Die Funktion soll es ermöglichen, ähnlich dem Cookie Plugin von jQuery, bei der Arbeit mit Drupal in einfacher Form Cookies zu verwenden.
Wenn meine Recherche-Erkenntnisse zum Thema Cookie Funktion in Drupal unvollständig sein sollten oder mir Jemand weiterführende Tipps zu dem Thema geben kann dann bitte ich um Infos bzw. Hinweise.
Danke.
Sollte ich richtig liegen werden ich ein Cookie Modul entwickeln.
- Anmelden oder Registrieren um Kommentare zu schreiben
Drupal Cookie Modul
am 13.12.2008 - 21:42 Uhr
Cookies können schon jetzt mit
setcookie()
gesetzt und über$_COOKIES
wieder ausgelesen werden.Eine Integration in Rules (bzw. Workflow-NG, Trigger und was es noch an ähnlichen Modulen gibt) wäre aber wahrscheinlich interessant.
Aber eigentlich benutze ich Cookies nur dazu, die Session-ID zu speichern.
--
@traxer, ist schon klar das
am 13.12.2008 - 22:39 Uhr
@traxer,
ist schon klar das man die PHP Funktion setcookie() verwenden kann. Ich meine eine Drupal-Funktion die intern setcookie() verwendet.
Ich benötige Cookies nicht im Zusammenhang mit Sessions. Ähnlich der "Zustandsverwaltung" von jQuery Event-Aktionen mittels des jQuery Cookie-Plugin brauche ich Cookie-Funktionalität mit PHP.
Beispiele für "Zustandsverwaltung" von jQuery Event-Aktionen:
Der Toogle-Zustand einer Sidebar wird gespeichert.
Ein Font-Resize der Website wird gespeichert.
Ähnliche Beispiele will ich, im Zusammenhang mit jQuery-Ajax-Aktionen, PHP basiert handhaben.
Ausgangspunkt dabei ist beispielsweise,
das ich Ajax-Output "zustandsabhängig" generieren will und dabei nicht eine unmittelbar vorher abgelaufene jQuery-Event-Aktion verwenden will.
Ein anderes Beispiel ist,
das ich auf den Verlauf einer Abfolge von jQuery-Ajax-Aktionen reagieren will um am Endpunkt des Verlaufes einer Abfolge der Aktionen differenziert Ajax-Inhalte ausgeben zu können die auf unterschiedliche Verläufe reflektieren.
Im Zusammenhang der Art voran genannter Beispiele benötige ich gar keine Session-Funktionalität. Im Gegenteil - dadurch könnten sich unter Umständen sogar Sicherheitsprobleme ergeben.
-------------
quiptime
Organize Your Web. GbR coming soon.
Da geht noch was.
Drupal Cookie Modul "cookie-5.x-1.x-dev" - bitte testen
am 14.12.2008 - 16:56 Uhr
Hier eine 1. Version des Cookie Modul.
Ich bitte um Test, Meinungen, Kommentare oder/und Verbesserungsvorschläge.
-------------
quiptime
Organize Your Web. GbR coming soon.
Da geht noch was.
Muy dificil
am 17.12.2009 - 20:44 Uhr
Ein Jahr später.
Ich habe mir Dein Script angesehen und festgestellt, dass Du zwar eine klare Vorstellung davon hast, wie das Cookie gesetzt wird, aber nicht, wie es in Drupal zur Wirkung kommt. Ich schätze es wirkt nicht.
Ich habe selbst ein Modul geschrieben, das ein Cookie verwendet und "it was a pain in the ass".
Zunächst ist die Steuerung des Cookies in eine Funktion der Form hook_init zu verlegen (in Deinem Fall auf drupal_cookie_init). Diese Funktion wird jedesmal aufgerufen, wenn/bevor Drupal eine Seite anzeigt. Aber jetzt beginnen die Schwierigkeiten. Die hängen damit zusammen, dass PHP ein Präprozessor ist. Nehmen wir an, es gibt ein Formular mit einem Radio Button und das Cookie soll sich die Position merken.
Die hook_init Prozedur wird das erste Mal durchlaufen und das Formular erscheint mit der Default Einstellung.
Der User verstellt den Button und das Formular wird submitted.
Damit ist der Zug abgefahren in dieser Runde ein Cookie zu setzen, denn die hook_init Routine ist durch.
Also eine weitere Runde für setcookie. Aber jetzt ist das Cookie noch nicht verfügbar, weil $_Cookie noch leer ist.
Also eine letzte Runde.
Eine weitere Schwierigkeit taucht auf, wenn Cookies nur auf einen bestimmten Pfad (z.B. /node/) beschränkt werden sollen. Wenn Drupal nämlich in einem Unterverzeichnis abgelegt ist, sind die Unterverzeichnispfade zusätzlich zu berücksichtigen.
Und zum Schluss noch die Bemerkung: nicht vegessen den Cache vorher auszuschalten mit cache_clear_all(). Je nachdem wie das System konfiguriert ist, passiert sonst nichts.
Ich hoffe, dass jetzt klar ist, warum es drupal_cookie() so nicht geben kann. Es liegt daran, dass das Setzen eines Cookies keine Funktionalität sondern ein Ablauf mit mehreren Events ist.