Session ändern / Dynamische Sprachauswahl
Pieti
- php
Hallo erstmal,
ich habe meine Seite in zwei Sprachen laufen Deutsch und Englisch. Über eine Session wird die ausgewählte Sprache jeweils im nächsten Menüpunkt weitergegeben (die Seite ist mit PHP aufgebaut). Mein Problem ist nun wenn ich mich in einem Menüpunkt befinden und die Sprache ändern möchte falle ich wieder auf die index-Seite zurück. Das liegt wohl an der Methode die ich benutze die Sprache zu ändern, mein Code sieht wie folgt aus:
Die Session:
<?php
//starts session
session_start();
//defines existing languages
$existing_languages = array ( 'de', 'en' );
if(isset($_GET['lang']) && in_array($_GET['lang'], $existing_languages) ) {
$_SESSION['language'] = $_GET['lang']; }
else { if(!isset($_SESSION['language'])) {
$_SESSION['language'] = "de"; }} //default language = deutsch
//includes language file
include($_SESSION['language'] . "/language.php");
?>
Die Links zum ändern:
<a href="index.php?lange=de" target="_self" id="de">Deutsch</a>
<a href="index.php?lange=en" target="_self" id="en">Englisch</a>
Wie kann ich die Session, also ob "de" oder "en" anders ändern, so dass ich in dem momentanen Menüpunkt bleibe?
Hello,
<a href="index.php?lange=de" target="_self" id="de">Deutsch</a>
<a href="index.php?lange=en" target="_self" id="en">Englisch</a>
sofern dein Sprachwechselcode nicht nur in der index.php sondern überall enthalten ist (z.B. per include), dann könntest du den link ändern zu
href="$_SERVER["PHP_SELF"]?lang=de"
ansonsten musst du in der index.php nach dem Sprachwechsel eine Weiterleitung starten:
i. href ändern, exemplarisch index.php?lang=de&page=seite.php
ii. Umleitung mittels header() - beachte Hinweis zu Ausgaben vor dem header()-Aufruf.
MfG
Rouven
Hello,
sofern dein Sprachwechselcode nicht nur in der index.php sondern überall enthalten ist (z.B. per include), dann könntest du den link ändern zu
href="$_SERVER["PHP_SELF"]?lang=de"
Da würde ich lieber $_SERVER['SCRIPT_NAME'] benutzen.
$_SERVER['PHP_SELF'] kann vom Script-Namen abweichen.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Das Problem ist dass meine Url in etwa so aufgebaut ist:
...index?page=seite1.php
...index?page=seite2.php
...index?page=seite3.php
Da funktioniert es leider nicht wenn ich es bei dem Link zum ändern z.b. so machen würde:
...index?lang=de?page=seite1.php
...index?lang=de?page=seite2.php
...
bzw. statt "de" halt dann "en"
Hast du das vllt. versucht mir mir deiner Methode zu zeigen, Rouven?
sofern dein Sprachwechselcode nicht nur in der index.php sondern überall enthalten ist (z.B. per include), dann könntest du den link ändern zu
href="$_SERVER["PHP_SELF"]?lang=de"
ansonsten musst du in der index.php nach dem Sprachwechsel eine Weiterleitung starten:
i. href ändern, exemplarisch index.php?lang=de&page=seite.php
ii. Umleitung mittels header() - beachte Hinweis zu Ausgaben vor dem header()-Aufruf.
Wenn dann versteh ichs grad net, kannst dus mir bitte ausführlicher zeigen dann check is vllt. gleich? Wär super! Und danke schonmal.
Hello,
Da funktioniert es leider nicht wenn ich es bei dem Link zum ändern z.b. so machen würde:
...index?lang=de?page=seite1.php
...index?lang=de?page=seite2.php
das ergibt ja auch nichts sinnvolles - zwischen "de" und "page" solltest du ein "&" unterbringen, wenn dein Skript sowieso mit sowas umgehen kann.
MfG
Rouven
Hello,
Da funktioniert es leider nicht wenn ich es bei dem Link zum ändern z.b. so machen würde:
...index?lang=de?page=seite1.php
...index?lang=de?page=seite2.php
das ergibt ja auch nichts sinnvolles - zwischen "de" und "page" solltest du ein "&" unterbringen, wenn dein Skript sowieso mit sowas umgehen kann.MfG
Rouven
Jo des haut schon gut hin wenn ichs so mach (^^wurde von euch auch schonmal gepostet):
<a href="index.php?lang=de&page=seite1.php" target="_self" id="de">Deutsch</a>
<a href="index.php?lang=en&page=seite1.php" target="_self" id="en">Englisch</a>
Ein Problem noch, wie lese ich z.b. aus solch einer Url korrekt die page, also hier "seite1.php" aus um es oben in den Link jeweils einzusetzen? Bsp.:
...index.php?page=seite1.php
Beim mir kommt wenn ich
<? echo ($_GET['page']) ?>
als Antwort
de/seite1.php
und das "de/" muss für den Link oben weg das es funktioniert!?
Ein Problem noch, wie lese ich z.b. aus solch einer Url korrekt die page, also hier "seite1.php" aus um es oben in den Link jeweils einzusetzen? Bsp.:
...index.php?page=seite1.phpBeim mir kommt wenn ich
<? echo ($_GET['page']) ?>
als Antwort
de/seite1.php
und das "de/" muss für den Link oben weg das es funktioniert!?
Habs rausbekommen, Problem gelöst!
Mit folgender Funktion werden die ersten drei Symbole/Buchstaben/Zahlen, wie auch immer, von $_GET['page'] (also de/seite1.php) enfernt. Bei mir ist das "de/" bzw. "en/". Hier die Funkrion:
<? echo substr($_GET['page'], 3) ?>
(Je höher die Zahl (hier "3") desto mehr wird von links aus "gelöscht", wird die Zahl negativ, also je kleiner, wird von rechts nach links "gelöscht")
Hello,
Das Problem ist dass meine Url in etwa so aufgebaut ist:
...index?page=seite1.php
...index?page=seite2.php
...index?page=seite3.phpDa funktioniert es leider nicht wenn ich es bei dem Link zum ändern z.b. so machen würde:
...index?lang=de?page=seite1.php
...index?lang=de?page=seite2.php
aber wenn Du es so machst, wie es vorgesehen ist:
index?lang=de&pg=1
index?lang=de&pg=2
und dann in der index.php entsprechend auswählst, welche Seite angezeigt werden soll.
Nur nicht den Fehler machen, und den GET-Parameter für die Seite dirket an include() weitergeben!
Das wäre eine Injektionsmöglichkeit.
gleich? Wär super! Und danke schonmal.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom