Antworten auf deine Fragen:
Neues Thema erstellen

PHP - Sprachwechsel in Cookie speichern

Winkili

Noch nicht viel geschrieben

Liebe PSD'ler,

langsam aber sicher nimmt mein selbstgeschriebener Sprachwechsler Form an und funktioniert aktuell auch so wie er soll.
Nun würde ich gerne die gewählte Einstellung für einen eventuellen späteren Besuch in einem Cookie speichern. Leider jedoch möchte der Keks nicht auf die Platte wandern.
Nachfolgend mein betreffenden HTML- und PHP-Code aus dem ihr die Fehler pflücken dürft. ;)

Vielen lieben Dank,
Winkili


HTML:
            <ul>
                <li>Work in Progress</li>
                <li id="german"><a href="<?php echo($_SERVER['PHP_SELF'] . "?lang=de") ?>">Deutsch</a></li>
                <li id="english"><a href="<?php echo($_SERVER['PHP_SELF'] . "?lang=en") ?>">Englisch</a></li>
            </ul>
PHP:
<?php 

    if (isset($_GET['lang'])) {
            $lang = $_GET['lang'];
            setcookie('lang', $lang);
        } 
        elseif (isset($_COOKIE['lang'])) {
            $lang = $_COOKIE['lang'];
            echo("Cookie ist gesetzt.");
        }
        else {
            $lang = "en";
        }
    
    switch ($lang) {
        case "en": $languageFile = "en_US.php";
        break;
        
        case "de": $languageFile = "de_DE.php";
        break;
        
        default: $languageFile = "en_US.php";
    }
    include("languages/" . $languageFile);
    echo($languageFile . " wurde inkludiert");
?>
 
Zuletzt bearbeitet:

netbandit

Aktives Mitglied

AW: PHP - Sprachwechsel in Cookie speichern

Bei setcookie solltest Du wenigstens noch den Zeitpunkt bis wann dieser gültig ist und den Pfad angeben. Ist kein Zeitpunkt angegeben verfällt das Dingen spätestens wenn das Fenster geschlossen wird:

PHP:
setcookie('lang', $lang, time()+3600, '/'); // Stunde gültig (+x-Sekunden), /= für die komplette Domain gültig
Ansonsten sehe ich keine Fehler

Grüße :)
 

Winkili

Noch nicht viel geschrieben

AW: PHP - Sprachwechsel in Cookie speichern

Vielen Dank für deine Antwort.
Ich habe den setcookie deinen Tipps entsprechend angepasst.

PHP:
<?php 

    echo($_SERVER["HTTP_ACCEPT_LANGUAGE"] . "<hr/>");

    if (isset($_GET['lang'])) {
            $lang = $_GET['lang'];
            setcookie('lang', $lang, time()+3600, '/');
        } 
        elseif (isset($_COOKIE['lang'])) {
            $lang = $_COOKIE['lang'];
            echo("Cookie ist gesetzt.");
        }
        else {
            $lang = "en"; // Default-Language
        }
    
    switch ($lang) {
        case "en": $languageFile = "en_US.php";
        break;
        
        case "de": $languageFile = "de_DE.php";
        break;
        
        default: $languageFile = "en_US.php";
    }
    include("languages/" . $languageFile);
    echo($languageFile . " wurde inkludiert");
?>
Dem Skript, welches sich um den Sprachwechsel kümmert habe ich gerade auch nochmals die Zugriffsrechte 777 gegeben.
Zusätzlich habe ich in der Dokumentation nachgelesen, und erfahren, dass keinerlei Ausgabe vor einem setcookie erfolgen darf. Skript ist nach ganz oben gewandert und der Cookie wird nun auch wunderbar gesetzt. Leider jedoch wollen meine assoziative arrays nun jedoch nicht mehr den hinterlegten Inhalt ausspucken, sondern geben (mittels var_dump) nur string(1) "e" und string(1) "d" aus.
 
Zuletzt bearbeitet:

netbandit

Aktives Mitglied

AW: PHP - Sprachwechsel in Cookie speichern

Also bei mir funktioiert selbst der erste Versuch (IE & FF). Entweder Du blockierst da die Cookies oder hast sonst iwo eine blockade :D

Vesuch mal:

PHP:
<?php 

    if (isset($_GET['lang'])) {
            $lang = $_GET['lang'];
            setcookie('lang', $lang, time()+3600, '/');
        } 
        elseif (isset($_COOKIE['lang'])) {
            $lang = $_COOKIE['lang'];
            echo("Cookie ist gesetzt.");
        }
        else {
            $lang = "en"; // Default-Language
        }
    
    switch ($lang) {
        case "en": $languageFile = "en_US.php";
        break;
        
        case "de": $languageFile = "de_DE.php";
        break;
        
        default: $languageFile = "en_US.php";
    }
    include("languages/" . $languageFile);
    echo($languageFile . " wurde inkludiert");
?>             <ul>
                <li>Work in Progress</li>
                <li id="german"><a href="<?php echo($_SERVER['PHP_SELF'] . "?lang=de") ?>">Deutsch</a></li>
                <li id="english"><a href="<?php echo($_SERVER['PHP_SELF'] . "?lang=en") ?>">Englisch</a></li>
                <li id="test"><a href="<?php echo($_SERVER['PHP_SELF']) ?>">Test</a></li>
            </ul>

Nach dem setzen der Sprache einfach mal auf "Test" klicken, ggf, die Seite mal neu laden.

Btw.: Solltest Du vor setcookie keine weiteren Ausgaben an den Browser senden, sonst gibt es Fehlermeldungen.

Grüße :)
 

Winkili

Noch nicht viel geschrieben

AW: PHP - Sprachwechsel in Cookie speichern

Hui. Jetzt müsste alles funktionieren :)
In meiner inkludierten Sprachdatei hat ein ; gefehlt, weshalb die Interpretation fehlerhaft bzw. gar nicht bis zum Ende weiterging.
Der Sprachwechsel-Skript wurde als eigenständige Datei als erstes inkludiert und der Keks ist nun auch auf der Festplatte - alles scheint super zu sein :)

Vielen lieben Dank für deine Hilfe.
 

Curanai

Aktives Mitglied

AW: PHP - Sprachwechsel in Cookie speichern

Kurz nachgeworfen aufgrund eigener Erfahrung: Systemtools wie bspw. "CCleaner" killen derartige Cookies ... sollte der Cookie-Einsatz für Bestands-User (per Login) angedacht sein, bitte die Aufnahme eines "selectedLanguage" für einen User in der Datenbank bedenken und hinterlegen. Somit wäre die Sprache immer verfügbar und nicht an das Cookie gebunden ... wäre sonst frustrierend für einen User (und die sind verwöhnt!).

Denn: Dieser "Keks" würde in meinem System ebenfalls nicht abgelegt werden.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.614
Beiträge
1.538.351
Mitglieder
67.525
Neuestes Mitglied
mgtaucher
Oben