Req #8809 [Opn->Bgs]: Cookieless session with Header redirects
| From: | johannes@php.net | Date: | Wed, 22 Dec 2010 13:34:46 +0000 |
| Subject: | Req #8809 [Opn->Bgs]: Cookieless session with Header redirects | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-157241@lists.php.net to get a copy of this message | ||
Edit report at http://bugs.php.net/bug.php?id=8809&edit=1
ID: 8809
Updated by: johannes@php.net
Reported by: bf at ez dot no
Summary: Cookieless session with Header redirects
-Status: Open
+Status: Bogus
Type: Feature/Change Request
-Package: Feature/Change Request
+Package: *General Issues
Operating System: All
PHP Version: 4.0.4pl1
Block user comment: N
Private report: N
New Comment:
You have to use the SID constant.
To be standards compliante a Location header has to contain the complete
URL. The session rewriter won't touch complete URLs, so it won't touch
the Location header.
Previous Comments:
------------------------------------------------------------------------
[2001-01-23 12:33:01] bf at ez dot no
When PHP is compiled with --enable-trans-sid http redirects with
header() does not work with cookieless sessions.
This must be a bug.
Here is how I fixed it with php code. The header() function should
handle this if --enable-trans-sid is compiled in:
function ezheader( $string )
{
$sid =& $GLOBALS["PHPSESSID"];
if ( isset( $sid ) )
{
$pos = strpos( $string, "?" );
if ( $pos )
{
$string = $string . "&PHPSESSID=$sid";
}
else
{
$string = $string . "?PHPSESSID=$sid";
}
}
header( $string );
}
This code will automatically append the session id if it exists and that
enables cookieless sessions with header( "Location: " ) redirects.
------------------------------------------------------------------------
[2001-01-19 14:44:53] bf at ez dot no
I have code like:
session_start();
if ( !isset( $Foo ) )
{
session_register( "Foo" );
}
else
{
print( $Foo );
}
Header( "Location: /index.php" );
This does not work with cookieless sessions because the session
information is not added to the header() if it's a redirect.
The header() should add the PHPSESSIONID variable to the redirection
path if it contains "Location: " like it does with other URLS and
forms.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=8809&edit=1