Session wird nicht übertragen

karl123

Erfahrenes Mitglied
Hallo allerseits,

Ich will eine Einstellung (die Sprache) auf einer meiner Seiten ändern und dann beim aufrufen einer anderen Seite die geänderte Sprache sehen.
Dazu starte ich jede Seite mit
session_start();

Danach setze ich die Sprache
PHP:
if (isset($_GET['lang']) && $_GET['lang']=='en') $language_default = 'en'; // coming from StangerWeb.com
$language = $language_default;
if (isset($_POST['language']) && ($_POST['language']=='de' || $_POST['language']=='en')) {
	$language = $_POST['language'];
} else {
	if (isset($_SESSION['language']) && ($_SESSION['language']=='de' || $_SESSION['language']=='en')) {
			$language = $_SESSION['language'];
		}
//	}
}
$_SESSION['language'] = $language;

Mit meinem Testserver XAMPP funktioniert alles. Jetzt habe ich die Seite bei meinem Provider - die Sprache wird nicht auf eine andere Seite übertragen. Ich habe überprüft: $_SESSION['language'] steht beim Aufruf einer neuen Seite immer auf 'de'.

Mein Provider sagt, dass bei ihm alles ok ist; weiß jemand, wo der Fehler stecken könnte?
 
Anhand dieses kleinen Codeschnipsels ist es schwer eine Vermutung anzustellen. Dass es am Provider liegt ist allerdings wirklich eher ungewöhnlich. Das einzige was ich mir vorstellen könnte wäre ein Unterschied zwischen deiner PHP.ini und der des Providers.

Hast du in deinem Browser evtl. Cookies ausgeschaltet? Sollte das so sein und der Provider hat session.use_cookies_only (oder so ähnlich) auf true, könnte das ein Problem sein.

Andernfalls könnte es auch ein Problem sein, wenn der Provider session.use_cookies auf false gesetzt hat, denn dann bist du gezwungen die Session-Id per GET zu übertragen.
 
Hallo allerseits,

mein Provider (Net-Build GmbH) hat den Fehler gefunden:

register_globals ist aktiviert.
Mit der lokalen Variabel $language habe ich die namensgleiche $_SESSION['language'] geleert.
Umbenennen von $_SESSION['language'] auf $_SESSION['language_ses'] war die einfache Lösung.
 
Zurück