PHP Variable aus Ordnerpfad ermitteln

blueage

Lt. Commander
Registriert
März 2006
Beiträge
1.392
Hi zusammen,

leider fällt es mir schwer das Problem kurz und knapp zu beschreiben, sodass ich per google&co auch nicht fündig werde.

Ich möchte das bei Eingabe von www.domain.de/username

der Wert von username in meiner www.domain.de/index.php selektiert wird und dann ausgegeben wird.
(bisherige Lösung geht nur über www.domain.de/index.php?u=username).

Ist das möglich? Genügt da PHP oder brauch ich da CGI o.ä ?

Username ist kein Ordner, sondern der Name eines Users auf der Datenbank.
Der Name eines User darf natürilch nicht gleich einem Ordnernamen sein.

Vielen Dank im Voraus !!! :)

Greetz, blueage
 
AW: [PHP] Variable aus Ordnerpfad ermitteln

hmm meine Überlegung wäre Folgende:

Ein User gibt ein beliebiges Wort ein, der Webserver empfängt die Anfrage, merkt dass es keine Datei ist bzw. die Datei nicht vorhanden ist, leitet die Anfrage auf deine index.php um, welche das Wort bzw. die Anfrage übergeben wird.

Hier der theoretische Plan: =)
Es ist ja auf normalen Homepages, Standard, z.B. wenn man auf ner Seite eine Anfrage auf ein Unterverzeichnis macht, welches nicht exisitiert, dann kommt z.B. Error - File not found... oder so, was bei dir ja auch der Fall sein sollte, da keine Datei des übergebenen Namens exisitiert. Du könntest also theoretisch deine index.php als standard "FILE NOT FOUND" Seite einsetzen, dort die URL holen, mit der Datenbank abgleichen und den Rest regeln... Ist jetzt nur so ne theoretische Idee, wies in der Praxis aussieht, weiß ich leider nicht genau...

mfg
mitos
 
AW: [PHP] Variable aus Ordnerpfad ermitteln

ja entweder mit der 404 als deine Index.php oder mod Rewrite sollte da helfen

einfach .htaccess erstellen
Code:
RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?u=$1 [L]

weiterführende Infos auch bei http://www.modrewrite.de/

das Problem wird ggf sein wenn du mehr seoed URLs benutzt die nicht nur Usernamen beinhalten
 
AW: [PHP] Variable aus Ordnerpfad ermitteln

Also in PHP wird das normalerweiser wohl durch das durch Analysieren der PATH_INFO-Variable gemacht:
Code:
$_SERVER["PATH_INFO"]
Dieser Server-Variable kann man dann gut mit explode zerstückeln:
Code:
$path = (!empty($_SERVER["PATH_INFO"]) ? explode('/',$_SERVER["PATH_INFO"]) : array('', ''));
$path ist dann nen Array in dem die einzelnen Teile stehen.

Wie das ganze per Webserver gelöst werden kann hat Findus gut erklärt.
 
Zuletzt bearbeitet:
AW: [PHP] Variable aus Ordnerpfad ermitteln

hey, vielen Dank für die Antworten!! :D

Die 404-Methode hört sich recht simpel an, dort werde ich zuerst ansetzen.

Mit mod rewrite hab ich mich bisher noch nicht auseinandergesetzt, werd ich aber auch austesten.

Danke !
 
AW: [PHP] Variable aus Ordnerpfad ermitteln

was du aber vermutlich brauchen wirst bei einer Ordnerstruktur ist der meta-Tag
Code:
<base href="http://www.doamin.tld/" />

auch bei Javaskripten und CSS musst du bei Pfadangaben aufpassen das diese dann auch vom Ordner /username/ aus funktionieren (mittels absolutem pfad z.b.), das ganze SEO gerümpel ist da recht eigenwillig und auch von Browser-Browser unterschiedlich nur weil links und funktionen im IE laufen kann es bei FF dann hacken oder umgekehrt, nur so als Warnung

ein Ordner-Pfad ist es übrigends nur mit abschließendem "/" andernfall hält die SUMA das für eine Datei ;) nur so nebenbei weils mir grad einfällt
 
AW: [PHP] Variable aus Ordnerpfad ermitteln

Bei gewissen Hostern ist das Apache Modul mod_rewrite deaktiviert. Falls du eigenen 404 Errorsites erstellen kannst. Solltest du es auf diese weise versuchen.
 
AW: [PHP] Variable aus Ordnerpfad ermitteln

jepp, ich kann eigene 404-Sites erstellen. Bin bei HostEurope ;)

Wenn mein Skript funktioniert, stelle ich es hier online :)
 
AW: [PHP] Variable aus Ordnerpfad ermitteln

Hi zusammen,

leider klappt das ganze nicht so wie gewünscht.

Habs mit der Fehler404-Methode versucht.
Leider kann ich in der .htcaccess aber nur HTML-Dateien angeben, und keine PHP-Dateien.

Daher wäre nur die Angabe von einer HTML-Datei möglich, welche auf eine PHP-Datei weiterleitet.
Nur dann kann ich den Namen (von dem Ordnernamen welchen es nicht gibt) nicht mitgeben.

Ist da vielleicht ne Lösung mit JavaScript möglich?

Danke im Voraus....
 
AW: [PHP] Variable aus Ordnerpfad ermitteln

nein, mit mod_rewrite habe ich bisher noch nichts gemacht...

hatte lediglich versucht PHP-Dateien anstatt HTML-Dateien in der .htcaccess anzugeben...
 
AW: [PHP] Variable aus Ordnerpfad ermitteln

Servus.

Nö, mit PHP kannst du das nich machen, zumindest glaub ich, dass das nich geht.
Aber es gibt möglichkeiten.
mod rewrite: http://www.modrewrite.de/
wär da so ne Sache.
Allerdings muss da der Hoster sowas zulassen.
Da legst du eine .htacess Datei an, in der du folgendes schreibst (1und1 Beispiel):
Code:
Options -MultiViews
RewriteEngine on

RewriteCond %{REQUEST_URI} (.*)\.htm
RewriteRule (.*)\.htm$ /index.php?u=$1
Dann kannst du in die Adressleiste http://irgendwas.de/Username.htm eingeben und er landet auf der http://irgendwas.de/index.php?u=Username
Das ganze geht müsst auch ohne das .htm gehn.

Gruß
 
Hätte folgenden Lösungsansatz, aber leider klappts nicht ganz wie ich möchte...

index.php
Code:
<?php
$str = $_SERVER['REQUEST_URI'];
$path = pathinfo($str);
if(false !== isUser($path['basename']) )
{
        header('Location: index.php?username='.$path['basename']);
        exit;
} else {
        echo 'Der Username '.$path['basename'].' ist im System nicht bekannt';
}

function isUser($username)
{
        //irgendeine Abfrage z.B. auf eine DB ob der User bekannt ist
        return false;
}
?>

.htcaccess
Code:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?_url=$1&%{QUERY_STRING}
 
was spricht gegen die
Code:
RewriteCond %{REQUEST_FILENAME} !-d
in der Liste, denn wenn mode_rewrite die Anfrage für einen Ordner hält, den es nicht gibt, wird die regel nicht verwendet!
 
Zurück
Oben