Auslesen des angemeldeten Benutzers

  • Hallo,


    ich habe unter Joomla 3 eine Webseite in einem iFrame eingebunden, die den in Joomla eingeloggten User auslesen konnte.




    Leider scheint das unter Joomla 4 nicht mehr zu funktionieren, weil an dem angegebenen Ort

    /var/www/intranet/libraries/joomla/database/ die Datei "factory.php" nicht exstiert, bzw. es diesen Pfad so überhaupt nicht mehr existiert.


    Weis jemand hier, wie ich meine Anwendung unter Joomla 4 wieder zum laufen bekomme und den angemeldeten User auslesen kann?


    Danke im voraus.


    Gruß


    Dirk

  • Wenn du beispielsweise den "Sourcerer" von Regularlabs verwendest, könntest du ihn beispielsweise in einem Joomla-Beitrag so auslesen:


    PHP
     {source}
    <?php echo 'Willkommen > ' . $user->name . ' in deinem Account!';?>
    {/source}


    Und du möchtest, dass die im iFrame eingebundene Webseite den eingeloggten Jooma-User ausliest? Oder habe ich das falsch verstanden? Hast du mal einen Link, wo man sich das anschauen kann?

  • require_once JPATH_BASE.DS.'libraries'.DS.'joomla'.DS.'database'.DS.'/factory.php';

    Diese Zeile wird ja wohl in Joomla4 nicht benötigt oder ist irgendwo in deinem Code JDatabaseFactory in Verwendung ?


    Eventuell nützlich der Code als "Mustervorlage" dort:


    Joomla 4 -> Abfragen der SessionID schlägt fehl

  • Wenn du beispielsweise den "Sourcerer" von Regularlabs verwendest, könntest du ihn beispielsweise in einem Joomla-Beitrag so auslesen:


    PHP
     {source}
    <?php echo 'Willkommen > ' . $user->name . ' in deinem Account!';?>
    {/source}


    Und du möchtest, dass die im iFrame eingebundene Webseite den eingeloggten Jooma-User ausliest? Oder habe ich das falsch verstanden? Hast du mal einen Link, wo man sich das anschauen kann?

    Hallo,


    Ja, ich möchte mit einer per iFrame eingebundenen Seite den eingeloggten Joomla User auslesen. Ich benötige diese Daten für ein angebundenes Bestellsystem.

    Leider kann man sich das nicht anschauen, es ist eine Intranet Seite.


    Und welche Daten von den Usern liest du aus?

    Ich Benutze die Joomla ID, den Vor- und Nachnamen und Emailadresse. In dem Objekt sind aber quasi alle Daten eines Users, soweit ich weis. Benötigen tue ich aber nur ID, Vorname, Nachname, Email.


    Diese Zeile wird ja wohl in Joomla4 nicht benötigt oder ist irgendwo in deinem Code JDatabaseFactory in Verwendung ?


    Eventuell nützlich der Code als "Mustervorlage" dort:


    Joomla 4 -> Abfragen der SessionID schlägt fehl

    Hallo,


    und danke. Wenn ich den dort angegebenen Code bei mir ausführe bekomme ich folgenden Fehler:

    Code
    Warning: session_name(): Session name cannot be changed after headers have already been sent in /var/www/intranet/libraries/vendor/joomla/session/src/Storage/NativeStorage.php on line 405

    Einmal editiert, zuletzt von Indigo66 () aus folgendem Grund: 2 Beiträge von Dirk237 mit diesem Beitrag zusammengefügt.

  • Deine Details sind völlig ungenügend!

    Welcher Code wird in welcher Datei und in welchem Dateipfad abgespeichert oder wird er in einem Beitrag eingefügt und mit "Sourcerer" von Regularlabs benutzt?

    Wie wird der Code aufgerufen?


    Eventuell nützlich um auf den "Sourcerer" von Regularlabs verzichten zu können:


    Joomla-Modulstil zum Einbinden eigener PHP-Dateien nutzen – GHSVS-Dein Web mit Mehr
    Mit eigenem Modulstil + Joomla-Plugin "loadmodule" in Beiträgen eigenes PHP aus Dateien laden und Joomla-Framework ohne Extracode nutzen.
    ghsvs.de

  • Hallo,


    es handelt sich um ein iFrame.



    Ich verwende keinen Sourcerer.


    Ich habe eine test.php erstellt, diese liegt in Unterverzeichnissen des Ordners, in dem Joomla installiert ist var/www/intranet(hier liegt Joomla)/unterordern(hier liegen weitere Unterordner)/unterordner(hier liegt die->)/test.php.


    Der Inhalt ist der selbe wie aus dem Verlinkten Beitrag

    Diese Zeile wird ja wohl in Joomla4 nicht benötigt oder ist irgendwo in deinem Code JDatabaseFactory in Verwendung ?


    Eventuell nützlich der Code als "Mustervorlage" dort:


    Joomla 4 -> Abfragen der SessionID schlägt fehl

    Der Code sieht also so aus

    Der Code ist natürlich etwas angepasst, damit die relativen Verzeichnisse passen.


    Beim Aufrufen des iFrames über einen Menüpunkt kommt dann:

    Ich hoffe das ich damit einige offene Fragen beantworten konnte.


    Danke im voraus für die Hilfe.


    Grüße


    Dirk

  • Ich habe heute noch mal ein bisschen ausprobiert und konnte mit der test.php tatsächlich den Angemeldeten Joomla User auslesen. Ich habe auch herausgefunden das die obige Fehlermeldung von Joomla dann auftritt, sobald ich Bootstrap als CSS einbinde in meine PHP Anwendungen.

    Nehme ich Bootstrap raus, funktioniert meine Seite, sieht aber aus wie Hund ganz hinten.


    In anderen iFrames die ich auch über das Menü einbinde, geht Bootstrap einwandfrei.


    Was mache ich denn da falsch?



    Das ist die header.html die eingebunden wird in die per iFrame aufgerufenen php Files:

  • Da du das ganze ja ohnehin an einer Modulposition ausgeben willst, würde ich mir in diesem Fall deine umständliche und fehlerträchtige vorgehensweise ersparen und wie in #6 von mir bereits verlinkt vorgehen oder per eigenem Modul-Override. Per eigenem Modulstil oder eigenem Modul-Override kannst du auf einen großteil deines Codes verzichten.

    Es genügt ja dann wohl schon z.B. nachfolgender Code um die userid des aktuellen Benutzers zu erhalten:


    Code
    use Joomla\CMS\Factory;
    $userid = Factory::getUser()->get('id');

    usw.

  • Was mache ich denn da falsch?

    Du darfst die header.html erst später einbinden. Nachdem die Session schon initialisiert ist. Wenn man so eine Meldung bekommt heißt das, du hast zu früh ein echo "iregndwas" verwendet oder ähnlich. Halt irgendwas schon als Ausgabe geschrieben.


    Verwechseln darfst du nicht den angemahnten header mit einem <HEAD>-Block im HTML. 2 Paar Stiefel.


    Das ist übrigens auch gelegentlich der Grund, wenn man Debug und/oder error_reporting aktiviert hat. Da wird dann vielleicht das HTML für eine Warning ausgegeben, bevor der head sauber erstellt wurde. Manchmal irreführend.

  • In Joomla 4 hast du bessere und sicherere Möglichkeite um die Daten zu bekommen.


    Es gibt eine REST-API-Schnittstelle :)


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Um mal 2 Videos anzugeben.