www.PHP-Kurs.com

PHP lernen für Einsteiger
und Fortgeschrittene

PHP-Tutorial mit Videos

Sie befinden sich: Startseite » PHP und Sicherheit » einbinden von Dateien - include versus require

Einbinden von Dateien - include versus require

Der PHP-Befehlt include bzw. require ist sehr praktisch, um Module bzw. Funktionslibraries zuzuladen oder HTML-Bereiche, die für mehrere Seiten gleich sind.

<?php
require 'sicherheitsabfrage.php';
include 'html-bereich-kopf.htm';

Dabei sollte man stets bewusst, sich für die passende Form entscheiden.

Verwendung von include versus require

Fallbeispiel: Nehmen wir an, bei jeder PHP-Seite wird am Anfang die Datei für die Authentifizierungsabfrage eingebunden. Dabei sollte man dann unbedingt require nutzen und nicht include. Warum require: Findet das Programm die einzubindende Datei nicht vor, bricht es ab. Die Datei wird unbedingt benötigt (was so das englische Wort „require“ einem nahe legt). Besser man hat einen Abbruch, als eine sehr undefinierte Programmausführung.

Dateien, die für die korrekte Programmausführung nicht "wichtig" sind, können über include eingebunden werden. Das wären z.B. HTML-Dateien, in denen Inhalte und Design stecken. Würden diese fehlen, wäre die Seite zwar nicht mehr schön anzusehen, aber funktioniert weiterhin.

Endung der eingebundenen Dateien

.php ist die Endung der einzubindenden Datei!

Teilweise habe ich auf verschiedene Seiten schon den Hinweis gelesen, dass Dateien, die eingebunden werden sollen, die Endung „.inc“ erhalten sollen. Blödsinn!! Diese Dateien müssen die Endung „.php“ haben. Wenn es unbedingt notwendig ist, dass man erkennt, dass es sich um eine einzubindende Datei handelt, kann auch die Endung in Form von „einzubindendedatei.inc.php“ genutzt werden.

Die fiktive Datei, in der die fiktiven Zugangsdaten für die fiktive MySQL-Datenbank stehen, ist im ersten Beispiel direkt im Klartext zu lesen. Bei diesem Server sind die .inc-Dateien nicht gesperrt. Beim zweiten Server sind diese Dateiendungen gesperrt für den direkten Zugriff von außen. Bei der dritten Datei erfolgt keine Anzeige, da diese von PHP wegen der Endung interpretiert wird - nicht ideal, aber immer noch besser als die ersten 2. Der Unterschied zwischen dem ersten Server und dem zweiten Server ist, dass hier der Hoster den Zugriff auf die Dateien gesperrt hat (Error 403 - Forbidden), in der Annahme, dass die eigenen Kunden eh nicht wissen, was sie tun und man lieber von Haus aus mehr Sicherheit zwangsweise mitgibt.

Die Datei hat den fiktiven Inhalt (zu Demonstrationszwecke):

<?php
// dies ist nur ein fiktives Beispiel für eine falsche 
// Dateiendung!!

function kennwort_kontrollieren ( $eingabe, $kontrolle )
{
  // und hier rein fiktive Zugangsdaten, die so die Welt 
  // eigentlich nicht erfahren sollte, wenn das ein richtiges 
  // Projekt wäre
  $db = new mysqli("publichost", "nobody", "somebody");

  if ( $eingabe == $kontrolle )
  {
    // ...
  }
}
?>

Denn Dateien mit der Endung .inc oder der Endung .txt (usw.) können bei Kenntnis vom Namen einfach im Browser aufgerufen werden. So bekommt der Nutzer direkt den Inhalt angezeigt und kann sich über die gewonnenen Informationen u.U. schnell einen Zugang schaffen.

Besser ist, wenn zusätzlich diese Dateien in nicht öffentlichen Verzeichnisse geschoben werden. Dazu mehr im folgenden Kapitel.

Wenn Sie einen Fehler finden, bitte mitteilen (egal ob Schreibfehler oder inhaltlicher Fehler).

Mit Maus fehlerhafte Stelle markieren und übernehmen mit folgendem Button:



(kann angegeben werden)

Nach Absenden kommt hier Feedback! Bitte nicht doppelt absenden. Danke.

Bitte unterstützen Sie dieses Projekt

Sie können dieses Projekt in verschiedenen Formen unterstützen - wir würden uns freuen und es würde uns für weitere Inhalte motivieren :).

unsere Videos bestellen

Unsere Videos und eBooks bestellen.

Spenden

Sie können uns eine Spende über PayPal zukommen lassen.

Weiterempfehlungen

Empfehlen Sie es weiter - wir freuen uns immer über Links und Facebook-Empfehlungen.

Bücher über Amazon

Bestellen Sie Bücher über folgende Links bei Amazon:

Fehler melden

Vielen Dank für Ihre Hilfe