ID:               49462
 Updated by:       j...@php.net
 Reported By:      greg dot solak at profiletwist dot com
-Status:           Open
+Status:           Feedback
 Bug Type:         Session related
 Operating System: Linux
 PHP Version:      5.3.0
 New Comment:

Does this happen with PHP 5.2.10 ? (hint: works just fine for me on
several sites without any problems..)


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

[2009-09-03 23:01:05] greg dot solak at profiletwist dot com

Description:
------------
PHP SESSION variable $_SESSION['user_level'] is not saved after the
page is redirected using header(location: ...). Session_write_close()is
used right before redirect. After redirect die() is called. After a
second attempt at login, everything works!

Reproduce code:
---------------
<?php
// If login successfully ->

// Change session properties
$_SESSION['user_level'] = 7;
// Force session to save changes before redirection
session_write_close(); // REQUIRED
// Regenerate session id for security + fix bug in which some session
variables are lost during redirect
session_regenerate_id(true);
// Redirect to Access main page
header('Location: http://www.domain.com/access/main.php');
die();

?>

Expected result:
----------------
At the new page (the one the user was redirected to) the
$SESSION['user_level'] should == 7. However, the session variable was
not saved, as the user is redirected back to the login page. After a
second attempt at logging in, everything works as expected.

Actual result:
--------------
Redirected back to login page, because when php checked if the user had
the proper credentials

if ($_SESSION['user_level'] != 7) {
 // redirect back to login page
}

Other improtant information: session_start(); is called on every page.


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


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

Reply via email to