PHP Eine Seite mit mehreren Inhalten

herrausragend

Cadet 2nd Year
Dabei seit
Juli 2013
Beiträge
16
Ich habe schon oft die Funktion gesehen, dass eine Seite (gleiche CSS etc.) mit mehreren Inhalten dargestellt wird.

z.B.:

domain.tld/seite.php?page=1
domain.tld/seite.php?page=2
domain.tld/seite.php?page=3 etc.

Zur Zeit habe ich auf meiner Homepage etwas so was:

domain.tld/profil_1.html
domain.tld/profil_2.html
domain.tld/profil_3.html

Wenn ich z.B. etwas an der Darstellung ändern möchte, muss ich immer gleich alle 5 "profil_x.html" Dateien ändern.

Wie kann ich eine Seitenstruktur mit variablen Inhalten machen?

MFG
 

Daaron

Fleet Admiral
Dabei seit
Dez. 2011
Beiträge
13.487
Das, was hinter dem ? steht nennt sich GET-Parameter (ein assoziatives Array), abzurufen mit $_GET['parametername']. In dem Falle also $_GET['page'].

Der Rest ist eine clevere Verwendung unter Anderem des Befehls include(). Außerdem wäre eine Datenbankanbindung ratsam, aber nicht zwingend notwendig.
 

siconize

Ensign
Dabei seit
Apr. 2012
Beiträge
137
Jop, sprich mit PHP kannst du abrufen, welchen Wert der get-Parameter behinhaltet, also 2 bei domain.tld/seite.php?page=2 etc.
Dann kannst du - wieder mit PHP - dafür sorgen, dass Seite 1, 2, 3, usw. angezeigt wird, eben in Abhängigkeit vom Parameter.

Mit dem Befehl include() kannst du Dateien einbinden. Das ermöglicht es dir, eine Seite deiner Website auf dem Server aus verschiedenen Dateien generieren zu lassen. Du kannst dann bspw. eine Datei für den Header nutzen, eine für den Footer, etc. Dann kannst du, wenn du die Header-Datei veränderst, den Header auf allen(!) Seiten deiner Website gleichzeitig verändern.

Das könnte dann so aussehen:
$page = sicherheitsüberprüfung( $_GET['page'] );

inlucde 'header.php';

switch ($page) {
case '1':
include 'page1.php';
break;
case '2':
include 'page2.php';
break;
case '3':
include 'page3.php';
break;
}

inlucde 'footer.php';
Ganz wichtig ist, einem get-Parammeter nicht blind zu vertrauen. In dem einfachen Beispiel kann zwar nichts passieren, aber über diese Parameter können Angreife auf eine Website erfolgen. Deshalb hier die Pseudo-Funktion sicherheitsüberprüfung().

Ich rate dir, dich irgendwo (und zwar nicht in diesem Forum :) ) einzulesen um die Basics zu erlernen.
 
Zuletzt bearbeitet:

Tuxman

Banned
Dabei seit
Feb. 2007
Beiträge
1.497
Per .htaccess-Anweisungen (oder vergleichbaren, je nach Webserver) lassen sich Anfragen nach profil_x.html übrigens dann auch auf seite.php?page=x umleiten.
 

ice-breaker

Commodore
Dabei seit
Nov. 2008
Beiträge
4.133
Eventuell kann dein Webserver SSI? Das kannst du nachsehen, indem du eine phpinfo.php hochlädst, und dann mal mit Strg+F nach "mod_include" suchst. Könnte für dich leichter sein, als dich in die Grundlagen von PHP reinzuarbeiten.
 
Zuletzt bearbeitet:

Daaron

Fleet Admiral
Dabei seit
Dez. 2011
Beiträge
13.487
Noch einfacher wäre es, das Ganze einfach sein zu lassen und direkt auf ein Content Management System zu setzen, z.B. auf Contao, Drupal oder Joomla.
Wenn das System halbwegs was taugt, dann erzeugt es auch "hübsche" URLs per .htaccess.
 

Daaron

Fleet Admiral
Dabei seit
Dez. 2011
Beiträge
13.487
Muss man immer was lernen?
Der Löwenanteil der Menschen will nutzen, nicht lernen. Da das Feld der Web-Programmierung doch recht weitläufig ist und vor allem Unmengen an Sicherheitsrisiken birgt, sollte man hier entweder komplett auslernen oder es ganz lassen.

Allein für das, was der TE machen will, fallen mir spontan wenigstens 3 verschiedene Ansätze in PHP ein, die alle ihre Vor- und Nachteile haben.
 

ice-breaker

Commodore
Dabei seit
Nov. 2008
Beiträge
4.133
Wie man ein CMS-System nutzt, ist auch lernen ;) Dann muss er dabei auch noch lernen, wie er sein Design korrekt in ein Template für das CMS macht usw.

Ich habe einfach SSI vorgeschlagen, weil es der Weg des geringsten Widerstandes ist, er muss am allerwenigsten lernen. Im Prinzip nur das eine Include-Statement.
 

Daaron

Fleet Admiral
Dabei seit
Dez. 2011
Beiträge
13.487
Stimmt schon, aber ein CMS befreit uns und ihn dann von Fragen wie "Wie kann ich Inhalte direkt über die Webseite ändern?" oder "Wie baue ich ein Formular?"
 

Tuxman

Banned
Dabei seit
Feb. 2007
Beiträge
1.497
Nur, wenn er mit den bestehenden Mitteln des CMSs zufrieden ist und keine Anpassungen vornehmen möchte.
 

Daaron

Fleet Admiral
Dabei seit
Dez. 2011
Beiträge
13.487
Klingt der TE für dich nach jemandem, der besonders hohe Ansprüche an sein System und zusätzlich noch umfangreiche PHP-Kenntnisse hat?
Nein, ich glaube nicht, dass hier CMS-Modifikationen gewünscht sein werden. Und wie so oft gilt: Bezahl jemanden dafür, der sich damit auskennt.
 

F_GXdx

Captain
Dabei seit
März 2006
Beiträge
4.028
Also wenn es nur um Header und Footer, und erste Gehversuche in PHP geht, kann man auch nur mit

Code:
echo file_get_contents("/path/to/file");
arbeiten, und die Sachen aus einer HTML Datei laden. Datenbank ist dann übertrieben und ohne Background-Wissen eh zu viel des Guten.
 

Daaron

Fleet Admiral
Dabei seit
Dez. 2011
Beiträge
13.487
Natürlich ist eine DB für einen Anfänger übertrieben, aber so wirds eben bei den "Erwachsenen" gemacht.
file_get_contents ist natürlich ne interessante Möglichkeit, wobei mir persönlich include/require besser gefällt, weil dir das viel komplexere Möglichkeiten eröffnet.
 

F_GXdx

Captain
Dabei seit
März 2006
Beiträge
4.028
Ich kenn mich mit PHP eigentlich gar nicht aus, wollt mich hier nur wichtig machen :D

Jeder Programmierer, der noch klar bei Verstand ist, verwendet schließlich so wenig PHP wie möglich.

7095238893_5000f6e57d_m.jpg
 

Daaron

Fleet Admiral
Dabei seit
Dez. 2011
Beiträge
13.487
Also arbeiten bei Facebook nur Vollpfosten?

PHP ist nun einmal DER Standard. Der ganze andere Kram wie Ruby, Perl und Python mag zwar hübsch sein, mehr als Exotenbonus hat der Kram aber nicht. Praktischer Nutzen = Null.

Übrigens: file_get_contents wäre hier in dem Falle tatsächlich der von dir dargestellte Hammer.... ziemlich am Konzept vorbei. Denn der Befehl gibt (wie man der verdammt geilen Dokumentation von PHP entnehmen kann) nun einmal den Inhalt einer Datei als String zurück. Das heißt, du müsstest jetzt noch mit diesem String weiterarbeiten, also mindestens noch ein Echo dran hängen... Ineffizient.
 

F_GXdx

Captain
Dabei seit
März 2006
Beiträge
4.028
Der Unterschied ist, dass man include nur verwenden soll, wenn in dem einzubindenden "Text" wiederum php-Code drinsteckt. Wenn nicht, nimmt man file_get_contents, weil es schneller ist.

Facebook verwendet ungefähr aus dem gleichen Grund php, warum jemand in einen Trabbi einen 800 PS Motor einbaut: Er weiß nicht was er tut (oder: er ist möglicherweise balla-balla), aber es ist schnell, nachdem so ziemlich nichts mehr original ist.
 

Rossie

Commodore
Dabei seit
Dez. 2010
Beiträge
4.098
Also arbeiten bei Facebook nur Vollpfosten?
Bei Facebook arbeiten sehr viele extrem qualifizierte Menschen. Und vermutlich noch mehr durchschnittliche.

Zeitkritische Dinge wurden mit PHP doch schon immer in C/C++ realisiert. Was nicht so viele beherrschen, wie eine verhältnismäßig einfache Skriptsprache wie PHP. Wenn ich dem Großteil der Entwickler also weiterhin das vertraute PHP-Frontend zur Verfügung stelle und im Hintergrund einige Experten daraus performanten Code zaubern, sorge ich für eine effiziente Nutzung an Ressourcen. Sowohl hinsichtlich der Hardware, als auch der Menschen.

Facebook ist schnell gewachsen und die Infrastruktur musste irgendwie mithalten. PHP war da und man hat einen Weg gefunden, weiter darauf zu setzen. Die Verwendung von PHP bei Facebook unterscheidet sich doch mittlerweile weitgehend von dem, was ein durchschnittliches PHP-Projekt ausmacht. Wer schreibt sich schon einen eigenen Compiler, weil die Resourcenauslastung zu hoch ist? Um irgendwann eine virtuelle Maschine mit JIT zu entwickeln, weil das noch mehr Performanz bringt?

Und was sagt das jetzt aus? Firmen versuchen Lösungen für ihre Bedürfnisse zu finden. Wer mit PHP klar kommt, so be it! Immer diese Glaubenskriege :D
 
Top