+ Antworten
Ergebnis 1 bis 5 von 5

Thema: [Gelöst]:J3.3.6 session daten werden gekürzt bei com_ajax einsatz

  1. #1
    War schon öfter hier
    Registriert seit
    24.09.2008
    Beiträge
    140
    Bedankte sich
    27
    Erhielt 5 Danksagungen
    in 5 Beiträgen

    Standard [Gelöst]:J3.3.6 session daten werden gekürzt bei com_ajax einsatz

    Bin heute auf einen tollen Mechanismus über die com_ajax Komponente gestoßen und habe mir zum Verstehen und Ausprobieren das zugehörige Demo-Modul mod_session (https://github.com/Joomla-Ajax-Inter...Session-Module) geholt.

    Der Mechanismus funktioniert prima, allerdings habe ich einen Nebeneffekt, den ich mir nicht erklären kann:

    Die Strings werden in der session Variablen ohne whitechars bzw. Sonderzeichen abgelegt. So landet z.B. der String aus dem Data-Eingabefeld des Formulars
    "harry träumt §$?.this is the end"
    in der session als
    "harrytrumt.thisistheend"
    .

    Bei meinen Analysen hab ich jetzt mal in der com_ajax Datei ajax.php etwas session code eingefügt:
    PHP-Code:
               if (method_exists($class$method 'Ajax'))
                {
                    try
                    {
                        
    $session     JFactory::getSession();
                        
    $sessionData $session->get('data');
                        
    $sessionData['ajax_input_name'] = $input->get('name');
                        
    $sessionData['ajax_sessi_name'] = $sessionData['name'];
                        
    $sessionData['ajax_const_name'] = 'My constant string';
                        
    $session->set('data'$sessionData);
                       
                        
    $results call_user_func($class '::' $method 'Ajax');
                    } 
    Das Ergebnis war, daß alle 3 session variablen um Leerzeichen und Sonderzeichen gekürzt waren. Ich versteh das nicht.

    Hat jemand eine Idee dazu oder selbst schon mal diese Erfahrung gemacht? Oder kann das mal bei sich ausprobieren? Wär ja auch schon eine Info, ob das bei Euch auch passiert

    Umgebung ist lokaler Server
    PHP-Version 5.4.20
    Webserver Apache/2.4.6 (Linux/SUSE)
    OS: OpenSUSE 13.1 (x86_64)

    Übrigens extra nochmal ein frisches 3.3.6 ohne Beispiele aufgesetzt und nur das Modul installiert
    => gleiches Ergebnis



    Update: Kurze Anleitung, wenn jemand bereit ist, es auszuprobieren:
    • mod_session von github holen (link oben) und installieren
    • an irgendeiner position anzeigen lassen
    • im Frontend den String ins Eingabefeld kopieren und auf "add" klicken
    • Den Ergebnisstring darunter vergleichen
    Geändert von gorgonz (23.01.2015 um 13:24 Uhr) Grund: Anleitung nachgereicht

  2. #2
    War schon öfter hier
    Registriert seit
    24.09.2008
    Beiträge
    140
    Bedankte sich
    27
    Erhielt 5 Danksagungen
    in 5 Beiträgen

    Standard

    Kleiner Fortschritt. Ich hatte mich ja auf die Ausgaben des mod_session gestützt. Inzwischen ist mir etwas Unerwartetes aufgefallen:

    Es gibt einen Unterschied zwischen den Strings, die ich mit print_r($session) sehe und den Extrakten print_r($sessionData) bzw. print_r($results) (in ajax.php).

    Beide Extrakte haben den gekürzten String, aber die Variablen in der ganzen session sind noch richtig.

    Nachdem ajax.php den sessiondata Extrakt vom Modul mod_session geliefert bekommt, brauchen wir ajax.php nicht weiter untersuchen. Das Problem ist der sessionData Extrakt aus dem Modul.

    Ok, einfach Schluss für heute ;-)

  3. #3
    War schon öfter hier
    Registriert seit
    24.09.2008
    Beiträge
    140
    Bedankte sich
    27
    Erhielt 5 Danksagungen
    in 5 Beiträgen

    Standard Nachfrage

    Nachdem sich 3 Tage nix tut:

    falsche forenrubrik?
    zu ungenau oder verwirrend?
    oder einfach keine Ahnung ;-)

  4. #4
    Hat hier eine Zweitwohnung Avatar von Matrikular
    Registriert seit
    14.01.2006
    Ort
    Nienburg
    Alter
    40
    Beiträge
    1.440
    Bedankte sich
    219
    Erhielt 593 Danksagungen
    in 441 Beiträgen

    Standard

    Wenn du von mod_session als dazugehöriges Demo-Modul sprichst, dann ist das so nicht ganz richtig. Das Modul ist wirklich nicht mehr als eine Demo und nicht representativ für die Verarbeitung von Session Variablen oder Ajax Requests. Es kümmert sich beispielsweise nicht um die Maskierung / Filterung der Eingaben. So steht in Zeile ~ 33 der Helper-Klasse folgendes:
    PHP-Code:
    [...]
    if (
    $input->get('cmd')) {
        
    $cmd  $input->get('cmd');
        
    $data $input->get('data');
    [...] 
    Der default-Filter der Methode get ist "cmd" (nicht zu verwechseln mit dem get('cmd')) und der Grund dafür, warum in deinem Versuch alle Sonderzeichen rausgefiltert werden. Eingaben wie diese werden in der Praxis oft über die Methode getUserStateFromRequest verarbeitet (Session/State). Aber auch hier brauch man das Rad nicht neu zu erfinden. Schau dazu einfach mal in die Eltern-/Legacy-Klassen.

    Gruß
    Sven
    Geändert von Matrikular (18.01.2015 um 14:27 Uhr)
    Joomla! Development? Hire me! | Teach Yourself Programming in Ten Years

  5. Erhielt Danksagungen von:


  6. #5
    War schon öfter hier
    Registriert seit
    24.09.2008
    Beiträge
    140
    Bedankte sich
    27
    Erhielt 5 Danksagungen
    in 5 Beiträgen

    Standard

    Oh Mann!

    Erstmal vielen Dank, daß Du Dir die Zeit dafür genommen hast, Sven. Klar, jetzt, wo Du es schreibst ;-) ...

    Hey, Du hast mir einen guten Schritt weiter geholfen :-)

+ Antworten

Berechtigungen

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