Bug #14636 Updated: Session variables are lost when redirecting to a url using header() function.

From: Date: Fri, 21 Dec 2001 13:52:59 +0000
Subject: Bug #14636 Updated: Session variables are lost when redirecting to a url using header() function.
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-74693@lists.php.net to get a copy of this message
ID: 14636
Updated by: sander
Reported By: kannan@tmsassociates.com
Old Status: Open
Status: Duplicate
Bug Type: Session related
Operating System: windows 2000 professional
PHP Version: 4.0.6
New Comment:

Dupe of 6121

Previous Comments:
------------------------------------------------------------------------

[2001-12-21 08:36:04] kannan@tmsassociates.com

I have reviewed the Bugs database against the following IDs

13732 - is closed with no reply or resolution indicated.
12704 - marked Bogus
12679 - does not solve my situation  (session.cookie_domain).  I am not using one.  It is left
blank.
8912 - similar.  But in my case browser refresh on the target page also does not solve the problem.

The only thin that works is clicking on a href link to go to the target page.

I am using Apache Webserver 1.3.22 for Windows.

Kannan


------------------------------------------------------------------------

[2001-12-21 03:12:13] kannan@tmsassociates.com

I have 2 scripts: a script to login a user and set a session variable.  After checking
session_is_registered() I redirect to a url using header().  The target script checks for the
session variable and is not able to find it.

If I use href to go to the target page, the session variable is found.

I have reviewed the bugs database, and the solutions reported for similar cases do not work for me. 
The following are portion of the code used:

I tested the code on a Linux server and it works perfectly.
Thank you.
Kannan

Environment:  Windows 2000, IE 5.5, Linux 4.0.6

Login.php>>
  $db = db_connect();
  $result = mysql_query($query, $db);
  if (mysql_num_rows($result) >0 )
  {
    // if they are in the database register the user id
    $row = mysql_fetch_array($result);
    $suser = $user;
    session_register("suser");
  }
}

if (session_is_registered("suser"))
  {
    if ($redirect<>"")
      header("location: $redirect"); 
    // redirect is instantiated with 'members_only.php'
    else {
         echo "You are logged in as: $suser <br>";
	 echo "suser: $suser<br>";
	 echo "<a href=\"members_only.php\">Members Only</a><br>";
	 echo "<a href=\"logout.php\">Log out</a><br>";  //  =======
redirect to URL ====
			}
  } 
.....

members_only.php>>
<?
  session_start();
  // check session variable
  echo "Members_only<br>";
  echo "$suser<br>";
  if (session_is_registered("suser"))
  {
    echo "Members Only Page<br>";
    echo "<p>You are logged in as $suser.</p>";
    echo "<p>Members only content goes here</p>";
    echo "<a href=\"login.php\">Back to main page</a>";
    echo "<a href=\"logout.php\">Logout</a>";
  }
  else
  {   $redirect = "members_only.php";
      header("location: login.php?redirect=$redirect");
  }

?>

php.ini>>
[Session]
session.save_handler = files
session.save_path = C:\temp
session.use_cookies = 1
session.name = FOO
session.auto_start = 1
session.cookie_lifetime = 60
session.cookie_path = c:\temp
session.cookie_domain = 
session.serialize_handler = php
session.gc_probability = 1
session.gc_maxlifetime = 1440
session.referer_check =
session.entropy_length = 0
session.entropy_file =
session.cache_limiter = private
session.cache_expire = 180
session.use_trans_sid = 1
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"


------------------------------------------------------------------------



Edit this bug report at http://bugs.php.net/?id=14636&edit=1



Thread (10 messages)

« previous php.dev (#74693) next »