|
View:
New views
5 Messages
—
Rating Filter:
Alert me
|
|
|
eingeloggten FE User an externes PHP script übergebenHallo Profis ;-)
Ich bin gerade dabei für unser Firmenintranet einen Formularparser zu erstellen, später wird daraus evtl. auch eine Extension werden, wenn ich weit genug damit fortgeschritten bin.. Das ganze sieht so aus, daß im Backend ein HTML Page objekt mit dem Formular erstellt wurde. Aus diesem Formular werden die Daten per javascript, genauer ajax.Request (prototype) an ein PHP Script übergeben, welches unter fileadmin/PHP/ liegt und die Formulardaten weiterverarbeiten soll -> DB eintrag, valierung, etc. Als Teil dieser Formulardaten soll außerdem der eingeloggte FE-User an das Script übermittelt werden. Meine Idee war zunächst ihn in einem <input type="hidden"> an das PHP script zu übermitteln, also beim Aufbau des HTML Formulars quasi schon ausgelesen zu haben und anschließend nur noch über den Request zu übertragen. Wird nicht funktionieren, da es sich wie gesagt um ein HTMl Page Objekt handelt, in welchem ja kein php ausführbar ist.. OK, also warum das ganze also nicht im PHP Script abarbeiten, dachte ich.. Versucht habe ich das mittels //PHP snippet $antragsteller = GLOBALS['TSFE']->fe_user->user['username']; woraufhin mir nichts in der Variable $antragsteller abgelegt wird, was wohl daran liegt, daß das externe PHP script keinen Zugriff auf die GLOBALS hat, also habe ich versucht wie in einer extension die entsprechende t3lib mittels //PHP snippet require_once(PATH_t3lib."class.t3lib_tcemain.php"); für das Script verfügbar zu machen. Allerdings bekomme ich daraufhin nur die entsprechende Fehlermeldung, daß das Script nicht gefunden werden kann: //Errormsg [function.require-once]: failed to open stream: No such file or directory Ich schätze mal dahinter liegt ein kleiner Logikfehler meinerseits und deswegen wende ich mich an euch, da ich nicht weiß, wie ich die libs meinem externen Script sonst verfügbar machen soll..die absolute Pfadangabe zur lib schlägt natürlich auch fehl, da in der lib ja noch weitere libs includiert werden, zu denen dann logischerweise der pfad nicht mehr stimmt.. Danke für die Aufmerksamkeit : ) Gruß Torsten _______________________________________________ TYPO3-german mailing list TYPO3-german@... http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german |
|
|
Re: eingeloggten FE User an externes PHP script übergebenAm Fri, 06 Nov 2009 14:11:28 +0100 schrieb Torsten Dörrenbächer:
> Hallo Profis ;-) > > Ich bin gerade dabei für unser Firmenintranet einen Formularparser zu > erstellen, später wird daraus evtl. auch eine Extension werden, wenn ich > weit genug damit fortgeschritten bin.. > > Das ganze sieht so aus, daß im Backend ein HTML Page objekt mit dem > Formular erstellt wurde. > > Aus diesem Formular werden die Daten per javascript, genauer > ajax.Request (prototype) an ein PHP Script übergeben, welches unter > fileadmin/PHP/ liegt und die Formulardaten weiterverarbeiten soll -> DB > eintrag, valierung, etc. > > > Als Teil dieser Formulardaten soll außerdem der eingeloggte FE-User an > das Script übermittelt werden. > > Meine Idee war zunächst ihn in einem <input type="hidden"> an das PHP > script zu übermitteln, also beim Aufbau des HTML Formulars quasi schon > ausgelesen zu haben und anschließend nur noch über den Request zu > übertragen. > > Wird nicht funktionieren, da es sich wie gesagt um ein HTMl Page Objekt > handelt, in welchem ja kein php ausführbar ist.. PHP nicht, aber durch PHP vorbereitetes Javascript: erinnert mich an meine erste Extension: formfill. hat zwar kein manual, aber ein readme: http://typo3.org/extensions/repository/view/piphi_formfill/current/info/ README.txt/ bernd -- http://www.pi-phi.de/cheatsheet.html _______________________________________________ TYPO3-german mailing list TYPO3-german@... http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german |
|
|
Re: eingeloggten FE User an externes PHP script übergebenHi Bernd,
ein Eingeloggter User müste einen Cookie Übermitteln. und dann könntest du nachgucken ob eine entsprechende session in der Typo3 DB existiert. (vieleicht kannst du dafür sorgar die entsprechenden Typo3 Classen initieren. gruss chris bernd wilke schrieb: > Am Fri, 06 Nov 2009 14:11:28 +0100 schrieb Torsten Dörrenbächer: > >> Hallo Profis ;-) >> >> Ich bin gerade dabei für unser Firmenintranet einen Formularparser zu >> erstellen, später wird daraus evtl. auch eine Extension werden, wenn ich >> weit genug damit fortgeschritten bin.. >> >> Das ganze sieht so aus, daß im Backend ein HTML Page objekt mit dem >> Formular erstellt wurde. >> >> Aus diesem Formular werden die Daten per javascript, genauer >> ajax.Request (prototype) an ein PHP Script übergeben, welches unter >> fileadmin/PHP/ liegt und die Formulardaten weiterverarbeiten soll -> DB >> eintrag, valierung, etc. >> >> >> Als Teil dieser Formulardaten soll außerdem der eingeloggte FE-User an >> das Script übermittelt werden. >> >> Meine Idee war zunächst ihn in einem <input type="hidden"> an das PHP >> script zu übermitteln, also beim Aufbau des HTML Formulars quasi schon >> ausgelesen zu haben und anschließend nur noch über den Request zu >> übertragen. >> >> Wird nicht funktionieren, da es sich wie gesagt um ein HTMl Page Objekt >> handelt, in welchem ja kein php ausführbar ist.. > > PHP nicht, aber durch PHP vorbereitetes Javascript: > erinnert mich an meine erste Extension: formfill. > hat zwar kein manual, aber ein readme: > http://typo3.org/extensions/repository/view/piphi_formfill/current/info/ > README.txt/ > > > bernd -- Christian Wolff // Berlin http://www.connye.com some projects: http://richtermediagroup.com | http://titanic.de | http://fairplay-homepage.de _______________________________________________ TYPO3-german mailing list TYPO3-german@... http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german |
|
|
Re: eingeloggten FE User an externes PHP script übergebenHallo Torsten.
Tu dir selbst einen Gefallen und vergiss die Idee, ein eigenes PHP-Script im FIleadmin liegen zu haben, das dann irgend welche Dinge tut. Wenn es eine Performancefrage ist wäre eID das relevante Schlüsselwort, damit werden große Teile des TYPO3-Frameworks nicht geladen und müssen nachträglich per Hand aufgerufen werden. Warum dein "$antragsteller = GLOBALS['TSFE']->fe_user->user['username'];" nicht finktioniert? Erstens ist $GLOBALS eine Variable, da muss ein $ davor. Zweitens ist TSFE außerhalb von TYPO3 natürlich nicht instanziiert, das müsstest du selbst tun Drittens hätte ein instanziiertes TSFE noch lange kein ->fe_user, den müsstest du erst da rein schieben Viertens wäre ein instanziierter ->fe_user zwar ein Objekt, aber der hätte noch keinen Bezug zu einem Benutzer-Datenbankeintrag. Die Punkte 1. bis 4. lassen sich durch händisches Nachladen von einigen Dateien und dann simples "new" lösen. Der Punkt 5 bedeutet, dass du dir den Session-Cookie des FE-Users holen musst, über die Sessiontabelle den zugehörigen fe_user ermitteln und dann deinem fe_user-Objekt das "und jetzt log den Benutzer mal mit den vorhandenen Daten ein" befehlen. Geht da, ist aber ein Aufwand den du dir wirklich sparen solltest. Dein require_once könnte deshalb scheitern, weil du in einer externen PHP-Datei die Konstante PATH_t3lib nicht definiert hast. Und wenn du dann händisch diverse Klassen einbindest um um das TYPO3-Framework drum rum zu kommen wirst du schnell noch zig weitere Konstanten und globale Variablen finden die du nicht hast. Ich würde im Übrigen nicht das "username"-Attribut des fe_users verwenden sondern die uid. Wenn eine Tabelle schon einen Primärschlüssel hat (und TYPO3 legt da grundsätzlich *immer* die uid an) sollte man ihn auch verwenden. Ein Integer lässt sich leichter auf Validität prüfen als ein String, in der Datenbank liegt auf der uid (hoffentlich) ein Index sodass die Datenbankanfrage schneller geht und sobald du mit anderen benutzerbezogenen TYPO3-Datenbanktabellen arbeitest wirst du dort ausschließlich die uid des fe_users als Fremdschlüssel vorfinden. Grüße, Stephan Schuler. Am 7. November 2009 09:38 schrieb Christian Wolff <chris@...>: > Hi Bernd, > ein Eingeloggter User müste einen Cookie Übermitteln. > und dann könntest du nachgucken ob eine entsprechende session in der > Typo3 DB existiert. (vieleicht kannst du dafür sorgar die entsprechenden > Typo3 Classen initieren. > > gruss chris > > bernd wilke schrieb: >> Am Fri, 06 Nov 2009 14:11:28 +0100 schrieb Torsten Dörrenbächer: >> >>> Hallo Profis ;-) >>> >>> Ich bin gerade dabei für unser Firmenintranet einen Formularparser zu >>> erstellen, später wird daraus evtl. auch eine Extension werden, wenn ich >>> weit genug damit fortgeschritten bin.. >>> >>> Das ganze sieht so aus, daß im Backend ein HTML Page objekt mit dem >>> Formular erstellt wurde. >>> >>> Aus diesem Formular werden die Daten per javascript, genauer >>> ajax.Request (prototype) an ein PHP Script übergeben, welches unter >>> fileadmin/PHP/ liegt und die Formulardaten weiterverarbeiten soll -> DB >>> eintrag, valierung, etc. >>> >>> >>> Als Teil dieser Formulardaten soll außerdem der eingeloggte FE-User an >>> das Script übermittelt werden. >>> >>> Meine Idee war zunächst ihn in einem <input type="hidden"> an das PHP >>> script zu übermitteln, also beim Aufbau des HTML Formulars quasi schon >>> ausgelesen zu haben und anschließend nur noch über den Request zu >>> übertragen. >>> >>> Wird nicht funktionieren, da es sich wie gesagt um ein HTMl Page Objekt >>> handelt, in welchem ja kein php ausführbar ist.. >> >> PHP nicht, aber durch PHP vorbereitetes Javascript: >> erinnert mich an meine erste Extension: formfill. >> hat zwar kein manual, aber ein readme: >> http://typo3.org/extensions/repository/view/piphi_formfill/current/info/ >> README.txt/ >> >> >> bernd > > > -- > Christian Wolff // Berlin > http://www.connye.com > > some projects: > http://richtermediagroup.com | http://titanic.de | > http://fairplay-homepage.de > _______________________________________________ > TYPO3-german mailing list > TYPO3-german@... > http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german TYPO3-german mailing list TYPO3-german@... http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german |
|
|
Re: eingeloggten FE User an externes PHP script übergeben> Ich würde im Übrigen nicht das "username"-Attribut des fe_users
> verwenden sondern die uid. Wenn eine Tabelle schon einen > Primärschlüssel hat (und TYPO3 legt da grundsätzlich *immer* die uid > an) sollte man ihn auch verwenden. Ein Integer lässt sich leichter auf > Validität prüfen als ein String, in der Datenbank liegt auf der uid > (hoffentlich) ein Index sodass die Datenbankanfrage schneller geht und > sobald du mit anderen benutzerbezogenen TYPO3-Datenbanktabellen > arbeitest wirst du dort ausschließlich die uid des fe_users als > Fremdschlüssel vorfinden. Zudem sollte diese uid _niemals_ aus irgendeiner GET- oder POST-Variable gezogen werden, die in diesem Fall auch noch per JavaScript manipuliert wird. Damit öffnest Du entsprechenden Angreifern Tür und Tor. Die Daten des aktuell eingeloggten Users einer bestimmten Session befinden sich in $GLOBALS['TSFE']->fe_user und bis dahin solltest Du das Framework mindestens instanziiert oder entsprechende Session-Tabellen angezapft haben. Das gilt übrigens auch für entsprechende TYPO3-Extensions, die das Framework komplett nutzen aber stattdessen teilweise mit $this->piVars['loginUser'] oder Ähnlichem arbeiten. Das ist selbst wenn Du intval() verwendest, um SQL-Injections auszuschließen, immer noch böse, denn Deine Extension ließe sich so jede X-beliebige uid als "eingeloggter User" unterjubeln. HTH Joey -- Wenn man keine Ahnung hat: Einfach mal Fresse halten! (If you have no clues: simply shut your gob sometimes!) Dieter Nuhr, German comedian Xing: http://contact.cybercraft.de Twitter: http://twitter.com/bunnyfield TYPO3 cookbook (2nd edition): http://www.typo3experts.com _______________________________________________ TYPO3-german mailing list TYPO3-german@... http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german |
| Free embeddable forum powered by Nabble | Forum Help |