php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.09.2008, 19:50  
Erfahrener Benutzer
 
Registriert seit: 17.11.2003
Beiträge: 212
R4v3r
Standard alle Aufrufe einer Domain unverändert auf eine Datei leiten (ohne mod_rewrite

Hallo Zusammen,

zur Problematik:
Momentan nutze ich mod_rewrite, um die Aufrufe meiner Domain korrekt zu "entschlüsseln", die Anfragen an die richtigen Dateien zu leiten und die Parameter korrekt zu extrahieren. Da ich mir allerdings über die Domain auch encodierte URLs übertragen lassen möchte, stößt mod_rewrite an seine Grenzen, da dies aufgrund eines encoding-Bugs nicht möglich ist. So werden von mod_rewrite nur doppelt encodierte URLs korrekt übertragen. Dies ist allerdings nicht möglich, da ich auf die Art der Übertragung der URLs auf meine Domain keinen Einfluss habe.

Warum ich keine "normalen" URLs nutzen möchte?
- ich möchte möglichst kurze URLs
- die Dateinamen sollen nicht ersichtlich sein (Sicherheit)
- Parameter sollen nicht vorhanden sein (kurze URLs / Sicherheit)

Da es scheinbar mit mod_rewrite selbst keine Lösungsmöglichkeit gibt (wenn du eine hast, her damit... das wäre für mich die optimalste Lösung) habe ich mir über Alternativen ohne mod_rewrite Gedanken gemacht.

Ich bin auf folgende Lösung gekommen: Ich lasse alle Aufrufe der Domain intern auf eine Datei leiten. Diese schaut dann über die $_SERVER-Variable, was ursprünglich aufgerufen wurde und macht quasi das gleiche wie mod_rewrite, sprich zerteilt den String, wählt die korrekte PHP Datei und extrahiert die Parameter.

Leider fällt mir keine Möglichkeit ein, dies praktisch umzusetzen. Nutze ich das ErrorDocument, habe ich keinen Zugriff mehr die ursprünglich aufgerufene Domain, somit ist es nicht möglich, die Parameter etc. abzufragen. Nutze ich mod_rewrite, besteht das oben beschriebene Problem, dass URLs Fehler verursachen.

Die einzige Möglichkeit, die bestünde, wäre, die Dateinamen voll auszuschreiben und dann daran den "verschlüsselten" Query-String zu hängen. z. B.:

http://test.de/test.php/param1;param2;param3

erreichen möchte ich aber gerne folgende URLs:

http://test.de/test;param1;param2;param3

Zudem ist die beschriebene Methode ist eher suboptimal, da diese etwas länger ist, als die gewünschte Methode und außerdem klar den Dateinamen zeigt. "test" ist natürlich nur ein Beispiel. In der Praxis hat der erste Parameter der gewünschten URL eine andere Bezeichnung als die Datei.

Ich hoffe ich konnte die Problematik einigermaßen Verständlich erklären und hoffe auf hilfreiche Antworten.

Vielen Dank!!!
R4v3r ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 10.09.2008, 00:30  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo R4c3r,

an sich ist die von dir beschriebene Lösung doch mit mod_rewrite kein Problem. Möchtest du z.B.

Code:
http://test.de/test;param1;param2;param3
von der Datei test.php verarbeiten wollen, musst du eine RewriteRule der Art

Code:
RewriteRule ^/([A-Za-z0-9]);(.*) /$1.php?query=$2 [NC,L]
etablieren und gleichzeitig innerhalb der Datei test.php die Variable $_REQUEST['query'] entsprechend deinen Kriterien zerlegen und in deinem Programmcode gemäß deinen Anforderungen verfügbar machen.

Für Slash-URLs mit und ohne FrontController-Anweisungen erledige ich das in selbiger Art und Weise. Einzige Einschränkung ist dort, dass die Bootstrap-Datei nicht beliebig ist, sondern immer index.php heißt.

Probier's mal aus!
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 10.09.2008, 16:30  
Erfahrener Benutzer
 
Registriert seit: 17.11.2003
Beiträge: 212
R4v3r
Standard

Hallo dr.e.,

vielen Dank für deine Antwort.

Leider besteht das Problem nicht in der Technik allgemein. Wie dies funktioniert ist mir bewusst und ähnlich wie du es beschrieben hast, wird es momentan auch gemacht.

Die Problematik besteht bei der Übertragung von URLs in der URL. Diese führen grundsätzlich zu einem Serverfehler (403). Dies zeigt sich schon, wenn du "http://" versuchst, zu übertragen.

Umgangen werden kann das Problem nur, wenn das "http://" doppelt encodiert wird. Dies ist aber nicht möglich, da ich keinen Einfluss auf die Art der Übertragung der URLs habe.
R4v3r ist offline   Mit Zitat antworten
Alt 10.09.2008, 20:02  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo,

Zitat:
Umgangen werden kann das Problem nur, wenn das "http://" doppelt encodiert wird. Dies ist aber nicht möglich, da ich keinen Einfluss auf die Art der Übertragung der URLs habe.
Dann wird es dafür keine Lösung geben. Einzige Ausnahme: das "http://" wird weggelassen und nur der relevante Teil übertragen.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Datei auf FTP-Server ändern ohne lokal abzuspeichern faux PHP-Fortgeschrittene 11 02.09.2005 11:54
wie kann ich einen datei von fremder domain einlesen janni PHP Tipps 2005 8 17.04.2005 20:28
[Erledigt] Zugriff auf php Datei von anderen Domain sperren PHP Tipps 2004 1 29.08.2004 13:12

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mod_rewrite alles auf eine datei, rewrite alles auf eine datei, mod rewrite alles auf ein file, immer auf index leiten, domain auf datei leiten, alle anfragen einer domain auf eine datei, modrewrite alles auf eine datei, url unverändert, rewrite domain auf datei, alles auf index.php leiten, mod_rewrite alle anfragen index.php, rewrite alle anfragen auf eine datei, mod_rewrite url unverändert, domain adresse unverändert, alle anfragen an andere php datei leiten, aufrufe einer, mod rewrite url unverändert, mod_rewrite alles auf eine datei verweisen, parameter url mod rewrite php, rewrite domain auf bestimmte uri leiten

Alle Zeitangaben in WEZ +1. Es ist jetzt 23:10 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum