Tutorial gesucht (index.php?section=links)

Ich_halt224

Erfahrenes Mitglied
Hallo,

ich suche ein Tutorial, wie ich auf meiner Homepage Links nicht mehr direkt auf irgendwelche Seiten sondern mit diesem index.php?section=links (unclude heisst das, glaube ich) zu verlinken.

Leider habe ich hier auf der einen Seite schon drei unterschiedliche Tutorials dazu gefunden, wo jeder meint, er habe es besser und sicherer als der Vorgänger gemacht. Ich als Newbie was PHP angeht bin dadurch total verwirrt und weiß überhaupt nicht, welches Tutorial da am nützlichsten ist.

Es wäre klasse, wenn mir ein etwas erfahrener User (erfahren in PHP) mal einen Link geben könnte zu einem Tutorial, welches er für sinnvoll und gut hält.

Eine kleine Frage noch: Wenn ich das in meiner Homepage einbaue, funktionieren die Links der Homepage auf meinem Computer (also offline) dann nicht mehr? Denn da brauche ich doch einen Server zu, der PHP unterstüzt, was im Offline-Modus nicht geht, oder?

Vielen Dank und liebe Grüße
 
Ein bestes Tutorial zu diesem Thema gibt es nicht wirklich - Angefangen habe ich mit der Einführung in PHP auf php-q.net, welches ich auch (bis auf viele ineffiziente Beispiele, das Vermischen von Eingabe, Verarbeitung und Ausgabe, etc) jedem Anfänger ans Herz legen würde. Am besten wäre es, wenn du dir alle vorherigen Kapitel auch nochmal anschaust.

Wichtig ist prinzipiell nur, dass du keine Eingaben unkontrolliert übernehmen solltest:
PHP:
include BASE_PATH . $_GET['section'];
ist zB nicht sicher, da via ?section=../bla leicht auf übergeordnete Verzeichnisstrukturen zugegriffen werden kann.
Prinzipiell ist es egal, wie, aber lass keine nicht gewollten Ausdrücke durch!
PHP:
switch ( isset( $_GET['section'] ) ? $_GET['section'] : null ) {
    default:
        include BASE_BATH . "main.php";
        break;

    case "modul1":
        include BASE_BATH . "modul1.php";
        break;

    case "modul2":
        include BASE_BATH . "modul2.php";
        break;

    // ...
}
Wäre ein Beispiel, welches an sich schon total sicher ist von der Art der Einbindung. Nur du kannst festlegen, was wohin geht. Essenziell ist wohl auch das Angeben absoluter Pfade. Angenommen du rufst eine PHP aus dem HttpDocuments-Root auf, so ist der angenommene Basispfad der zu diesem Verzeichnis (gilt dann auch für Dateien, die aus anderen Verzeichnissen importiert werden). Ruft jemand jedoch nun eine Datei in einem anderen Verzeichnis auf, so stimmen die relativen Pfade nicht mehr mit ihren absoluten Zielen überein.

Zu deiner zweiten Frage empfehle ich dir als Einsteiger eine Windows-Apache-PHP-MySQL-Umgebung, wie zum Beispiel XAMPP. XAMPP kannst du dir mit einem Installer herunterladen, der dir fast komplett automatisiert einen eigenen Apache-Server mit PHP- und MySQL-Schnittstelle bereitstellt. Diesen kannst du lokal verwenden und bist nicht an einen entfernten Server gebunden. Ob die Links dann und wann wie funktionieren, hängt vor allem ab, wie du verlinkst. Persönlich bevorzuge ich absolute URLs ohne Host-Angaben, denn mit ist man recht unflexibel, was den Hostwechsel angeht. Relative Verweise hingegen sind vor allem beim Verlinken verteilter Inhaltsverzeichnisse ungünstig, sollten aber für den Anfang gut geeignet sein um die Materie zu verstehen.
 
Also ich finde das hier recht gut.
Dort ganz unten sind noch 3 Links die du dir auch durchlesen solltest.

Mal sehen was die anderen noch sagen ;)
 
http://www.drweb.de/php/sichere-includes.shtml

Eigentlich sind Includes, die von der GET-Abfrage geschickt wurden, sehr unsicher, aber dennoch, auch das Beispiel bei drweb ist voll unsicher.

PHP:
if (isset($_GET['topic']) && in_array($_GET['topic'], $inc_array) ) {

// ACHTUNG, REGISTER GLOBALS MUSS AUCH IN DIESER SICHEREN FORM AUF OFF SEIN!
$topic = "";
switch($_GET['topic']) {
case 'index' : $topic = 'index'; break;
case 'news' : $topic = 'index'; break;
case 'gudw' : $topic = 'gottunddiewelt'; break;
default: $topic = 'index';
}
include("./includes/".$topic.".inc.php");
} else {
include("./includes/index.inc.php");
}

Dieses Snippet ist schon sicherer, aber optimal wäre, wenn du für jede Aktion eine Datei machen willst und in den Dateien sind die unterfunktionen, so könntest du schnell die Orierentierung verlieren.

Zu deiner frage:

Natürlich könnte keiner auf deine Seite wenn du offline bist, da dein Server angepingt wird (normal port : 80) und dein Server, Daten zurückliefert (interpretierte). Wenn du allerdings einen Root oder V-Server hast oder meinetwegen auch einen Webhost Paket etc. dann ist es immer online außer natürlich es folgen Wartungsarbeiten die vom Provider durchgeführt werden oder so :D

MfG
KD3
 
Hm ich sehe grad das von mir gepostete Tutorial sieht dem von tut.php-quake.net verdammt ähnlich :p
 
Ich war mal so frei und hab den Titel des Threads etwas aussagekräftiger gestaltet.
Ich möchte dich bitte, das nächstes mal auch drauf zu achten.

MFG

Sascha
 
Die vielen unterschiedlichen Tutorials und Meinungen zu ein und demselben Thema sind tatsächlich ein Problem. Deswegen habe ich auch bereits vorgeschlagen, diese [thread=305774]in einem Wiki[/thread] zusammenzufassen. Bisher ist es aber nur bei einem Vorschlag geblieben.


Was deine eigentlich Frage angeht: Es gibt wie du selbst siehst unterschiedliche Ansätze. Aber alle sollten eins gemeinsam haben: die Eingabewerte dürfen nicht ungeprüft verarbeitet werden!
Einige setzen dabei auf eine feste Positivliste (ob als Array, switch- oder if-elseif-Struktur), andere nutzen direkt das Dateisystem Vorgabe. In keine Fall sollte jedoch die Eingabe ungeprüft weiterverwendet werden, da dadurch ernste Sicherheitsrisiken bestehen.
 
Vielen Dank für eure Hilfe und Tips!

Leider bin ich im Bereich PHP ein Newbie, und es lohnt sich ehrlich gesagt für mich auch nicht, PHP zu lernen, da ich es nur sehr selten benötige.

Wenn es hier also jemanden gibt, der das kann, bißchen Geld verdienen will und Zeit hat, mir sowas zu erstellen (Homepage ist schon vorhanden, möchte nur, dass die Addy der Links nicht direkt angezeigt wird und sollte nicht das unsicherste System sein), dann würde ich mich über eine PN mit Vergütungsvorstellung freuen!

Vielen Dank noch einmal für die vielen Antworten!
 
Zurück