eingeloggten FE User an externes PHP script übergeben

View: New views
5 Messages — Rating Filter:   Alert me  

eingeloggten FE User an externes PHP script übergeben

by Torsten Dörrenbächer :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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..

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 übergeben

by bernd wilke-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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
--
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 übergeben

by Christian Wolff :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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

Re: eingeloggten FE User an externes PHP script übergeben

by Stephan Schuler :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hallo 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

by JoH asenau :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

> 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