+ Antworten
Ergebnis 1 bis 7 von 7

Thema: Frontend Session Mambot

  1. #1
    Gehört zum Inventar
    Registriert seit
    18.02.2005
    Beiträge
    8.841
    Bedankte sich
    85
    Erhielt 2.269 Danksagungen
    in 1.936 Beiträgen

    Standard Frontend Session Mambot

    Nachdem ich mich nun einige Zeit mit der Sessionverwaltung des Joomla! Cores beschäftigt
    habe, ist mir aufgefallen, dass im Frontend gar keine Session gestartet wird. Somit sind
    einige Funktionen der mosMainFrame Klasse im Frontend gar nicht nutzbar.
    Die Funktionen getUserStateFromRequest, getUserState and setUserState können mithilfe
    dieses Mambots auch im Frontend genutzt werden. Zudem ist selbstverständlich auch ein
    normales Sessionhandling möglich. Der ein oder andere, der vielleicht schon versucht hat
    mit der Joomla! Session im Frontend anzubandeln, hat vielleicht gar nicht bemerkt, dass
    im Frontend zu keiner Zeit eine Session gestartet wird.

    Es handelt sich hier lediglich um eine kleine Erweiterung für Entwickler. Wer gar nicht
    weiß wozu das gut ist, braucht das nicht und wird damit auch nicht wirklich etwas
    anfangen können.

    Eine Anmerkung, da dieses in der letzten Zeit vermehrt vorgekommen ist:
    Dieser Mambot ist Teil eines ganzes Paketes, das noch nicht veröffentlicht ist.
    Ich möchte nicht, dass der Mambot auf Downloadseiten etc. eingestellt wird oder
    anderweitig zum Download angeboten wird.

    Hinweise, Fragen, Kritik oder andere Ideen sind immer gern gesehen und werden
    freudig aufgenommen.

    Für Versionen J!1.0.x.

    Gruß
    ec


  2. #2
    Neu an Board Avatar von Bruno Pisarek
    Registriert seit
    26.08.2005
    Ort
    Berlin
    Alter
    48
    Beiträge
    6
    Bedankte sich
    1
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard

    Hi ec,

    Du bist mein Held des Tages!
    Ich danke Dir für die Erleuchtung und diesen genialen kleinen Bot!!

    Viele Grüße,
    Bruno

  3. #3
    War schon öfter hier
    Registriert seit
    02.09.2006
    Beiträge
    114
    Bedankte sich
    17
    Erhielt 43 Danksagungen
    in 30 Beiträgen

    Standard SESSION-Variable übergeben

    Hallo,

    bei meiner ersten Komponente möchte ich u.a. ein Diagramm im Frontend (und später Backend) ausgeben. Die Parameter-Übergabe habe ich per Session-Variablen mit einem Test-Script ausprobiert und funktioniert:
    diagramm_test.php:
    PHP-Code:
    $XWerte = array(123456789101112);
    $YWerte = array(100200300400500450350250150150110110);
    session_start();
    $_SESSION['xwerte'] = $XWerte;
    $_SESSION['ywerte'] = $YWerte;
    echo 
    "TEST Diagramm ausgeben";
    echo 
    "<img src='http://localhost/joomlabit/components/ueb_1/diagramm.php'>" 
    diagramm.php:
    PHP-Code:
    ...
    session_start();
    $XWerte $_SESSION['xwerte'];
    $YWerte $_SESSION['ywerte'];
    ... 
    Mit Joomla funktionierte das nicht, also habe ich laut diesem Thread den frontend_session_bot wie folgt verwendet:

    ueb_1.html.php:
    PHP-Code:
    //Test
    $XWerte = array(123456789101112);
    $YWerte = array(100200300400500450350250150150110110);
    //in session schreiben
    global $mainframe;
    $mainframe->setUserState'xwerte'$XWerte );  
    $mainframe->setUserState'ywerte'$YWerte ); 
    diagramm.php
    PHP-Code:
    //aus session holen
    global $mainframe;
    $XWerte $mainframe->getUserState'xwerte' );  
    $YWerte $mainframe->getUserState'ywerte' ); 
    Der bot ist published.

    Das Diagramm wird nicht angezeigt, was mache ich falsch ?
    Gruss! Joe
    Fortschritt ist die Entwicklung vom Primitiven über das Komplizierte zum Einfachen. (Antoine de St. Exupery)
    Gelöste Threads bitte markieren.

  4. #4
    Gehört zum Inventar
    Registriert seit
    18.02.2005
    Beiträge
    8.841
    Bedankte sich
    85
    Erhielt 2.269 Danksagungen
    in 1.936 Beiträgen

    Standard

    Wenn du dir das globale Array mit print_r oder var_dump ausgeben lässt wirst du
    sehr schnell dahinterkommen, was das Problem ist.

    Viele Grüße
    ec

  5. #5
    War schon öfter hier
    Registriert seit
    02.09.2006
    Beiträge
    114
    Bedankte sich
    17
    Erhielt 43 Danksagungen
    in 30 Beiträgen

    Standard Ich glaub ich seh den Wald vor lauter Bäumen nicht.

    Wenn du dir das globale Array mit print_r oder var_dump ausgeben lässt wirst du
    sehr schnell dahinterkommen, was das Problem ist.
    Naja, um ehrlich zu sein, nicht so ganz. Bei der aufrufenden Stelle habe ich mit print_r
    und var_dump gesehen, dass die Arrays gefüllt sind.
    In meiner <diagramm.php> ist aber keine Ausgabe möglich, zu Testzwecken habe ich
    diese mal mit <require> eingebunden, auch dann sind die Arrays gefüllt.
    Deshalb vermute ich, dass die globale Variable <$mainframe> ausserhalb des
    Gültigkeitsbereich liegt, sobald ich die php-Datei über
    PHP-Code:
    echo "<img src='http://localhost/joomlabit/components/ueb_1/diagramm.php'>" 
    "einbinde".

    Da ich weder mit SESSION-Variablen noch mit dem bot weitergekommen bin, habe ich
    nun mal 'ne Klasse erstellt (Attribute XWerte und YWerte), sowie Methoden zur Ausgabe.
    Das Problem mit der Parameterübergabe scheint gelöst zu sein, da mein Testscript funktioniert.
    Allerdings erhalte ich nun die Fehlermeldung:
    >>Die Grafik ... kann nicht angezeigt werden, da sie Fehler enthält.<<
    sobald ich das in meine Komponente integrieren möchte.

    Nehme ich die header()-Anweisung aus der <diagramm.php> raus, wird jedoch keine
    Fehlermeldung angezeigt, sondern wie erwartet viele viele Ascii-Zeichen.

    Irgendwie ist heute (für mich) kein guter Tag.

    Kannst Du mir bitte noch einen Tip geben ? Danke.
    Gruss! Joe
    Fortschritt ist die Entwicklung vom Primitiven über das Komplizierte zum Einfachen. (Antoine de St. Exupery)
    Gelöste Threads bitte markieren.

  6. #6
    Gehört zum Inventar
    Registriert seit
    18.02.2005
    Beiträge
    8.841
    Bedankte sich
    85
    Erhielt 2.269 Danksagungen
    in 1.936 Beiträgen

    Standard

    PHP-Code:
    <?php
    define
    ('_VALID_MOS'1);
    define('J_ROOT_PATH'dirname(dirname(dirname(__FILE__))));

    require_once(
    J_ROOT_PATH.'/configuration.php' );
    require_once(
    J_ROOT_PATH.'/includes/joomla.php' );
        
    $mainframe = new mosMainFrame($databasenullnull);
    $mainframe->initSession();

    ?>
    Möchte man nicht über das mainframe Objekt gehen, was in diesem Fall ggf. auch
    Sinn macht, sollte man immer noch über die normale Session zugreifen können,
    sofern das Objekt nicht zur Verfügung steht. Man muss ja mainframe gar nicht
    verwenden, sondern kann die Session auch ganz "normal" nutzen.

    Wichtig ist zunächst nur, dass der Mambot den globalen Start der Session einleitet,
    damit man nicht nach dem Senden des headers die Session starten muss etc.

    Also einfach
    PHP-Code:
    $_SESSION['key'] = 'var'
    und
    PHP-Code:
    echo $_SESSION['key']; 
    verwenden.

    Grüße
    ec

  7. Erhielt Danksagungen von:


  8. #7
    War schon öfter hier
    Registriert seit
    02.09.2006
    Beiträge
    114
    Bedankte sich
    17
    Erhielt 43 Danksagungen
    in 30 Beiträgen

    Standard

    Hallo ec,
    vielen Dank für deine Hilfe.

    Ich bin leider noch nicht soweit, um das jetzt alles komplett zu verstehen.
    Trotzdem habe ich eine Lösung gefunden, allerdings bin ich nicht so glücklich darüber.
    Knackpunkt ist für mich die dynamische Bilderzeugung in Abhängigkeit von den
    übergebenen Parametern, dabei scheitere ich an der direkten Ausgabe an den
    Browser und habe vorerst den Umweg über die Ausgabe als PNG-Datei gewählt.

    Evtl. finde ich am Wochenende die notwendige Ruhe, um das Ganze nochmals
    durchzuspielen.

    Schönes WE.
    Gruss! Joe
    Fortschritt ist die Entwicklung vom Primitiven über das Komplizierte zum Einfachen. (Antoine de St. Exupery)
    Gelöste Threads bitte markieren.

+ Antworten

Lesezeichen

Berechtigungen

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