davidsperling
asked on
Don't quite understand session_start();
Hi experts! I'm modifying an open source community script and ran into some headache...
The site used register_globals for session data and that worked just fine on Hotel #1. However, on Hotel #2 they run PHP5 with Safe Mode on so I had to rewrite the code with session_start() instead.
You know...
<?
session_start();
$_SESSION["MyVar"]="Hello" ;
...
?>
Works almost fine. I'ts just that you'll have to login twice. (Or try to reach a restricted page befor you login)
As you can see from the log below (if you haven't fallen asleep...), the script uses a lot if include files.
This line verifies that $_SESSION[user][logged] is set:
0001204495,"Login.php: session(user)(logged)=yes" ,"2007-06- 12 22:22:09",
Then it's time for app-head.php again - and now it's not set:
0001204504,"app-head.php: session(user)(logged)= ","2007-06-12 22:22:09",
And not in member.php either:
the app-head.php above is included in member.php with require_once("app-head.php ")
0001204507,"Member.php: A - _session[user][logged]="," 2007-06-12 22:22:09",
So, we'll have to login again then. It works in login.php this time too:
0001204534,"Login.php: session(user)(logged)=yes" ,"2007-06- 12 22:22:19",
And now it also works in app-head.php (which is required_once by almost every page):
0001204543,"app-head.php: session(user)(logged)= yes","2007-06-12 22:22:19",
We're up and running!
But I don't wanna login twice.... See my problem?
Thought I was gonna find a solution fast, but no... I need help on this one!
HERE'S MY DEBUG TABLE (in MySql):
Query SELECT * FROM q_ht_debug_log where date_time >= '2007-06-12 22:',
"debug_id","debug_msg","da te_time"," millisec"
0001204475,"version.php"," 2007-06-12 22:21:59",
0001204476,"app-head.php: session(user)(logged)= ","2007-06-12 22:21:59",
0001204477,"index.php","20 07-06-12 22:21:59",
0001204478,"template-loade r.php","20 07-06-12 22:21:59",
0001204479,"templates->sec tion-main. php: ChoosePage=index.php","200 7-06-12 22:21:59",
0001204480,"tpl-index.php" ,"2007-06- 12 22:21:59",
0001204481,"home-left.php" ,"2007-06- 12 22:21:59",
0001204482,"login-box.php" ,"2007-06- 12 22:21:59",
0001204483,"app-foot.php", "2007-06-1 2 22:21:59",
0001204484,"version.php"," 2007-06-12 22:22:09",
0001204485,"app-head.php: session(user)(logged)= ","2007-06-12 22:22:09",
0001204486,"login.php","20 07-06-12 22:22:09",
0001204487,"Login.php: A","2007-06-12 22:22:09",
0001204488,"Login.php: D","2007-06-12 22:22:09",
0001204489,"clean-dblog.ph p","2007-0 6-12 22:22:09",
0001204490,"Login.php: E","2007-06-12 22:22:09",
0001204491,"Login.php: F","2007-06-12 22:22:09",
0001204492,"Login.php: J","2007-06-12 22:22:09",
0001204493,"Login.php: L","2007-06-12 22:22:09",
0001204494,"Login.php: M","2007-06-12 22:22:09",
0001204495,"Login.php: session(user)(logged)=yes" ,"2007-06- 12 22:22:09",
0001204496,"Login.php: N","2007-06-12 22:22:09",
0001204497,"Login.php: O","2007-06-12 22:22:09",
0001204498,"Login.php: P","2007-06-12 22:22:09",
0001204499,"Login.php: R","2007-06-12 22:22:09",
0001204500,"Login.php: S","2007-06-12 22:22:09",
0001204501,"Login.php: T","2007-06-12 22:22:09",
0001204502,"Login.php: U","2007-06-12 22:22:09",
0001204503,"version.php"," 2007-06-12 22:22:09",
0001204504,"app-head.php: session(user)(logged)= ","2007-06-12 22:22:09",
0001204505,"member.php","2 007-06-12 22:22:09",
0001204506,"Member.php: A - Shouldnt be here","2007-06-12 22:22:09",
0001204507,"Member.php: A - _session[user][logged]="," 2007-06-12 22:22:09",
0001204508,"Member.php: A - UserLogged=","2007-06-12 22:22:09",
0001204509,"get-profile.ph p","2007-0 6-12 22:22:09",
0001204510,"template-loade r.php","20 07-06-12 22:22:09",
0001204511,"templates->sec tion-main. php: ChoosePage=member.php","20 07-06-12 22:22:09",
0001204512,"tpl-member.php ","2007-06 -12 22:22:09",
0001204513,"app-foot.php", "2007-06-1 2 22:22:09",
0001204514,"version.php"," 2007-06-12 22:22:09",
0001204515,"app-head.php: session(user)(logged)= ","2007-06-12 22:22:09",
0001204516,"index.php","20 07-06-12 22:22:09",
0001204517,"template-loade r.php","20 07-06-12 22:22:09",
0001204518,"templates->sec tion-main. php: ChoosePage=index.php","200 7-06-12 22:22:09",
0001204519,"tpl-index.php" ,"2007-06- 12 22:22:09",
0001204520,"home-left.php" ,"2007-06- 12 22:22:09",
0001204521,"login-box.php" ,"2007-06- 12 22:22:09",
0001204522,"app-foot.php", "2007-06-1 2 22:22:09",
0001204523,"version.php"," 2007-06-12 22:22:19",
0001204524,"app-head.php: session(user)(logged)= ","2007-06-12 22:22:19",
0001204525,"login.php","20 07-06-12 22:22:19",
0001204526,"Login.php: A","2007-06-12 22:22:19",
0001204527,"Login.php: D","2007-06-12 22:22:19",
0001204528,"clean-dblog.ph p","2007-0 6-12 22:22:19",
0001204529,"Login.php: E","2007-06-12 22:22:19",
0001204530,"Login.php: F","2007-06-12 22:22:19",
0001204531,"Login.php: J","2007-06-12 22:22:19",
0001204532,"Login.php: L","2007-06-12 22:22:19",
0001204533,"Login.php: M","2007-06-12 22:22:19",
0001204534,"Login.php: session(user)(logged)=yes" ,"2007-06- 12 22:22:19",
0001204535,"Login.php: N","2007-06-12 22:22:19",
0001204536,"Login.php: O","2007-06-12 22:22:19",
0001204537,"Login.php: P","2007-06-12 22:22:19",
0001204538,"Login.php: R","2007-06-12 22:22:19",
0001204539,"Login.php: S","2007-06-12 22:22:19",
0001204540,"Login.php: T","2007-06-12 22:22:19",
0001204541,"Login.php: U","2007-06-12 22:22:19",
0001204542,"version.php"," 2007-06-12 22:22:19",
0001204543,"app-head.php: session(user)(logged)= yes","2007-06-12 22:22:19",
0001204544,"member.php","2 007-06-12 22:22:19",
0001204545,"get-profile.ph p","2007-0 6-12 22:22:19",
0001204546,"template-loade r.php","20 07-06-12 22:22:19",
0001204547,"templates->sec tion-main. php: ChoosePage=member.php","20 07-06-12 22:22:19",
0001204548,"tpl-member.php ","2007-06 -12 22:22:19",
0001204549,"app-foot.php", "2007-06-1 2 22:22:19",
The site used register_globals for session data and that worked just fine on Hotel #1. However, on Hotel #2 they run PHP5 with Safe Mode on so I had to rewrite the code with session_start() instead.
You know...
<?
session_start();
$_SESSION["MyVar"]="Hello"
...
?>
Works almost fine. I'ts just that you'll have to login twice. (Or try to reach a restricted page befor you login)
As you can see from the log below (if you haven't fallen asleep...), the script uses a lot if include files.
This line verifies that $_SESSION[user][logged] is set:
0001204495,"Login.php: session(user)(logged)=yes"
Then it's time for app-head.php again - and now it's not set:
0001204504,"app-head.php: session(user)(logged)= ","2007-06-12 22:22:09",
And not in member.php either:
the app-head.php above is included in member.php with require_once("app-head.php
0001204507,"Member.php: A - _session[user][logged]=","
So, we'll have to login again then. It works in login.php this time too:
0001204534,"Login.php: session(user)(logged)=yes"
And now it also works in app-head.php (which is required_once by almost every page):
0001204543,"app-head.php: session(user)(logged)= yes","2007-06-12 22:22:19",
We're up and running!
But I don't wanna login twice.... See my problem?
Thought I was gonna find a solution fast, but no... I need help on this one!
HERE'S MY DEBUG TABLE (in MySql):
Query SELECT * FROM q_ht_debug_log where date_time >= '2007-06-12 22:',
"debug_id","debug_msg","da
0001204475,"version.php","
0001204476,"app-head.php: session(user)(logged)= ","2007-06-12 22:21:59",
0001204477,"index.php","20
0001204478,"template-loade
0001204479,"templates->sec
0001204480,"tpl-index.php"
0001204481,"home-left.php"
0001204482,"login-box.php"
0001204483,"app-foot.php",
0001204484,"version.php","
0001204485,"app-head.php: session(user)(logged)= ","2007-06-12 22:22:09",
0001204486,"login.php","20
0001204487,"Login.php: A","2007-06-12 22:22:09",
0001204488,"Login.php: D","2007-06-12 22:22:09",
0001204489,"clean-dblog.ph
0001204490,"Login.php: E","2007-06-12 22:22:09",
0001204491,"Login.php: F","2007-06-12 22:22:09",
0001204492,"Login.php: J","2007-06-12 22:22:09",
0001204493,"Login.php: L","2007-06-12 22:22:09",
0001204494,"Login.php: M","2007-06-12 22:22:09",
0001204495,"Login.php: session(user)(logged)=yes"
0001204496,"Login.php: N","2007-06-12 22:22:09",
0001204497,"Login.php: O","2007-06-12 22:22:09",
0001204498,"Login.php: P","2007-06-12 22:22:09",
0001204499,"Login.php: R","2007-06-12 22:22:09",
0001204500,"Login.php: S","2007-06-12 22:22:09",
0001204501,"Login.php: T","2007-06-12 22:22:09",
0001204502,"Login.php: U","2007-06-12 22:22:09",
0001204503,"version.php","
0001204504,"app-head.php: session(user)(logged)= ","2007-06-12 22:22:09",
0001204505,"member.php","2
0001204506,"Member.php: A - Shouldnt be here","2007-06-12 22:22:09",
0001204507,"Member.php: A - _session[user][logged]=","
0001204508,"Member.php: A - UserLogged=","2007-06-12 22:22:09",
0001204509,"get-profile.ph
0001204510,"template-loade
0001204511,"templates->sec
0001204512,"tpl-member.php
0001204513,"app-foot.php",
0001204514,"version.php","
0001204515,"app-head.php: session(user)(logged)= ","2007-06-12 22:22:09",
0001204516,"index.php","20
0001204517,"template-loade
0001204518,"templates->sec
0001204519,"tpl-index.php"
0001204520,"home-left.php"
0001204521,"login-box.php"
0001204522,"app-foot.php",
0001204523,"version.php","
0001204524,"app-head.php: session(user)(logged)= ","2007-06-12 22:22:19",
0001204525,"login.php","20
0001204526,"Login.php: A","2007-06-12 22:22:19",
0001204527,"Login.php: D","2007-06-12 22:22:19",
0001204528,"clean-dblog.ph
0001204529,"Login.php: E","2007-06-12 22:22:19",
0001204530,"Login.php: F","2007-06-12 22:22:19",
0001204531,"Login.php: J","2007-06-12 22:22:19",
0001204532,"Login.php: L","2007-06-12 22:22:19",
0001204533,"Login.php: M","2007-06-12 22:22:19",
0001204534,"Login.php: session(user)(logged)=yes"
0001204535,"Login.php: N","2007-06-12 22:22:19",
0001204536,"Login.php: O","2007-06-12 22:22:19",
0001204537,"Login.php: P","2007-06-12 22:22:19",
0001204538,"Login.php: R","2007-06-12 22:22:19",
0001204539,"Login.php: S","2007-06-12 22:22:19",
0001204540,"Login.php: T","2007-06-12 22:22:19",
0001204541,"Login.php: U","2007-06-12 22:22:19",
0001204542,"version.php","
0001204543,"app-head.php: session(user)(logged)= yes","2007-06-12 22:22:19",
0001204544,"member.php","2
0001204545,"get-profile.ph
0001204546,"template-loade
0001204547,"templates->sec
0001204548,"tpl-member.php
0001204549,"app-foot.php",
Are you coding session_start(); on each page?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
>Are you coding session_start(); on each page?
-No, should I? I think i use it in app-head.php only. Maybe somewhere else, don't remember the last state ;-) If I use it in too many places, login doesn't work at all.
What is the logic behind session_start() ?
-No, should I? I think i use it in app-head.php only. Maybe somewhere else, don't remember the last state ;-) If I use it in too many places, login doesn't work at all.
What is the logic behind session_start() ?
ASKER
>On your first page (May be index.php), session is not getting created.
>use session_destroy first and then use session_start
I'll try that!
You mean like this?
index.php:
--------------
<?
session_destroy(); //destroy old session data?
session_start();
$_SESSION("David")="Yo"; //will now work 'til index.php is called for again...
?>
>use session_destroy first and then use session_start
I'll try that!
You mean like this?
index.php:
--------------
<?
session_destroy(); //destroy old session data?
session_start();
$_SESSION("David")="Yo"; //will now work 'til index.php is called for again...
?>
Ya
You do not need session_destroy() - and in fact - it may degredate the values of the stored session.
I believe the problem was simply that you were not using session_start() on each page.
session_start() initializes the session for the called page.
I believe the problem was simply that you were not using session_start() on each page.
session_start() initializes the session for the called page.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Right - and I believe that is because session_start() was not being carried forward to each "subsequent" page that was being called in your authentication routine.
First page needs session_start(); and then ANY page that uses the $_SESSION needs session_start();
that should solve your problem.
First page needs session_start(); and then ANY page that uses the $_SESSION needs session_start();
that should solve your problem.
ASKER
Ich habe es gefunden! Jawohl!
The problem was in config.php...
//URL and path
//root url (must be http://yourserver.yourdomain.com)
$home_url = "http://www.mydomain.se"; //end without trailing slash.
$home_url was set to an alternative domain name that also works - but not until the second time!
So much time for such a stupid bug :-)
The problem was in config.php...
//URL and path
//root url (must be http://yourserver.yourdomain.com)
$home_url = "http://www.mydomain.se"; //end without trailing slash.
$home_url was set to an alternative domain name that also works - but not until the second time!
So much time for such a stupid bug :-)
ASKER
And the fix for it...
Config.php (allways required_once)
-------------
//URL and path
//root url (must be http://yourserver.yourdomain.com)
//$home_url = "http://yourserver.yourdomain.com"; //end without trailing slash.
//Add support for multiple domain names, with or without www... /DS 2007
//(This is the fix for the "log in twice bug")
if(!isset($_SESSION["home_ url"]))
{
//The first time only (user goes to adress http://(www.)domainname.xxx)
$home_url="http://".$_SERVER["HTT P_HOST"];
}
else
{
//ev'ry other time
$home_url=$_SESSION["home_ url"];
}
Config.php (allways required_once)
-------------
//URL and path
//root url (must be http://yourserver.yourdomain.com)
//$home_url = "http://yourserver.yourdomain.com"; //end without trailing slash.
//Add support for multiple domain names, with or without www... /DS 2007
//(This is the fix for the "log in twice bug")
if(!isset($_SESSION["home_
{
//The first time only (user goes to adress http://(www.)domainname.xxx)
$home_url="http://".$_SERVER["HTT
}
else
{
//ev'ry other time
$home_url=$_SESSION["home_
}