index.php aus Browserzeile löschen
Dave
- php
Tach!
Ich hab mir die Frage gestellt, ob es möglich ist, nachträglich, das "index.php" aus der Browserzeile zu löschen.
Bsp.: (Berechtigung zum Seitenaufruf)
Ich rufe die Datei zum bearbeiten der News auf:
if($_COOKIE['username'] == $username && $_COOKIE['password'] == md5("$passwort"))
{
hier kommt code
}
else header("Location: index.php?go=adminlogin");
Da ich aber oft nur mit URLs wie
?go=adminlogin
anstelle
index.php?go=adminlogin
arbeite, fragte ich mich eben, wie ich dieses "index.php" wieder wegbringe?
Der Code
if($_COOKIE['username'] == $username && $_COOKIE['password'] == md5("$passwort"))
{
hier kommt code
}
else
{
header("Location: index.php?go=adminlogin");
header("Location: ?go=adminlogin");
}
funzt nicht, da ja nicht 2x der Header gesendet werden darf.
Hat da jemand ne Lösung? (Ich weiss... Detail... ging mir nur eben durch den Kopf und wollte wissen wie... :D )
Hi,
funzt nicht, da ja nicht 2x der Header gesendet werden darf.
So schon probiert?
else
{
header("Location: ?go=adminlogin");
}
Gruß,
Aarakast
Das Problem ist:
alle Admin Dateien kommen von der Date admin.php und nicht von index.php aus! (vergessen... ist noch wichtiges Detail... ^^)
also zB. admin.php?go=newsedit -> wenn keine berechtigung -> index.php?go=adminlogin
Ich weiss, ist blödes Beispiel, hoffe man kommt nach.
else
{
header("Location: ?go=adminlogin");
}
Hallo Aarakast.
So schon probiert?
else
{
header("Location: ?go=adminlogin");
}
Das ist ungültig, siehe [header()](http://de2.php.net/manual/de/function.header.php) auf php.net:
„Anmerkung: HTTP/1.1 verlangt einen absoluten URI inkl. dem Schema, Hostnamen und absoluten Pfad als Argument von Location:, aber manche Clients akzeptieren auch relative URIs. Gewöhnlich können Sie mittels $\_SERVER['HTTP\_HOST'], $\_SERVER['PHP\_SELF'] und dirname() aus einem relativen Link einen absoluten URI selbst erstellen:“
Mein Tipp lautet [mod_rewrite](http://de.selfhtml.org/servercgi/server/rewrite.htm).
Gruß, Ashura
--
Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
[30 Days to becoming an Opera8 Lover](http://tntluoma.com/opera/lover/8/) -- [Day 19: Notes](http://operalover.tntluoma.com/8/day_19_notes)
Meine Browser: Opera 8.01 | Firefox 1.0.4 | Lynx 2.8.3 | Netscape 4.7 | IE 6.0
[\[Deshalb frei! - Argumente pro freie Software\]](http://deshalbfrei.org/)
Das ist ungültig, siehe header() auf php.net
komisch... ich hatte noch nie Problem mit dem... wie darf ich "manche Clients" verstehen?
Mein Tipp lautet mod_rewrite.
Kennst du dich mit CGI aus? Ich hab noch nie mit CGI gearbeitet (ausser wirklich, wirklich kleinen Scripts, fix-fertig zum Einbauen), daher ist das alles für mich Bahnhof.
Könntes du erklären wie genau ich das anstellen könnte?
gruss
Hallo dave.
Das ist ungültig, siehe header() auf php.net
komisch... ich hatte noch nie Problem mit dem... wie darf ich "manche Clients" verstehen?
Nunja, genau so, wie es da steht. Bei einigen Browsern wird der HTTP_HOST und das Protokoll automatisch davor gesetzt, wenn ein unvollständiger URL als Ziel des Location-Headers angegeben wurde.
Darauf sollte man sich aber auf keinen Fall verlassen, weshalb man Protokoll und HTTP_HOST wie auf der php.net-Site beschrieben davor setzen sollte.
Mein Tipp lautet mod_rewrite.
Kennst du dich mit CGI aus?
Nein, CGI ist absolutes Latein für mich, obgleich ich über PHP zu Perl an die CGI-Schnittstelle kommen könnte, sollte ich Perl eines Tages lernen wollen.
Ich hab noch nie mit CGI gearbeitet (ausser wirklich, wirklich kleinen Scripts, fix-fertig zum Einbauen), daher ist das alles für mich Bahnhof.
Das Apache-Modul mod_rewrite hat nichts mit CGI zu tun, sondern ist lediglich eine Konfigurationssache.
Könntes du erklären wie genau ich das anstellen könnte?
Lies das von mir verlinkte Kapitel einfach mal durch, dann sollten die meisten deiner Fragen beantwortet sein. ;-)
Gruß, Ashura
Hallo Dave,
Du könntest an den Anfang der index.php folgendes schreiben:
if (stristr('index.php', $_SERVER['REQUST_URI']) !== false)
header('Location: http://'.$_SERVER['HTTP_HOST'].str_replace('index.php','',$_SERVER['REQUEST_URI']));
Oder mod_rewrite verwenden, das ist vermutlich eleganter.
Gruß
Alexander Brock
Hi Dave,
Ich hab mir die Frage gestellt, ob es möglich ist, nachträglich, das "index.php" aus der Browserzeile zu löschen.
Warum rufst du denn index.php auf? Und nicht einfach nur das verzeichnis?
Marian