JFactory getUser liefert unter Safari keinen Wert

  • Hallo Forengemeinde


    Ich schreibe aktuell ein Script für meinen Verein, bei dem ich den aktuell angemeldeten User benötige. Nach einigem hin und her habe ich das soweit auch hinbekommen. Nun ist es aber so, dass das Script unter IE, FF und Chrome (bei mir) funktioniert, sprich eine User-ID liefert, unter Safari (Mac) allerdings nicht (auf dem iPhone hingegen schon).
    Bei einem Vereinskollegen liefert das Script hingegen weder unter Chrome (win) noch Safari (iPhone) Werte zurück.


    Anbei ein Auszug:



    Weiß jemand Rat? Am Script scheint es mir eigentlich nicht zu liegen, am Browser aber auch nicht. :S?(

  • Hallo firstlady


    Vielen Dank für deine Rückmeldung! Ich habe das Script nach deiner Vorlage angepasst, aber keine Änderung. Heute klappt es bei mir auch im IE nicht mehr, was gestern noch funktioniert hat (unabhängig von der o.g. Änderung). Chrome unter Win geht noch. ?(


    Noch kurz zum Umfeld:
    Ich melde mich in Joomla an, dadurch wird ein neuer Menü-Zweig sichtbar, der nur für Mitglieder gedacht ist. Dort ist dann ein externer Link zu meinem Script enthalten.
    Irgendwie scheint er bei diesem Sprung die Session zu verlieren, aber eben in irgendeiner Form in Abhängigkeit zum Browser, das aber auch nicht wirklich konstant und nachvollziehbar.

  • Dieses Script geistert seit 2009 durchs Netz ..
    Ich verwende keine externen scripte, daher bewege ich mich da auf dünnem Eis. Aber schau die die Dokumentation hier an,
    die auf die Verwendung der Session Variablen eingeht.
    https://docs.joomla.org/How_to…set_by_an_external_script


    So allgemein gefragt: Wäre ein Plugin nicht die bessere Lösung?

  • Danke für den Link, den werde ich mir gleich mal anschauen.
    Ich bin in Joomla noch nicht lange unterwegs und habe mich Plugins noch nicht beschäftigt. Aber das werde ich dann mal machen.
    Ein neues Phänomen: ich nutze 2 externe php-Scripte, in denen ich den aktuell angemeldeten User auslese. Beide sind 100% identisch was das Lesen des Users angeht (beide wie oben beschrieben angepasst). Das eine liefert mir aktuell einen Wert für die User-ID, das andere nicht. 8o

  • Ja, das bin ich.
    Wie im Post zuvor beschrieben habe ich jetzt sogar die Situation, dass ich im Frontend angemeldet bin, der Aufruf des einen Scripts eine User-ID zurück liefert, der Aufruf des anderen Scripts aber nicht. Beide nutzen aber absolut identischen Code (copy/paste).
    Ich hab' keinen Plan, wie das passieren kann. Ich denke, ich werde das Lesen in eine separate Datei packen und die Leserei in eine Funktion packen, die ich im Bedarfsfall aufrufe. Mal sehen, ob sich dadurch etwas ändert. Dass es zumindest mal überall gleich läuft und nicht mal so, mal so.

  • Ok, neue Erkenntnis: ich habe die den Code in eine externe Funktion gepackt mit den gleichen Ergebnis. IE unter WIN liefert sowohl beim einen als auch beim anderen Script ein Ergebnis.
    Unter Chrome nur das Eine. Was mir jetzt noch als Unterschied aufgefallen ist: das, das funktioniert, wird direkt als externer Link aufgerufen, das andere, was nichts liefert, ist als iframe-Wrapper eingebunden. Wenn ich es direkt aufrufe, kommt auch hier ein Ergebnis.
    Unter Safari macht's allerdings keinen Unterschied, hier kommt sowohl im iFrame als auch direkt "0" als User.
    Warum klappts beim IE als iFrame, bei Chrome aber nicht? Das würde mir schon weiterhelfen.

  • Zitat

    Was steckt denn eigentlich hinter den externen Scripts? Eine komplette Anwendung oder so oder einfach nur "paar geheime Infos", die ausgegeben werden sollen?


    Ist das wichtig? Aber zur Beruhigung, dass niemand Sorge hat, mir bei irgendwelchen dunklen Machenschaften zu helfen: spiteful:*
    Ich habe eine Datenbank, in die nach jedem Flugtag unseres Segelflugvereins die Flüge der Mitglieder aus unserem Startleiter-Notebook importiert werden. Den Mitgliedern wollen wir ein elektronisches Flugbuch im Mitgliederbereich anbieten. Dazu möchte in nun eben den angemeldeten User auslesen, um nur die Flüge des eben angemeldeten Users auszulesen.
    Das andere Script zeigt unsere Flugbetriebseinteilung für das komplette Jahr. Hier soll der User, der angemeldet ist, seinen Namen in der Einteilung in rot dargestellt bekommen, um auf einen Blick zu sehen, an welchen Tagen er Dienst hat.


    Zitat

    Und iFrame kann so nie klappen.


    Dem kann ich widersprechen, da genau das im IE klappt. Die Flugbetriebseinteilung-PHP-Anwendung habe ich als iFrame-Wrapper in die Joomla-Seite eingebunden und bekomme da einen User geliefert.

  • Die Frage diente der Beurteilung, ob deine "unsägliche" Krücke mit externen Scripten zu arbeiten, überhaupt nötig ist. Wenn du bloß was darstellen möchtest, nichts einzustellen, einzugeben, sonstwas ist, ist sie es garantiert nicht, da es genug fertige Erweiterungen und andere simple Methoden gibt, sich in bereits korrekt geladenem Joomla-Framework und bestehender Session problemlos und browserübergreifend ein eigenes Script nachzuladen.
    Du versuchst unnötigerweise das Rad neu zu erfinden und verplemperst Zeit.
    Da ich ein Mimöschen bin und auf zickige Antworten zu problemlösungsorientierten Rückfragen bekanntermaßen nervös reagiere, bin ich hier raus ;)
    BTW: Es spricht nicht für den IE, wenn innerhalb eines IFrames die Userdaten der selben Session des Hauptframes problemlos auslesbar sind. Denk mal weiter, wenn du nur mit ID prüfst...

  • @ Re:Later
    Ich hatte es beim Schreiben schon befürchtet, dass es falsch aufgefasst wird. Es war definitiv nicht zickig sondern eher ironisch gemeint. Deine Rückfrage ist absolut berechtigt und zur Problemlösung sicher dienlich. Daher auch gleich meine Entschuldigung hinterher in der Hoffnung, dass du wieder rein kommst
    Natürlich wäre die Nutzung von Standards viel eleganter und wahrscheinlich auch einfacher, nur bin ich eben - wie oben geschrieben - sehr neu in Joomla unterwegs.
    Hat mir evtl. jemand einen Tipp, wie ich Daten mittels eigenem Script aus einer eigenen mySQL-DB auf Basis des angemeldeten Users auslesen kann? Also das Lesen und aufbereiten selbst steht, funktioniert... passt. Nur brauche ich eben den aktuellen User.