Wie ändert man eine Sessionvariable

Sleeper

Mitglied
Hallo,
habe ein kleines Problemm.
Eigentlich nicht schwer, aber ich bekomme es einfach nicht hin.

Habe eine index.php und zwei sprach(.inc)

Wenn man die Site zum erstenmal aufruft, wird als default de angezeigt.
Die Variabel wird in eine Session gespeichert.

Klappt soweit ganz gut.

Damit man aber es auf Englisch haben möchte, kann man ein Bild anklicken.
Dieses Bild habe per Form eingefügt, soll auch weiterhin auf index.php verweisen.
So jetzt sollte das Script "de" aus der Session löschen und durch "en" ersetzten.

Aber das Script zeigt immer de an.

Vielleicht könnt ihr mir dabei helfen.
Habe mit sicherheit nur eine kleinigkeit vergessen ;)

Hier den Code den eingebaut habe:
language.php (included)
PHP:
// Sprache
if($user['Language'] == "de")
    {
$user['Language'] = 'de';
session_unregister("user['Language']");
session_register("user['Language']");
    }
  elseif($user['Language'] == "en")
    {
$user['Language'] = 'en';
session_unregister("user['Language']");
session_register("user['Language']");
    }
  else
    {
$user['Language'] = 'de';
session_unregister("user['Language']");
session_register("user['Language']");
    }


$lang = array();
if(!file_exists($lfile = "./system/lang/".$user['Language'].".lang.php"))
 { die("Language file '".$lfile."' not found!!"); }
include($lfile);
und index.php (nur das Formular)
PHP:
<form action=index.php>
<input type=hidden name=user['Language'] value="en">
<input type=image src=system/img/bPHPen.gif>
</form>
 
$_SESSION["Language"] = "de";

Das $_SESSION ist doch eigentlich nur ein Ersatz für session_register, oder?

Habe es gerademal ausprobiert, aber das funzt auch nicht ist der gleiche effekt.

Das blöde Script nimmt immer den defaultwert.
 
nein, session_register ist eine funktion um eine neue variable zu registrieren.
achja btw: variable keinen array, das kannst du so nicht machen.

mit $_SESSION greifst du auf variablen zu, die bereits registriert sind.

Habe hier zur sicherheit einen kleinen test gemacht:

test.php
PHP:
<?
//test.php

$var = "audi";
session_start();
session_register("var");
print "<a href=\"test2.php\">test2.php</a>";
?>

test2.php
PHP:
<?
//test2.php

session_start();
print $_SESSION["var"]."<br>"; //gibt audi aus
$_SESSION["var"] = "benz";
print "<a href=\"test3.php\">test3.php</a>";
?>

test3.php
PHP:
<?
//test3.php

session_start();
print $_SESSION["var"]; //gibt benz aus
?>
 
Hmmm,
deinen Vorgang habe, zumindestens glaube ich das, verstanden.
Aber, hatte ich vorhin vergessen zu schreiben, warum kann ich mein $user['Language'] nicht so lassen?
Weil dann habe ich, glaube ich, das Problemm das mein Script die entsprechende Datei nicht mehr finden wird.
PHP:
$lang = array();

if(!file_exists($lfile = "./system/lang/".$user['Language'].".lang.php"))

 { die("Language file '".$lfile."' not found!!"); }

include($lfile);
 
language.php
PHP:
session_start();

// Sprache

// erlaubte Sprachen:
$languages = array("de", "en");

if (in_array($_GET['user_language'], $languages)) {
    $_SESSION['user_language'] = $_GET['user_language'];
}
// Default-Sprache:
if (!$_SESSION['user_language']) {
    $_SESSION['user_language'] = "de";
}

$user['Language'] = $_SESSION['user_language'];

if(!file_exists($lfile = "./system/lang/".$user['Language'].".lang.php")) {
    die("Language file '".$lfile."' not found!!");
}

include($lfile);

index.php
PHP:
<form action="index.php">
<input type="hidden" name="user_language" value="en">
<input type="image" src="system/img/bPHPen.gif">
</form>
 
@reima

Habe beides ausprobiert
$_SESSION und $HTTP_SESSION_VARS (da mein Provider nur 4.0.3 hat)

Immer noch der gleiche Effekt.

Schon sehr Merkwürdig.
 
Ich habe es hinbekommen.
Falls jemand auch mal das Problemm bekommt poste ich das mal eben.


language.php
PHP:
if($language == "en")

    {

$user['Language'] = 'en';
$_SESSION["user_language"] = "en";


    }

  else

    {

$user['Language'] = 'de';
$_SESSION["user_language"] = "de";


    }

$lang = array();

if(!file_exists($lfile = "./system/lang/".$user['Language'].".lang.php"))

 { die("Language file '".$lfile."' not found!!"); }

include($lfile);


index.php
PHP:
<form action="index.php?<?=SID ?>" method="POST">

<input type="hidden" name="language" value="en">

<input type="image" src="system/img/bPHPen.gif">

</form>

Besten dank euch beiden für eure Hilfe.
 
Zurück