Wie greift man denn dann auf die globalen Variablen zu?
Logindaten an PHP übergeben
so zum beispiel...
["GLOBALS"]["TSFE"]["fe_user"]["user"]["username"] = benutzername
Und wenn ich einfach nur den aktuellen benutzernamen ausgeben möchte?
Der ECHO-Befehl will dabei natürlich nicht.
echo ["GLOBALS"]["TSFE"]["fe_user"]["user"]["username"];
oder so?
was schreibe ich denn...
so...
$var = $GLOBALS["TSFE"]["fe_user"]["user"]["username"];
Hmmm,...
es wird noch kein Name angezeigt.
Ist das denn die Typo3-Standardkonfiguration?
Ich hab nichts geändert...
Hab's hingekriegt...
Für alle die es interessiert:
<?php
$name = $GLOBALS["TSFE"]->fe_user->user["username"];
echo $name;
?>
ja genau, TSFE und fe_user sind Objekte.
Nächstes Problem!!!
Wie übergebe ich diese Daten an einen Inline Frame im Typo3?
Hat jemand dazu ne Idee?
Das gleiche Problem tritt übrigens auch auf, wenn man eine Externe URL ansteuert. Wenn man dann versucht auf die Variablen zuzugreifen, sind diese verschwunden...
Hat wirklich niemand ne Idee zu den Logindaten???
Als ziemlich heftigen Workaround stelle ich mir folgendes vor:
Wenn ein FE-User eingeloogt ist, gibt es eine globale Variable (im Cookie gespeichert), die per PHP abzufragen ist: [fe_typo_user]. Ist eine Variable in der Art "6e8d5846ae"
Ist der User tatsächlich eingeloggt, so gibt es in der Tabelle fe_session einen Eintrag mit dieser Kennung sowie der User-ID, außerdem noch BLOB-Data, von der ich im Momemt nicht weuiß, wann da was hinterlegt wird.
Über diese User-ID könnte man dann im externen PHP-Skript (im Inline-Frame) dann aus der fe_users wiederum den Usernamen ziehen. Solange kein FE-User eingelogt ist, gibt es keine Variable fe_typo_user, bzw. es gibt keinen Eintrag in fe_Session.
Werde damit mal experimentieren... aber wenn noch jemandem eine sauberere Lösung einfällt: Bitte posten. Danke!
oliver29
Wie ich Benutzername in einem Inline-Frame verwende:
1. Eine Seite anlegen, die nicht im Menü auftaucht("not in menu"). Diese Seite bekommt ein eigenes Template, das nur darin besteht, den INhalt dieser Seite auf einer blanken,weißen Seite auszugeben. Also kein Menu oder sonstiges Content des Haupttemplates.
In dieser Seite ein Inhaltselement Typ "PHP Skript" anlegen (evtl. die Extension für externe PHP-Skripts installieren/aktivieren)
Das Skript auf dieser Seite sieht folgendermaßen aus:
<?php
$name = $GLOBALS["TSFE"]->fe_user->user["username"];
include "fileadmin/test1.inc";
?>
Es inkludiert also das eigentliche PHP-Skript, welches dann auf den Usernamen über die Variable $name zugreifen kann.
In diesem Beispiel kann also im Skript test1.inc frei mit der Variable $name gearbeitet werden. Alles, was dieses Skript macht/ausgibt, passiert dann im Inline-Frame.
2. Auf der Seite, in der der Inline-Frame (Extension IFrame) stehen soll, ein entsprechende Inhaltselement "Inline Frame" anlegen und als URL die im ersten Schritt angelegte Seite angeben.
Gibt es neben diesem (umständlichen) Verfahren evtl noch eine andere Möglichkeiten, eine kleinere Applikation in PHP unterhalb/innerhalb von Typo3 zu nutzen, die einerseits den eingeloggten Nutzer übernimmt und andererseits selber auch funktionieren Links/Posts erzeugt? (ohne jetzt eine eigene Extension bauen zu müssen...)
oliver29
Tausend Dank für diese überaus benutzerfreundliche Antwort...
... ich werd's mal versuchen!
Wie muß denn nochmal der Code dafür aussehen, wenn man nur den Inhalt angezeigt haben möchte? Also ohne Layoutvorlage....
Sorry für diese Anfängerfrage.
Im Setup des Templates:
# Default PAGE object:
page = PAGE
page.typeNum = 0
page.10 < styles.content.get
Und bei "include static" ("Click here to edit whole template record") dann noch "content (default)" hinzufügen.
Gruß
oliver29
Hallo,
ich habe mit diesen äußerst hilfreichen Tips ein externes Skript in einem Inline Frame eingebunden. klappt auch ganz toll bis auf ein Problem:
Wenn ich in dem eingebundenen Skript eine Funktion deklariere bricht es mit folgender Fehlermeldung ab:
Fatal error: Cannot redeclare meinefunktion() (previously declared in E:xampphtdocsfileadminmeinexternesskript.php:50) in E:xampphtdocsfileadminmeinexternesskript.php on line 50
Ich würde mich sehr freuen wenn mir jemand helfen könnte diesen Fehler zu beheben.
Viele Grüsse
Hendrik
Hi!
Scheinbar inkludierst Du Dein Script doppelt. Daher entweder dafür sorgen, dass dies nicht passiert oder ...
if (!function_exists('meinefunktion')) {
function meinefunktion() {
...
}
}
CU
maxhb
Hallo,
vielen Dank schonmal. Ich wüßte halt nicht wo ich es doppelt inkludiert habe. Ich weiß nicht ob du den ganzen Thread gelesen hast, wüßtest du eine Stelle an der das passieren könnte?
An dem eingebundenen Skript habe ich nichts geändert, wenn ich es einzeln aufrufe funktioniert es...
Vielen Dank
Hendrik
Hallo,
ich habe die meisten Probleme mit dem Einbinden per Inlineframe in den Griff bekommen, aber ein massives Problem habe ich leider immer noch:
Innerhalb des Inlineframes funktionieren meine Datenbankzugriffe nicht richtig, anscheinend versucht mein Script auf eine Typo3-Tabelle zuzugreifen oder es greift auf die richtige Tabelle aber etwas stimmt mit der RessourceId, hier scheint es Probleme mit Werten aus Typo3 zu geben.
Wenn ich das Script direkt, ohne den "Umweg" über das Typo3-Frontend, aufrufe, funktioniert alles wunderbar.
Ich habe auch schon mal alle Variablennamen, jedenfalls die die sich auf den DB-Kram beziehen, umbennant um eventuellen Problem in diesem Bereich zu verhindern, leider hat das aber auch nichts geändert.
Bei meiner Fehlersuche ist mir aufgefallen, dass in dem Quelltext meines Inlineframes nicht nur der Inhalt von mir angegeben Inhalt steht sondern von Typo3 erzeugt Daten mit ausgeliefert werden, unter anderem Styles. Läßt sich das abstellen? Ich verwende Diese Konstruktion ja gerade eben um dieses Skript von Typo3 "fernzuhalten".
Falls jemand eine Idee hat wäre ich ihm ewig dankbar...
Hendrik