Duergy
Mitglied
Hyho,
ich habe da mal so eine Frage. Ich würde gerne meine Urls verkürzen
ich weiß garnicht genau wie ich es genau erklären soll.
Eine Url kann maximal aus 3 Teilen bestehen
1. Teil Ordner
2. Teil die PHP-Datei
3. Teil eine ID o. Ä.
Nun habe ich folgende .htaccess
und diesen PHP-Code
Wenn ich nun
aufrufe
* wird htmlentities auf "/user/login" ausgeführt
* wird ein array $url geschrieben wobei das / an "trenner" fungiert
* dann wird geprüft ob eine ID o.Ä. mitgeliefert wurde oder nicht
* jenachdem ob eine ID mit gegeben wurde oder nicht wird die entsprechende Datei included
* sollte die Datei nicht existieren wird 404 ausgegeben
Nun meine Fragen.
wenn ich
also 2 mal / einbaue haut das alles natürlich nicht mehr hin. Ich könnte natürlich
einfügen, aber was ist wenn man mal 3 / hat? Dann haut es auch mal wieder nicht hin.
Das heißt man müsste eine art "schleife" machen in der solange // entfernt wird bis es nicht mehr vorkommt.
Klingt für mich jetzt nicht nach einer "eleganten" Lösung. Gibt es da andere Möglichkeiten Reg_Exp oder so?
nächste Frage wie sicher ist das eigentlich. natürlich würde ich in den folgenden PHP-Datei übergebene ID´s etc. nochmal Validieren aber irgendwie habe ich bedenken bei meiner Include variante.
Vllt. gibt es ja auch kompett eine Elegantere/Bessere/Sicherere Lösung?
grüße
Duergy
ich habe da mal so eine Frage. Ich würde gerne meine Urls verkürzen
ich weiß garnicht genau wie ich es genau erklären soll.
Eine Url kann maximal aus 3 Teilen bestehen
1. Teil Ordner
2. Teil die PHP-Datei
3. Teil eine ID o. Ä.
Nun habe ich folgende .htaccess
Code:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
und diesen PHP-Code
PHP:
$uri=htmlentities($_SERVER["REQUEST_URI"]);
$url = explode("/",$_SERVER["HTTP_HOST"].$uri);
if(empty($url['3']))
{
if(!@include("/content/".$url['1']."/".$url['2'].".php"))
echo"404";
}
else
{
if(!@include("/content/".$url['1']."/".$url['2'].".php?todo=".$url['3'].""))
{
echo"404";
}
}
Code:
http://localhost/user/login
* wird htmlentities auf "/user/login" ausgeführt
* wird ein array $url geschrieben wobei das / an "trenner" fungiert
* dann wird geprüft ob eine ID o.Ä. mitgeliefert wurde oder nicht
* jenachdem ob eine ID mit gegeben wurde oder nicht wird die entsprechende Datei included
* sollte die Datei nicht existieren wird 404 ausgegeben
Nun meine Fragen.
wenn ich
Code:
http://localhost/user//login
Code:
$uri=str_replace("//", "/", $uri);
Das heißt man müsste eine art "schleife" machen in der solange // entfernt wird bis es nicht mehr vorkommt.
Klingt für mich jetzt nicht nach einer "eleganten" Lösung. Gibt es da andere Möglichkeiten Reg_Exp oder so?
nächste Frage wie sicher ist das eigentlich. natürlich würde ich in den folgenden PHP-Datei übergebene ID´s etc. nochmal Validieren aber irgendwie habe ich bedenken bei meiner Include variante.
Vllt. gibt es ja auch kompett eine Elegantere/Bessere/Sicherere Lösung?
grüße
Duergy