+ Antworten
Ergebnis 1 bis 5 von 5

Thema: JRequest::getVar() liest keine Umlaute aus Cookies

  1. #1
    Neu an Board
    Registriert seit
    15.07.2010
    Beiträge
    3
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard 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)

  2. #2
    Verbringt hier viel Zeit
    Registriert seit
    24.01.2006
    Beiträge
    594
    Bedankte sich
    108
    Erhielt 359 Danksagungen
    in 203 Beiträgen

    Standard

    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.

  3. Erhielt Danksagungen von:


  4. #3
    Neu an Board
    Registriert seit
    15.07.2010
    Beiträge
    3
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard 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

  5. #4
    Verbringt hier viel Zeit
    Registriert seit
    24.01.2006
    Beiträge
    594
    Bedankte sich
    108
    Erhielt 359 Danksagungen
    in 203 Beiträgen

    Standard

    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.

  6. #5
    Neu an Board
    Registriert seit
    15.07.2010
    Beiträge
    3
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    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

+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein