Hello,
irgendwas versteh ich dann falsch
Oh Mann! Also nochmal... :-)
<?php
## fürs Debugging:
error_reporting(E_ALL);
ini_set('display_errors, 1);
session_start();
## erlaubte Werte für Language
$_lang = array('de','fr','en','es'); ### und so weiter
## Sprache neu setzen, wenn dies gefordert wurde
if (isset($_GET['lang']))
{
## Prüfen ob die angeforderte Sprache einen erlaubten Wert enthält
if (in_array($_GET['lang'], $_lang))
{
$_SESSION['lang'] = $_GET['lang'].'.php';
}
}
if (!isset($_SESSION['lang']))
{
## Das heißt doch, wenn $SESSION['lang'] NICHT exisitiert, soll ich hier
## die standardsprache Deutsch einfügen
## genau!
$_SESSION['lang'] = 'de.php';
}
## Hier die eingestellte Sprache laden
include ($_SESSION['lang']);
Das include mit einem Wert aus einem Request darfst Du nur durchführen, wenn Du diesen vorher auf erlaubte Werte gecheckt hast. Andernfalls könnte der Client hier jedes File, dass für PHP auf deinem Server erreichbar ist, oder sogar welche von außen (über http://) includen lassen. Damit könnte man Deinen Server übernehmen.
So, wie das include jetzt durchgeführt wird, muss sichergestellt sein, dass es die erlaubten Dateien auch gibt. Sonst müsstest Du noch zusätzlich mit is_readable() prüfen.
http://de.php.net/manual/en/function.is-readable.php
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg