• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

www.blablabla.de/post.php&id=3 - Wie funktioniert das genau?

Calm

Mitglied
Hallo.

Wenn ich diese URL habe, kann man ja viele Seiten machen (id 1-***). Es ist aber nur eine Datei.

1. Wo werden die Sachen gespeichert? Wenn man id=2 hat soll ja was anderes kommen als bei id=5. Ist die Datei dann ellenlang, wo alle ids gespeichert sind. Oder in einer Datenbank?

2. Wie erstelle ich sowas (manuell und automatisch)?

Danke
 
Es gibt keine eindeutige Antwort auf deine Fragen, da man das was Du willst auf vielen Wegen realisieren kann.

Einfaches Beispiel:
Wenn man eine URL mit dem Parameter "id" aufruft, könnte man per switch jeweils unterschiedliche Dinge ausgeben:
PHP:
switch( $_GET["id"] ) {
 case 1:
  echo "Du hast die 1 aufgerufen.";
  break;
 case 2:
  echo "Du hast die 2 aufgerufen.";
  break;
 default:
  echo "Was du aufgerufen hast kenne ich nicht.";
}

Natürlich könnte man die Angabe eines Parameters auch für eine Datenbankabfrage verwenden:
PHP:
$sql = "SELECT * FROM tabelle WHERE meineID = '".mysql_real_escape_string($_GET["id"])."'";

Die Links kann man wiederum natürlich aufbauen wie man will. Ob "id" als Parameter oder "blubber" - geht vieles, ist deine Entscheidung. Ebenso ist es deine Entscheidung, welche URLs Du den Besuchern deiner Webseite anbietest. Mehr als das werden sie auch nicht sehen.

Für was Du dich entscheidest hängt davon ab was Du machen und erreichen willst. Pauschal kann man darauf nicht wirklich antworten. Wenn Du ein konkretes Anliegen hast, formuliere das mal - vlt. kann man dann konkreter helfen.

Beachte: vor der Übernahme solcher Werte von Parametern aus der URL solltest Du diese auf Sicherheit hin prüfen. Bei einem MySQL-Statement wird das z.B. durch o.g. mysql_real_escape_string()-Funktion realisiert. Informiere dich auch über weitere Möglichkeiten dazu.
 
Dann erstelle eine Datenbanktabelle mit einer auto_increment-Spalte. Jeder Datensatz darin entspricht dann einem Beitrag und jeder Beitrag hat somit eine eineindeutige ID. Diese kannst Du dann für die Verlinkung verwenden und beim Aufruf den Beitrag aus der Datenbank auslesen.
 
Eine Frage noch. Ich habe ja z.B. diesen Thread erstellt.

Wird in diesem Forum dafür eine extra HTML Datei angelegt?

PHP47796-www-blablabla-de-post-php-id-3-wie-funktioniert-das-genau.html
 
Hey,
Ich glaube das wird automatisch von der Forensoftware bzw einem Plugin gemacht. Entweder ist das für Suchmaschinen, damit Google und Co die Beiträge hier finden können, oder um Ladezeiten zu verringern. Bin mir da nicht genau sicher.
 
Eine Frage noch. Ich habe ja z.B. diesen Thread erstellt.

Wird in diesem Forum dafür eine extra HTML Datei angelegt?

PHP47796-www-blablabla-de-post-php-id-3-wie-funktioniert-das-genau.html

Das ist eine spezielle Konfiguration des Webservers. Bspw. beim Apache-Webserver lässt sich ein solches mod_rewrite in einer .htaccess-Datei definieren. Die URL wird dann intern umgewandelt in eine Form, wie du sie oben formuliert hast.
 
Es wird jedenfalls keine neue Datei erstellt. Die Vorstellung, dass ein URL wie [noparse]http://www.example.org/my/directory/home.html[/noparse] bedeutet, dass irgendwo auf dem Server eine Datei „home.html“ in einem Unterverzeichnis „my/directory“ existiert, ist grundsätzlich unzutreffend.

Ihr müsst euch das ungefähr so vorstellen:

Ihr habt eine Serversoftware wie Apache. Bei der kommen die eingehenden Requests vom Nutzer an: „Hallo Server auf [noparse]http://www.example.org/[/noparse], ich hätte gerne die Daten hinter dem Pfad [noparse]/my/directory/home.html[/noparse].“

Jetzt kann sich die Serversoftware vollkommen frei überlegen, was sie zur Nachfrage von [noparse]/my/directory/home.html[/noparse] an Daten ausliefert.

Dass sie dazu nun tatsächlich erst mal nach einer Datei in $DOCROOT[noparse]/my/directory/home.html[/noparse] sucht und diese – falls vorhanden – ausliefert, ist lediglich die Standardeinstellung. Das lässt sich zum Beispiel per .htaccess-Datei ganz einfach umkonfigurieren, sodass die Serversoftware etwa zu [noparse]/my/directory/home.html[/noparse] die Datei $DOCROOT[noparse]/hallo.txt[/noparse] ausgibt.



Bei vielen Webseiten ist es so, dass der Großteil der Requests an eine zentrale Indexseite umgeleitet wird, die dann entsprechend des Pfads eine Ausgabe erzeugt. Wenn ihr beispielweise URLs habt wie [noparse]http://www.example.org/users/calm[/noparse] oder [noparse]http://www.example.org/users/threadi[/noparse], dann ist davon auszugehen, dass auf dem Webserver keine Verzeichnisse/Dateien „users“ oder „calm“ oder „threadi“ existieren, sondern dass dort ein zentrales Skript läuft, das grob das hier tut:

PHP:
if ($requestUri === '/users/threadi') { echo 'Nutzerseite von threadi'; }
elseif ($requestUri === '/users/calm') { echo 'Nutzerseite von Calm'; }

In Wahrheit würde das Skript natürlich eher so funktionieren (Pseudocode):

Code:
if (requestUri == "/users/<username>") then
    hole Daten von <username> aus Datenbank;
    füge Daten in HTML-Vorlage ein;
    schicke fertige HTML-Seite zurück an Browser;
endif

Ein Beispiel, das ungefähr so funktioniert, habe ich neulich mal hier gepostet: PHP Forum: phpforum.de - Einzelnen Beitrag anzeigen - Textinhalt mit Variablen 1:1 in Datei speichern/erzeugen



Dass das Forum hier mit der gerade beschriebenen Technik so tut, als sei jeder Thread eine eigene HTML-Seite, hat vor allem mit Suchmaschinenoptimierung zu tun. Es gibt/gab das Gerücht, dass Suchmaschinen Seiten mit .html-Endung „bevorzugen“, weil sie sie für statische Inhalte halten. Zudem mögen es Suchmaschinen, wenn der Suchbegriff im URL auftaucht. (Und für Menschen ist es so natürlich auch lesbarer, das sollte man nicht vergessen.)

Außer der ID (47796), die die Software benötigt, um einen Thread eindeutig zu identifizieren, sind die restlichen URL-Bestandteile technisch gesehen unnötig. Das könnt ihr sogar ausprobieren, indem ihr [noparse]http://www.html.de/php/47796-test-huhu-das-hier-ist-ausgedacht.html[/noparse] aufruft. Die Software schnappt sich dann die Thread-ID, stellt fest, dass der URL eigentlich anders aussehen sollte und leitet auch dann zum korrekten URL um. Daran sieht man, dass die Software wenig mehr als die ID benötigt.
 
Zurück
Oben