-
JRequest::getVar() liest keine Umlaute aus Cookies
Liebe Gemeinde!
Kennt einer das Problem:
echo JRequest::getString('ReName','','COOKIE');
zeigt mir einen vorher gespeicherten Cookie an, aber statt der Umlaute kommen die berühmten Fragezeichenkaros. Schau ich mir im Browser selbst den gespeicherten Cookie an, sind die Umlaute aber korrekt gespeichert.
Auch die Methode
$mainframe =& JFactory::getApplication();
echo $mainframe->getUserStateFromRequest( "$option.ReName", 'ReName', '' );
bewirkt das Selbe (Keine Drastellung der Umlaute). Zuvor hatte ich die Variable "ReName" aus einem Formular via POST gesendet.
Die Funktion
echo JRequest::GetString('ReName','','POST');
zeigt hingegen die Umlaute an!
?
Danke für eure Hilfe!
rqueri
Geändert von rqueri (16.07.2010 um 09:35 Uhr)
-
-
Ich würde ja vermeiden, dass Klartexte direkt in Cookies gespeichert werden. Nutze einfach base64 (der einfache Weg) oder JSimpleCrypt (der edle Weg) um die Texte zu präparieren. Danach im Cookie speichern und beim Auslesen einfach wieder zurück wandeln.
-
Erhielt Danksagungen von:
-
Funktioniert
Danke für den Tipp! Das funktioniert!
Wahrscheinlich ist es keine elegante Lösung. Wenn Du hier noch eine Idee hast?:
Ich habe eine Komponente in J1.5 entwickelt, in der ich über mehrere Formulare Daten aus <input>-Feldern sammle und erst nach dem letzten Formular in die mySQL-DB speichere. Die Formulare befinden sich in mehreren HTML-Dateien, zwischen denen mit 'weiter' und 'zurück' navigiert werden kann. Daher muss ich die Nutzereingaben der einzelnen <input>-Felder vor jeder Seitennavigation speichern, um sie nicht allesamt jedesmal als versteckte Daten in einem POST mitschleppen zu müssen. Das Speichern mache ich mit Cookies.
Das ist aber umständlich bzw. aber mindestens sehr aufwändig. Ich habe hier:
http://docs.joomla.org/Tutorial:How_...tate_Variables
eine Möglichkeit gefunden, mit der man Variablen theoretisch in der User-Session speichern könnte. Da dies bei mir praktisch nicht ging, habe ich recherchiert und gelesen, dass Sessions in Joomla wohl nur im Backend unterstützt werden.
Danke und viele Grüße!
rqueri
-
-
Ich glaube JFactory::getSession() ist das was du suchst. getUserstateFromRequest() ist nicht ganz das richtige (würde aber auch funktionieren), da ist JSession aber um einiges handlicher mit seinen get/set/has und clear methoden. Einfach mal ein bisschen in der Datei (libraries/joomla/session/session.php) wühlen.
-
-
Danke Dir, das werde ich probieren. Besonders hilfreich fand ich Deinen Link zu wiki.joomla-nafu.de Ich habe bisher api.joomla.org als Informationsquelle genutzt, die aber leider meist zu geizig mit Infos (z.B. Art der Rückgabewerte im Fehlerfall) ist.
Das Thema kann man als gelöst betrachten. Dazu aber noch eine Bemerkung: der Schlüssel war nicht die Base64-Kodierung, sondern die damit verbundene UTF8-Kodierung. Joomla nutzt (standardmäßig?) den UTF8-Zeichensatz für HTML-Dokumente. Ich musste also, bevor ich Strings aus einer User-Eingabe in einem Cookie speichere, diesen in UTF8-encodieren. Danach konnte auch die Funktion JRequest::getString('ReName','','COOKIE'); die Umlaute richtig auslesen.
Da ich die Cookies via JS setze, brauchte ich dazu eine Funktion (utf8_encode, leicht im Netz zu finden).
Grüße!
rqueri
-
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
Foren-Regeln
Lesezeichen