lack of understanding of sessions

From: Date: Mon, 08 Aug 2005 18:17:51 +0000
Subject: lack of understanding of sessions
Groups: php.general 
Request: Send a blank email to php-general+get-220241@lists.php.net to get a copy of this message
Hello to all, I think, I have a basic problem of understanding sessions and the storing of variables in sessions. I have a simple script I tested on 3 Apache-servers, one with PHP 5.0, one with 4.3.10 and one with 4.0.6. I have to develop for the 4.0.6 !!! server. The output is different for every server. All servers have session.auto_start off (irrelevant, cause I start the session myself?) and session.use_cookies on The PHP4-servers have register_globals on, on the PHP5 it is set to off. My script is as follows: session_start(); $test = ""; if (!isset($HTTP_SESSION_VARS['test'])) {
       $test = "test";
       $HTTP_SESSION_VARS['test'] = $test;
       echo "if, test: " . $test . "<br>";
       echo "if, sesstest: " . $HTTP_SESSION_VARS['test'] . "<br>";
} else {
       $test = $HTTP_SESSION_VARS['test'];
       echo "else, test: " . $test . "<br>";
       echo "else, sesstest: " . $HTTP_SESSION_VARS['test'] . "<br>";
} echo "test: " . $test . "<br>"; echo "sesstest: " . $HTTP_SESSION_VARS['test'] . "<br>";
         $test2 = "";
if (!session_is_registered('test2')) {
       $test2 = "test2";
       session_register('test2');
       echo "if, test2: " . $test2 . "<br>";
         } else {
       echo "else, test2: " . $test2 . "<br>";
} echo "test2: " . $test2 . "<br>"; When I call the script for the first time the output is: if, test: test if, sesstest: test test: test sesstest: test if, test2: test2 test2: test2 on all servers. Additionaly I get a warning for the session_register-part on the PHP5-server. Thats ok. But when refreshing the script, I get different output: PHP5: else, test: test else, sesstest: test test: test sesstest: test else, test2: test2: That's, what I would have expected. PHP4.3.10: else, test: else, sesstest: test: sesstest: else, test2: test2: I don't understand, why the variables seem to be empty. PHP4.0.6: if, test: test if, sesstest: test test: test sesstest: test else, test2: test2: I don't understand, why it won't go to the else in the HTTP_SESSION_VARS-part. In the session_is_registered-part, the var seems to be empty, too. Why? I don't want to make use of the register_globals on, so think I should prefer the HTTP_SESSION_VARS-part. But what do I get wrong? It would be very, very nice of you to explain it to me or to give me a tip where to read more to approach my understanding. Thank you in advance Sabine

« previous php.general (#220241) next »