Seite 1 von 1

mod-rewrite und PHP_SELF

Verfasst: 17.12.2006, 22:44
von Khexacyanoferrat
Hallo,

ich hab in der Suche und über Google nichts gefunden, deshalb erstelle ich hier mal einen neuen Thread :wink:

Ich schreibe momentan für meine Homepage eine Benutzerverwaltung. Dabei soll beim Ausloggen bzw. beim Einloggen die aktuelle URL gespeichert werden, so dass es möglich ist, den Benutzer wieder darauf zurückzuleiten.

Dies geschieht in diesem Format: logout.php?URL=/index.php und funktioniert auch einwandfrei (über PHP_SELF und die Übergabeparameter).

Mein Problem ist jetzt nur, dass bei einer mit mod-rewrite umgeschriebenen URL statt der aufgerufenen URL (z.B. pnwrite-1.php) die tatsächliche URL (pnwrite.php?ID=1) ermittelt wird.

Wie könnte ich denn erreichen, dass statt logout.php/URL=pnwrite.php?ID=1 die umgeschriebene URL logout.php/URL=pnwrite-1.php ermittelt wird?

Hier den Code den ich aktuell verwende:

Code: Alles auswählen

$URL = $_SERVER['PHP_SELF'];
if ($_SERVER['QUERY_STRING'] != "") 
  $URL .= "?" . $_SERVER['QUERY_STRING'];
Grüße
Kaliumhexacyanoferrat

Verfasst:
von

Verfasst: 17.12.2006, 23:10
von chris21
Probier mal:

Code: Alles auswählen

$URL = $_SERVER['REQUEST_URI'];
if ($_SERVER['QUERY_STRING'] != "")
  $URL .= "?" . $_SERVER['QUERY_STRING']; 

Verfasst: 18.12.2006, 19:10
von Khexacyanoferrat
Hi chris21,

danke für deine Antwort. Klappt so schonmal sehr gut (obwohl mir so war als hätte ich das schon getestet :oops:)

Leider kommen jetzt Parameter doppelt vor. Durch die IF-Verzeigung wird

writepn-2.php zu logout.php?URL=/writepn-2.php?ID=2

Aber ich denke hier gibt es keine andere Möglichkeit als durchzutesten, welcher Parameter "geschluckt" werden soll.

Grüße
Kaliumhexacyanoferrat

Verfasst: 18.12.2006, 19:49
von chris21
Stimmt, mir ist gerade aufgefallen, dass Du den Rest gar nicht brauchst. Ich hatte nur PHP_SELF durch REQUEST_URI ersetzt, d.h. die "tatsächliche" Datei durch den Dateinamen der Anfrage.

Eigentlich sollte daher die erste Zeile reichen. Denn wenn der User auf die URI writepn-2.php weitergeleitet wird, wird er ja aufgrund Deiner mod_rewrite Regeln letztlich pnwrite.php?id=2 aufrufen. Demnach müsstest Du denn Querystring gar nicht an die URI anhängen.

Verfasst: 18.12.2006, 20:14
von Khexacyanoferrat
mhm ...

in diesem Falle würde aber Daten die per GET übergeben wurden einfach wegfallen? Ich kann also entweder alle Daten doppelt angeben oder welche verschlucken. im Beispiel:

pnwrite-2.php?Betreff=Text

-> logout.php?URL=/pnwrite-2.php
-> logout.php?URL=/pnwrite-2.php?ID=2&Betreff=Text

Ich denke, ich werde die URLs so designen das das wichtige in den umgeschriebenen URLs enthalten ist und das unwichtige beim Logout/Anmelden "geschluckt" wird. GET-Variablen verwende ich soweiso meist nur für Operationen, die nur einmal gültig sind (z.B. Bewertung eines Artikels).

Grüße und Danke!
Kaliumhexacyanoferrat