languagechange

Headymaster

Erfahrenes Mitglied
Hallo!

Ich habe mir eine Klasse geschrieben, mit der ich per Klick die gesamte Sprache auf der Seite ändern kann.
So nun das ganze funktioniert über Links und wird über eine $_GET Variable abgefangen.

Also zum Beispiel index.php?lang=en.
Durch diesen Link wird die LanguageKlasse aufgerufen und dann wird eine Session $_SESSION['user_language'] gesetzt.

So mein Problem ist nun, dass wenn ich halt zum Beispiel eine der Flaggen anklicke, ich wieder auf die Startseite komme und nicht auf der aktuellen Seite bleibe und dort halt die Session geschrieben wird.

Hier mal ein Codeteil der die Session setzt:
PHP:
function set_lang($get_lang)
		{
	        $_SESSION['language'] = $get_lang;
		}

$get_lang ist hierbei zum Beispiel die Variable die per $_GET geholt wird.

Und die Klasse geht natürlich weiter...also wird vorher noch geprüft ob diese Sprachdatei die angewählt wurde überhaupt existiert und wenn net wird halt die Standardsprache, z.b. Deutsch geladen.


Würde mich auf jeden Fall freuen über Ideen :)

MFG Niels
 
Ganz einfach: Du schreibst einfach die aktuelle Seite mit in die Sprachlinks, sodass du dann nach dem Ändern der Session-Variable einfach wieder auf diese weiterleiten.
 
Ja das wäre ne Idee aba ich habe kein Plan, wie ich den momentanen Aufenthaltsort...also Link auslesen soll um damit arbeiten zu können.

Hättest du da vielleicht ne Idee?

Würd mich freuen :)

MFG Niels
 
Die aktuell angeforderte Adresse (Fragmentbezeichner ausgenommen) befindet sich in der $_SERVER['REQUEST_URI']-Variable.
 
So ein prob gibbet nun noch..

Und zwar habe ich es nun so gemacht:

PHP:
<?php
if ($_GET['lang'])
{
  $lang->set_lang($_GET['lang']);
  header("Location:".$_GET['url']."");
}
?>

So $_GET['url'] beinhaltet immer den letzten Link, wo man sich aufgehalten hat.

So ein Beispiel....ich befinde mich bei index.php?s=gb.php und ändere die Sprache, dann klappt alles wunderbar, ich werde dorthin zurückgeleitet, wo ich war.

Doch habe ich nun noch einen 2. Get Parameter dabei, dann geht es nicht mehr.
Z.B.: index.php?s=gb.php&act=form , klicke ich nun auf Spräche ändern, wird die Sprache geändert und ich werde nach index.php?s=gb.php aber nicht zurück nach index.php?s=gb.php&act=form zurückgeleitet....

Habt ihr ne Idee woran das liegen kann?

Würde mich freuen :)

MFG Niels
 
Du müsstest in dem Fall das "&"-Zeichen in der URL in ein anderes beliebiges Zeichen ändern, da PHP natürlicherweise das dann nicht mehr zur Variable "url" zählt.
Gehen wir davon aus, die Page, wo auf ne andere Sprache gedrückt wurde war folgende:

index.php?s=gb.php&act=form

dann sieht der Link zum Sprache änder ungefähr so aus

index.php?lang=eng&url=s=gb.php&act=form

Sieht komisch aus, mh? PHP interpretiert jetzt natürlich "act" als eigene Variable und ordnet diese nicht mehr der Variable "url" zu. Replacest du jetzt das "&" mit einem "_" und übergibst das weiter, gibt es den Fehler nicht mehr.
Natürlich musst du das dann vorm Weiterleiten wieder zurückreplacen ;)
 
Was meinste mit Sitzung?

Also ich kann nun zwar schon immer besser PHP aber ich bin noch nicht richtig gut drin und deswegen versteh ich auch nicht alles ;-)

Aber wenn du es mir erklärst freue ich mich denn lernen tu ich gerne :)

MFG Niels
 
Zurück