Original geschrieben von christhebaer
Die Datei, in der die benutzerdaten drinne stehen, sieht folgendermaßen aus:
PHP:
<?
$User = array("Name","Passwort");
?>
Der Name und das passwort sind dabei natürlich mit md5 verschlüsselt.
Würde jemand diese Datei direkt aufrufen, würde er eigentlich nichts sehen. Oder?
Das ist schon richtig. Eigentlich ist das logisch, aber ich schreibe das lieber jetzt nochmal: Die Include-Datei muss dann auch logischerweise die Endung
.php bekommen. Wenn man Include-Datei schon direkt am Dateinamen kenntlich machen will, dann z.b. so:
dateiname.inc.php. Wenn die Datei keine PHP-Endung trägt, wird der Inhalt im Klartext an den Browser geschickt. Wie gesagt, sollte logisch sein, nur noch mal zur Erinnerung
Wer ganz sicher gehen will, der kann das so machen:
Im Hauptscript, welches eine oder mehrere Dateien inkludiert:
PHP:
<?
define('ROOT_PATH', $_SERVER["DOCUMENT_ROOT"].'/includes/');
include(ROOT_PATH.'user.inc.php');
/* ... */
?>
Die Include-Datei user.inc.php sieht dann so aus:
PHP:
<?
if (!defined('ROOT_PATH')) {
die("Security violation");
}
/* ... */
?>
Wird jetzt direkt die Include-Datei aufgerufen, wird noch nicht mal der Inhalt, der nach der If-Abfrage kommt, ausgeführt, da, sofern die Konstante nicht definiert wurde (was im Hauptscript passiert), das Script direkt abgebrochen wird.
Ebenfalls wäre es praktisch, Dateien mit sensiblen Daten (wie z.b. Connect-Daten für die Datenbank) gar nicht erst in einem Ordner unterhalb des Webroots abzulegen. So gibt es keine Möglichkeit, diese Datei über den Browser abzurufen. Im PHP-Script lässt sich die Datei mit dem entsprechendem Pfad ganz gewöhnlich einbinden und stellt keinerlei Unterschied zur "herkömmlichen" Methode dar. Das ganze ist aber abhängig vom Provider bzw. wie dieser den Webserver konfiguriert hat. Mal ein kleines Beispiel zum besseren Verständnis:
Code:
/
/logs
/stats
/htdocs
/includes
So sieht beispielsweise die Ordnerstruktur eines Webservers aus. Im
htdocs-Verzeichnis liegt unser Webroot. Da liegen erst einmal alle Dateien, die man über den Browser abrufen kann. Jetzt liegt aber direkt auf gleicher Ebene der Ordner
includes, in dem jetzt die Include-Dateien liegen. Dieser Ordner ist über den Browser nicht erreichbar, da er nicht im Webroot liegt. Im PHP-Script kann man jetzt mittles:
PHP:
include('/includes/user.inc.php');
die Include-Dateien einbinden.