Hi Leute!

Ich hab mir ein Script zusammengewürfelt, das (was mich jetzt schon am meisten wundert)
auch super funktioniert.
ZUMINDEST macht es was es soll hat es den anschein.

Hoffte ihr könntet mal drüberschauen und Fehler oder Verbesserungsvorschläge aufzeigen
Bin nicht so der PHP Guru und würde mich über eure Hilfe freuen

der sinn der sache ist die :

ich möchte mit $_SESSION["language"] eine Sprache übergeben.
dafür includiere ich eine language.php.

Die macht nun folgende schritte:

1.schauen ob Link geklickt wurde (z.B. Deutsch) index.php?changelang=de wenn ja dann
in session schreiben.

2.Wenn nicht Schauen ob die Session schon gesetzt wurde - wenn ja nutzen

3.Wenn nicht schauen ob ein cookie besteht - wenn ja in session übergeben - und nutzen

4.Wenn alles andere nimmer geht schauen welche Browsersprache genutzt wird,
diese dann abgleichen mit array - wenn im array (de, en, nl) vorhanden -
in session schreiben und nutzen -
wenn nicht $bestlanguage='en' in session schreiben und nutzen.

dann mit include("./language/".$_SESSION["language"]."/lang.php") holen wobei die session den ordner de, nl oder en ersetzt und den inhalt mit <?=$lang["irgendwas"]?> ausgeben

(in der de/lang.php als $lang["irgendwas"]="irgendwas in deutsch";
in der en/lang.php als $lang["irgendwas"]="something in english"; )

Da jetzt nicht jeder DAU (sowas wie ich ) index.php?changelang=om setzen soll
und dann nen fehler ausgegeben wird musste ich das array oben nochmal einführen und überprüfen
wenn ich jetzt bei der funktion getlanguage() das array rausnehmen will schmeißt der fehler raus weil der das net findet.

so. für mich ok ... funktioniert alles bestens.
Wenn jetzt jemand anderes das script nutzen möchte muss er aber an zwei stellen das
array und bestlanguage überarbeiten.
das wäre schade, weil wie ich finde ist das ein prima script soweit zum weitergeben

Vielleicht fällt euch dazu noch was ein?! Ich würde mich in jedem Fall freuen

Hier die language.php (wird includiert)

PHP-Code:
<?php
$languages 
= array('en''de''nl');
$bestLanguage 'en';
if (isset(
$_REQUEST["changelang"])) //1. Sprache angeklickt?

//Mache sicher was kann 
function clean($lang
{
    
$lang = @trim($lang);
    if(
get_magic_quotes_gpc()) 
        {
$lang stripslashes($lang);}
    return 
substr($lang02);
    
    
}
        
$newLanguage=clean($_REQUEST["changelang"]);
        
        if(
in_array($newLanguage$languages))
{
 
$_SESSION["language"] = $newLanguage;
}
else
{
$_SESSION["language"] = $bestLanguage; }

        
                

setcookie("language",$_SESSION["language"],(time()+60*60*24*360));
}

// 2. Wenn nicht 
else
{
    
    
//2.1 Schauen ob Session-language noch nicht existiert
    
if (!isset($_SESSION["language"]))
        {
            
// 2.2. Wenn nicht - Schauen ob evtl ein keks voranden ist
            
if(isset($_COOKIE["language"])) 
            { 
$_SESSION["language"] = $_COOKIE["language"]; }
            
// 3. Wenn gar nichts mehr geht Browsersprache raussuchen, dann session-language setzen
            
else 
            {
                function 
getLanguage()
                {
                
$langs " ".$_SERVER['HTTP_ACCEPT_LANGUAGE'];
                   
$languages = array('en''de''nl');
                foreach(
$languages as $code
                {
                
$pos strpos($langs$code);
                if(
intval($pos) != 0) {$position[$code] = intval($pos);}
                }
                 
$bestLanguage 'en';
                if(!empty(
$position)) 
                    {
                        foreach(
$languages as $code
                        {
                            if(isset(
$position[$code]) && $position[$code] == min($position)) 
                            {
$bestLanguage $code;}
                        }
                    }
                return 
$bestLanguage;
                }

                
$_SESSION["language"] = getLanguage();
                
                
// 4. Zur Sicherheit trotzdem keks backen
                
setcookie("language",$_SESSION["language"],(time()+60*60*24*365));
            }
        }
}
?>
ps. zur sicherheit sollte man das cookie auch nochmal überprüfen wer weiß was hacker alles damit anstellen könnten wenn man was übersieht (angst) ...
ist das überhaupt sicher in irgendeiner form?
(würde evtl cookie auch nochmal durch clean jagen lassen)

PS 2: also bevor man das weiter benutzt sollte jemand der davon ahnung hat wirklich mal schauen