Apache Filter: XML an php

Alles, was den Apache betrifft, kann hier besprochen werden.

Apache Filter: XML an php

Postby felixsigl » 06. August 2008 17:41

hi,

ich programmiere schon lange php und habe leider wenig bis garkeine ahnung von apache filtern.

ich bin auf der suche nach einem apache filter der folgendes kann:

ich möchte am server eine datei ablegen, die einen beliebige extension hat. zB.: index.xyz

Wenn man diese Datei über einen Browser aufruft sollte der xml inhalt irgendwie an eine php-datei übergeben werden um das xml auszuwerten und an den browser zu senden.

Ich hoffe man versteht was ich meine :-)

danke lg
felixsigl
 
Posts: 6
Joined: 06. August 2008 17:37

Postby glitzi85 » 06. August 2008 18:56

Hallo,

mit modRewrite sollte das eigentlich möglich sein. Du machst eine Liste mit Endungen die du NICHT geparsed haben möchtest und leitest alle anderen Aufrufe an die PHP-Datei weiter mit dem Dateinamen als Parameter.

Ich kenn mich mit RewriteRules nicht besonders aus, ich brauch jedesmal nen halben Tag wenn ich ne neue basteln muss die dann auch funktioniert, aber so ähnlich sollte es aussehen:
Code: Select all
RewriteRule ^!((.*)\.(php|html|php3|htm))$ /script.php?file=$x

Für x musst du testen welche Zahl da reingehört (ich glaub 0) und die Gier müsste evtl. auch noch eingeschränkt werden.

Wie macht man denn Negationen in RewriteRules? Dass ich mir das einfach nicht merken kann...

mfg glitzi
User avatar
glitzi85
 
Posts: 1920
Joined: 05. March 2004 23:26
Location: Dahoim

Postby felixsigl » 07. August 2008 09:14

spitzen idee
das mit mod_rewrite zu probieren, auf das wäre ich nicht gekommen :-)

werde das mal testen

danke
felixsigl
 
Posts: 6
Joined: 06. August 2008 17:37

Postby felixsigl » 07. August 2008 09:44

problem ist aber hier, dass ich ja von der .xyz datei wegkomme weil automatisch die zB script.php aufgerufen (auf diese weitergeleitet) wird, oder??
felixsigl
 
Posts: 6
Joined: 06. August 2008 17:37

Postby glitzi85 » 07. August 2008 14:14

Hallo,

solange du in in der PHP keine Weiterleitung verwendest oder in der RewriteRule eine Weiterleitung einbaust sieht es auf dem Client so aus, als würde die datei.xyz aufgerufen. Die dahinterliegende URI, also in deinem Fall die PHP-Datei bekommt der Client im normalfall nicht zu sehen. Das ist ja auch der Sinn von modRewrite.

Als Beispiel:

In deinem Browser rufst du http://example.com/datei.xml auf und du verwendest z.B. diese Rule:

RewriteRule ^(.*)\.(!php)$ /tuwas.php?$0.$1

(oder so ähnlich). Dann wird im Browser weiterhin datei.xml stehenbleiben, auf dem Server jedoch /tuwas.php?datei.xml aufgerufen. Damit hast du in der $_GET-Variablen den originären Dateinamen stehen und der User sieht nicht, dass die tuwas.php aufgerufen wurde.

Wie gesagt, ich kenne mich mit RegEx nicht besonders aus, also verlass dich bloß nicht auf die Rules die ich poste!

mfg glitzi
User avatar
glitzi85
 
Posts: 1920
Joined: 05. March 2004 23:26
Location: Dahoim

Postby felixsigl » 08. August 2008 09:10

ja stimmt, dass der user garnicht sieht auf welche datei er weitergeleitet wird hab ich schon eingestellt.

problem ist nur folgendes (und ich glaube nicht, dass man das mit mod_rewrite lösen kann):
ich habe in der xml-datei bestimmte programmanweisungen in kurzform, die ich mit php auswerten will. ich will aber nur eine php datei am server haben die das xml auswertet und dementsprechende funktionen usw ausführt.

angenommen ich habe im documentroot meine script.php (die die das xml auswertet) und verschiedene xml dateien in unterschiedlichen ordnern zB:
docs/tuwas.xml und bla/test/tuwasanderes.xml

und problem ist jetzt wenn ich in dem xml file zB ein fileopen machen will, referenziert das immer auf das documentroot und nicht auf den ordner docs/ bzw. auf den ordner bla/test/

also kurz gesagt, ich müsste dem script.php vorgaukeln, dass es in einem anderen ordner ausgeführt wird.

wenn hier irgendjemand konstruktive ideen hat wäre ich sehr dankbar.

mfg
felixsigl
 
Posts: 6
Joined: 06. August 2008 17:37

Postby glitzi85 » 08. August 2008 11:01

Doch, auch das ist mit modRewrite zu lösen. Übergebe einfach den kompletten Pfad an dein Script.

Angenommen du rufst http://example.com/foo/bar/strangefile.xml auf, dann sollte die RewriteRule das so mappen: http://example.com/script.php?orig=/foo ... gefile.xml

Jetzt musst du im Script eigentlich nur noch die Variable $_GET['orig'] zerlegen und bei entsprechenden Dateisystem-Operationen den Pfad reinbasteln.

mfg glitzi
User avatar
glitzi85
 
Posts: 1920
Joined: 05. March 2004 23:26
Location: Dahoim

Postby felixsigl » 12. August 2008 12:24

danke für die hinweise.
ich glaube jedoch das ich dann in viele probleme geraten werde.
es fängt schon damit an, dass ich dann überprüfen muss ob ein pfad relativ oder absolut ist..
felixsigl
 
Posts: 6
Joined: 06. August 2008 17:37

Postby glitzi85 » 12. August 2008 12:45

Naja, dein ganzer Ansatz ist irgendwie seltsam. Verrat doch mal wozu das ganze gut ist, dann kann man ja immer noch über andere Ansätze nachdenken.

mfg glitzi
User avatar
glitzi85
 
Posts: 1920
Joined: 05. March 2004 23:26
Location: Dahoim

gelöst: Apache Filter: XML an php

Postby felixsigl » 12. August 2008 15:00

habe das mittlerweile gelöst.

das ganze soll dazu gut sein um in kurzform in xml zu "programmieren".
das heisst ich habe im xml nodes mit verschiedenen attributen die anschliessend auf php-klassen "gemappt" werden die wiederum xml nodes ausgeben. der vorteil soll sein, dass ich sämtliche daten als xml zur verfügung habe (egal ob datenbank-results, file-infos, etc....)
danach kann über xslt bzw. fop -> html, pdf, svg, etc etc... erzeugt werden
so ähnlich wie in adobe flex wo xml-nodes als action-script 3 klassen interpretiert werden.

theoretisch funktioniert es schon. mir hat nur das schlüsselstück gefehlt zwischen apache und meinem php-handler

habe es jetzt mit mod_actions gemacht, nicht mit mod_rewrite und zwar:

Code: Select all
AddHandler theXML .xml
Action theXML /_classes/Handler.php


im PHP-Code muss man nur mehr mit chdir() das Arbeitsverzeichnis wechseln, welches man aus der $_SERVER Variable bekommt somit funktionieren alle File-Operation usw auch relativ. Die XML-Datei die ich dann parsen muss bekomme ich ebenfalls aus der $_SERVER Variable, somit muss ich mit zB mod_rewrite garnichts übergeben.
und funkt schon :-)

danke für eure hilfe (edit: deine hilfe - war ja nur einer :)
felixsigl
 
Posts: 6
Joined: 06. August 2008 17:37


Return to Apache

Who is online

Users browsing this forum: No registered users and 30 guests