Re: Questions Regarding Sessions - Mailing list pgsql-php
From | apz |
---|---|
Subject | Re: Questions Regarding Sessions |
Date | |
Msg-id | 3E7C056A.1090408@nofate.com Whole thread Raw |
In response to | Questions Regarding Sessions (Ludwig Lim <lud_nowhere_man@yahoo.com>) |
List | pgsql-php |
Ludwig Lim wrote: > I've tried testing simple session scripts and it > works, but initializing and using sessions in a > function seems to be a problem for me. do session_start and session_register in global scope, then it seems to work. http://www.php.net/manual/en/function.session-start.php > How can I make the script above to work? I dont know if this is proper 'recommended' php way, but I have an include called myPageStart.inc.php that I load on every page that needs sessions: -------/ START: t1.php /-------------- <? function func1() { global $HTTP_SESSION_VARS; $HTTP_SESSION_VARS["test"]="hello"; } ?> -------/ END: t1.php /-------------- -------/ START: t2.php /-------------- <? include ("myPageStart.inc.php"); include ("t1.php"); func1(); if (session_is_registered($HTTP_SESSION_VARS["test"])){ ..... ?> -------/ END: t1.php /-------------- -------/ START: myPageStart.inc.php /-------------- <? session_start(); session_register("test"); session_register($HTTP_SESSION_VARS["test"]); ?> -------/ END: : mySessionStart.inc.php /-------------- another few notes (by quicly reading: http://www.php.net/manual/en/ref.session.php ) using $HTTP_SESSION_VARS is deprecated, try using just $_SESSION it was ok until PHP 4.0.6, since then use $_SESSION when using $_SESSION, its always global, no need to ask for it to be from global scope in a function. It already is. using session_register is now not needed dont use session_is_registered, there is no need, just use as if any other var with isset, so your if should be just: if (isset($_SESSION[$_SESSION["test"]])) { which brings me to another point. you seem to confuse the idea of session key with session value. $_SESSION["test"]="hello"; here key = "test", value = "hello" as if: $key = "test"; $value = "hello"; $_SESSION[$key] = $value; but then, when you register/check if registered, the key is different $_SESSION["test"]="hello"; session_register($_SESSION["test"]); is same as if: $_SESSION["test"]="hello"; session_register("hello"); or if you prefer to see it through $key , $value then: $key = "test"; $value = "hello"; $_SESSION[$key] = $value; session_register($value); Now, when you do this session_register you tell it that there is another key within session, now we have two keys: $_SESSION["test"] $_SESSION["hello"] I dont think this is what you want, I am including here what I think you really wanted, with what should be up to newest php specs: -------/ START: t1.php /-------------- <? function func1() { $_SESSION["test"]="hello"; } ?> -------/ END: t1.php /-------------- -------/ START: t2.php /-------------- <? include ("myPageStart.inc.php"); include ("t1.php"); func1(); if (isset($_SESSION["test"])){ echo ("Session is registerd <br>"); $x = $_SESSION["test"]; echo ("value of session = $x"); session_destroy(); } ?> -------/ END: t1.php /-------------- -------/ START: myPageStart.inc.php /-------------- <? session_start(); ?> -------/ END: : myPageStart.inc.php /-------------- You mgith want to question myPageStart.inc.php, I also use it, besides starting session, start various counters which later I use to in myPageEnd.inc.php to log what parts of my page took how long to generate, so that I know what to look next to optimize. hope this helps /apz, The moving cursor writes, and having written, blinks on.