php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Scriptinitialisierung mit session


 
kressevadder
29-07-2003, 12:28 
 
Hallo,

beim aufruf eines Scripts möcht ich die Sessionvars initialisieren:

<?
session_start()
if (!session_is_registered('var'){$var=wert;session_register('var')}
......
?>

beim ersten Aufruf des Scripts speichert er die Variabeln aber nicht in der Session! Erst beim zweiten Aufruf klappts.

Jemand ne Idee?

Danke Manfred

 
Abraxax
29-07-2003, 12:33 
 
in dem durchlauf des scripten, wo die VAR erst einmal in der session gespeichert wird, kannst du noch nicht auf die session-var zugreifen. das geht erst beim neuladen der seite. das ist auch normal.

aber nur mal so als tipp... session_register() ist out, also veraltet.

benutze lieber direkt die superglobal $_SESSION

 
Konrad
29-07-2003, 12:37 
 
Das hier vielleicht?

Es gibt einen Fehler in PHP 4.2.3 und früheren Versionen. Wenn Sie eine neue Session-Variable mittels session_register() registrieren, referenzieren der Eintrag im globalen Bereich und der $_SESSION-Eintrag bis zum nächsten session_start() nicht den selben Wert. D.h. eine Änderung an der neu registrierten globalen Variablen wird nicht vom $_SESSION-Eintrag widergespiegelt. Dies wurde in PHP 4.3 korrigiert.

 
kressevadder
29-07-2003, 12:43 
 
Danke erstmal

@ Abraxax:

Heisst das, die Variable wird automatisch registriert, sobald ich

$_SESSION['var']=wert;

ausführe?

 
Abraxax
29-07-2003, 12:48 
 
japp

 
kressevadder
29-07-2003, 12:53 
 
O.K.

ich denk das mit der Initialisierung krieg ich am sichersten hin, indem ich die Seite gleich danach mit header() neulade. Ist zwar lästig aber sollt funktionieren.

Vielen Dank an Euch

 
muecke0815
29-07-2003, 18:09 
 
wozu neuladen?

wenn du die variable beim ersten durchgang brauchst, dann arbeite doch mit $var. schließlich setzt du sie ja auch beim erstenmal. solltest sie nur vorher noch mit der $_SESSION nen wert geben (der ja beim erstenmal eben NULL ist) und arbeitest später im script mit $var weiter. dann kannst du bei jedem durchgang damit arbeiten

 
Abraxax
29-07-2003, 18:22 
 
ich würde aber auch neu laden. so wäre immer gewährleistet, dass in $_SESSION was drin ist. und man muss nicht mit zweierlei variablen rummachen..... ;)

 
kressevadder
29-07-2003, 19:23 
 
Seh das auch so wie Abraxax: Der Code wird irgendwie auch sauberer, da man gleich erkennt, was "Umgebungsvariabeln" sind.

 
muecke0815
29-07-2003, 20:40 
 
mit zweien müßte man auch nicht rum machen.
ist nur üblich mit verständnisvolleren vars zu arbeiten.

bei scripten die etwas komplexer sind, kriegt man schnell die krise wenn über all $_SESSION zum verarbeiten din steht.

aber ist ok. doppelte vars sind also genauso unwichtig wie das neu laden!

und damit ihr wißt was ich meine:

<?
session_start();
if (!isset($_SESSION["var"]))
{
$_SESSION["var"] = "session_init";
}

echo $_SESSION["var"] . "<BR>";

$_SESSION["var"] = "new_sess_init";
echo "<a href='" . $_SERVER["PHP_SELF"] . "'>reload</a>";
?>


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:57 Uhr.