die leidigen Sessions
romy
- php
Hi,
ich hätte da nochmals ne Anfrage.
Also ich habe eine Seite index.php, diese includiert seite1.php und seite2.php.
Auf der index.php wird eine Session initiert
$HTTP_SESSION_VARS["test"] = 1; //benutze PHP Version 4.0.4
auf den Seiten 1 und 2, wird diese bereits verwendet.
dort scheint sie aber erst nach einem reload angekommen zu sein.
d.h. wenn in seite1 steht
if($HTTP_SESSION_VARS["test"] == 1) springt er in diesen Zweig beim ersten Aufruf nicht rein, sondern erst nach einem reload.
Was ist da los?
Workaround mit nochmaligen reload fällt aus, da Daten nicht gerade klein sind z.T.
danke
ciao
romy
Hallo Romy,
Also ich habe eine Seite index.php, diese includiert seite1.php und seite2.php.
Ich Glaskugele mal:
1. Scriptstart index.php
2. Sessionstart
3. Variable setzen
4. Seite1.php includiert (die darf dann aber keinen eigenen <head> und <body> etc mehr enthalten!
5. Seite2.php includiert (gilt das gleiche)
6. Session beendet.
Da Seite1 und Seite2 gar keinen eigenen Programme darstellen, sondern nur ausgelagerte Teile von index.php sind, müssen sie im Zeitpunkt der Ausführung ihrer mitgebrachten Statements alle bis dahin in index.php bekannten (Gültigkeitsbereiche beachten!) kennen.
Entweder, Du hast einen Fehler in der Reihenfolge oder Du hast dich missverständlich ausgedrückt und meinst 'was ganz anderes.
Grüße
Tom
Auf der index.php wird eine Session initiert
$HTTP_SESSION_VARS["test"] = 1; //benutze PHP Version 4.0.4auf den Seiten 1 und 2, wird diese bereits verwendet.
dort scheint sie aber erst nach einem reload angekommen zu sein.d.h. wenn in seite1 steht
if($HTTP_SESSION_VARS["test"] == 1) springt er in diesen Zweig beim ersten Aufruf nicht rein, sondern erst nach einem reload.Was ist da los?
Workaround mit nochmaligen reload fällt aus, da Daten nicht gerade klein sind z.T.
danke
ciao
romy
Hi Thomas,
Ich Glaskugele mal:
sorry für die Unverständlichkeit
- Scriptstart index.php
- Sessionstart
- Variable setzen
- Seite1.php includiert (die darf dann aber keinen eigenen <head> und <body> etc mehr enthalten!
- Seite2.php includiert (gilt das gleiche)
- Session beendet.
genau das meine ich!
(beide seiten haben keinen eigenen body und head)
Entweder, Du hast einen Fehler in der Reihenfolge oder Du hast dich missverständlich ausgedrückt und meinst 'was ganz anderes.
Aber es ist genau die Reihenfolge, ich hab nochmals nachgeschaut.
dass war auch mein erster Gedanke.
mhm...
ciao
romy
- Scriptstart index.php
- Sessionstart
- Variable setzen
- Seite1.php includiert (die darf dann aber keinen eigenen <head> und <body> etc mehr enthalten!
- Seite2.php includiert (gilt das gleiche)
- Session beendet.
genau das meine ich!
Wenn
$HTTP_SESSION_VARS["test"]=1;
var_dump($HTTP_SESSION_VARS);
nicht etwas in der Richtung
array(1) {
["test"]=> int(1)
}
ausgibt, hast Du ein unlösbares Problem :) Du wirst dann wohl entweder auf andere Sessionfunktionen zurückgreifen oder wenn-auch-immer darum bitten müssen, vielleicht alle paar Jahre doch mal ein PHP-Update einzuspielen.
Gruß,
soenk.e
Hi,
Wenn
$HTTP_SESSION_VARS["test"]=1;
var_dump($HTTP_SESSION_VARS);
nicht etwas in der Richtung
array(1) {
["test"]=> int(1)
}
ausgibt, hast Du ein unlösbares Problem :) Du wirst dann wohl entweder auf andere Sessionfunktionen zurückgreifen oder wenn-auch-immer darum bitten müssen, vielleicht alle paar Jahre doch mal ein PHP-Update einzuspielen.
auf mich hört ja keiner ;(
Was kann ich denn noch machen. Also das oben beschriebene Problem ist eigentlich keins mehr, aber dafür gibts ein Neues.
Als ob die vars nicht gespeichert werden, wenn ich sie so beschreibe.
Wenn dagegen register_globals = on ist und ich per $test=1 zugreife, gehts.
mhm
ciao
romy
Hallo Romy,
Als ob die vars nicht gespeichert werden, wenn ich sie so beschreibe.
Wenn dagegen register_globals = on ist und ich per $test=1 zugreife, gehts.
mir schwant da was!
Wenn Du PHP 4.0.4 (habe ich auch noch laufen) benutzt, dann darfst Du, wenn register_globals=off ist, keinesfalls mehr die Funktionen session_register() und Co benutzen. In den PHP-Versionen zwischen 4.0.4 und 4.2.x darf man nur eine der drei Möglichkeiten nutzen: session_register("var"), $HTTP_SESSION_VARS["var"]="xyz", oder $_SESSION["var"]="xyz" (wenn es denn schon implementiert ist).
Wenn man in $_SESSION etwas einträgt und dann session_register() benutzt, wird $_SESSION nicht mehr gesichert. usw. Wenn register_globals=off ist, werden aber leider die registrierten $var's auch nicht mehr gesichert. Also wird leider gar nix gesichert. This Bug is a Feature *gg*
Könnte das der Fehler sein?
Liebe Grüße aus http://www.braunschweig.de
Tom
Hi Thomas,
Könnte das der Fehler sein?
ich denke genau das ist es. ich muss session_register("blabla") wegnehmen, wenn ich sowieso Zuweisungen a la $HTTP_SESSION_VARS habe
Kann es leider erst Montag probieren, hoffe das es das ist. Macht zumindest am meisten Sinn
vielen dank echt
ciao
romy, die einen schönen Sonntag wünscht ;)
Hi,
Habe es gerade ausprobiert, aber selbst wenn ich session_register entferne, merkt es sich nichts. Ich weiss nicht weiter...muss ich also einfach register_globals anlassen, wenn ich noch mit dieser Version arbeiten muss?
(Problem: Lokal 4.1.0 läuft es einwandfrei)
Was könnte da noch los sein, wo kann man sich denn da kundig machen.
ciao
romy
Hallo Romy,
hast Du den Server mal neu gestartet? Das klingt auch weider nach diesem Bug in der 4.0.4, der immer auftritt, wenn man doppelte includes durchgeführt hatte.
Liebe Grüße aus http://www.braunschweig.de
Tom