rob: Lange URL's, Pfad des Inhaltes in URL

Beitrag lesen

Hi!

Ich habe eine Homepage in PHP Programmiert,

Meinst du Homepage oder Website?

Seht Ihr dabei einen Nachteil?

Ja, die Adressen sehen nicht besonders schön aus und sind nicht besonders einfach zu merken.

z.B. Suchmaschinen welche damit nicht klarkommen?

Den Suchmaschinen ist das egal. Den Usern aber vielleicht nicht...

Oder ist es sowieso schlecht wenn der Pfad des Inhaltes in der URL zu sehen ist?

Das der Pfad zu sehen ist, muß nicht schlecht sein.
Sofern du serverseitig eine anständige Prüfung durchführst, ist das kein Problem.
Wenn du jedoch keine ordentliche Prüfung durchführst und folgendes einsetzt, ist es mehr als schlecht:

<?php  
$file = str_replace( ".", "/", $_GET['content'] );  
include( $file );  
?>

In diesem Fall wäre es möglich, beliebige Dateien dort einzubinden und das könnte gefährlich werden.
Selbst wenn man es nicht schafft, bösartigen Code damit auszuführen, so könnte man dort eventuell deine .htpasswd (oder anderes) einbinden.
Diese Datei würde dann zwar nicht ausgeführt werden, aber die dann ausgegebene Fehlermeldung könnte Teile dieser Datei (wie z.B. Paßwörter oder Paßwort-Hashes) preisgeben.
Du darfst also in keinem Fall einfach alles einbinden, was per URL übergeben wird.
Da du deinen Code nicht gepostet hast, weiß ich nicht, ob das Script ausreichend gesichert ist.

Du mußt aber auch nicht den kompletten Pfad der einzubindenen Datei übergeben.
Das könntest du doch auch im Script "verstecken".
Reicht es denn nicht, den Dateinamen oder irgendeinen Begriff per URL zu übergeben?
Dein Script bindet dann die entsprechenden Dateien aus den entsprechenden Verzeichnissen ein.

<?php  
switch ( $_GET['content'] )  
{  
 case 'history':  
  include( './home/news/history.php' )  
  break;  
 case 'xyz':  
  include( './irgend/was/xyz.php' )  
  break;  
 default:  
  include( 'standardseite.php' );  
  break;  
}  
?>

In jedem Fall würde ich die URL-Parameter so wählen, daß einfach zu merkende Adressen rauskommen.

"Ich kenne eine tolle Seite. Schau dir mal http://example.com/index.php?content=home.news.history an."
Das klingt nicht so gut, wie: "Besuch mal http://example.com/index.php?site=history".

Und noch besser wäre es, wenn du die URL mit Hilfe von mod_rewrite umschreiben würdest.
Damit könntest du deinen Usern dann Adressen wie http://example.com/history präsentieren und intern würde der Server dann http://example.com/index.php?content=home.news.history ausliefern.
Das wäre für die menschlichen User in jedem Fall einfacher.
Schau dir beispielsweise mal die Adressen in der Wikipedia an.
Die sehen alle so aus: http://de.wikipedia.org/wiki/ARTIKELNAME.
Die haben auf ihren Servern auch keine Millionen von echten Verzeichnissen angelegt...

Schöner Gruß,
rob