By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
444,209 Members | 1,706 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 444,209 IT Pros & Developers. It's quick & easy.

$_SESSION / $HTTP_SESSION_VARS behaviour

P: n/a
I've been trying to integrate some PHP pages of my own with some
existing code. The details of this are for the support forums for that
code (where I have been asking questions), but I wonder if someone here
can enlighten me as to why the problematic code is having the effect it is.

For reasons I don't know, if the PHP version is 5 or greater,
register_long_arrays is false and $_SESSION exists, the following
statement is executed:

$HTTP_SESSION_VARS = $_SESSION;

This line is stopping any subsequent changes to the $_SESSION variable
from being stored in the session file on the server - changes can be
made, but are all lost at the end of the page processing and the value
reverts to whatever it was before the script was executed.

Is this behaviour by design? Why does it happen? Is there a standard
reason why anyone would include a statement like this (security?)?

I'm seeing this behaviour on PHP 5.1.3 / Win 2003 sp1 / IIS 6 and on PHP
5.1.6 / Win XP sp2 / Apache 2.

Thanks for any help!

Regards,
Mike
Nov 1 '06 #1
Share this Question
Share on Google+
12 Replies


P: n/a
Try this:

$HTTP_SESSION_VARS = &$_SESSION;

Nov 1 '06 #2

P: n/a
se***********@gmail.com wrote:
Try this:

$HTTP_SESSION_VARS = &$_SESSION;
Thanks for the suggestion, but as I don't know the intended purpose of
this statement, I don't really want to mess about with it without
understanding a bit more.

I was hoping someone would be able to tell me why a coder (who
presumably knows what they're doing) would write such a statement in the
first place...

Regards,
Mike
Nov 2 '06 #3

P: n/a
Michael Windsor wrote:
For reasons I don't know, if the PHP version is 5 or greater,
register_long_arrays is false and $_SESSION exists, the following
statement is executed:

$HTTP_SESSION_VARS = $_SESSION;
Probably the script was written for PHP version < (something) when the
superglobal arrays were not defined.
Instead of changing the script to use the "new" superglobal arrays, the
programmer chose to copy the $_SESSION array to the $HTTP_SESSION_VARS
and keep everything else referencing $HTTP_SESSION_VARS['index'].
This line is stopping any subsequent changes to the $_SESSION variable
from being stored in the session file on the server - changes can be
made, but are all lost at the end of the page processing and the value
reverts to whatever it was before the script was executed.
Check the very end of the script for a line

$_SESSION = $HTTP_SESSION_VARS;
--
I (almost) never check the dodgeit address.
If you *really* need to mail me, use the address in the Reply-To
header with a message in *plain* *text* *without* *attachments*.
Nov 2 '06 #4

P: n/a
Pedro Graca wrote:
Michael Windsor wrote:
>For reasons I don't know, if the PHP version is 5 or greater,
register_long_arrays is false and $_SESSION exists, the following
statement is executed:

$HTTP_SESSION_VARS = $_SESSION;

Probably the script was written for PHP version < (something) when the
superglobal arrays were not defined.
Instead of changing the script to use the "new" superglobal arrays, the
programmer chose to copy the $_SESSION array to the $HTTP_SESSION_VARS
and keep everything else referencing $HTTP_SESSION_VARS['index'].
>This line is stopping any subsequent changes to the $_SESSION variable
from being stored in the session file on the server - changes can be
made, but are all lost at the end of the page processing and the value
reverts to whatever it was before the script was executed.

Check the very end of the script for a line

$_SESSION = $HTTP_SESSION_VARS;

Thanks for your help.

What you say makes sense and made me realise what the code was for - I'm
afraid I hadn't quite clicked what the test for "register_long_arrays"
was doing: somehow I saw "register_long_arrays" and read
"register_globals" and therefore hadn't realised that $HTTP_SESSION_VARS
isn't pre-populated on my system (by virtue of using the newer,
recommended php.ini in the distribution, as it turns out).

I can't find a corresponding assignment *to* the $_SESSION array in the
same file or that I can trace in any of the other included files. On the
surface, if this were happening, it would appear to perfectly explain my
problem - I write to $_SESSION and it gets overwritten by the contents
of $HTTP_SESSION_VARS at the end of the script.

But this can't be the whole story: I've written code after the last
include that shows the same probem and, in fact, if I remove all the
phpbb code and *just* put "$HTTP_SESSION_VARS = $_SESSION" after
session_start(), it stops $_SESSION behaving properly in exactly the
same way. It doesn't have to be $HTTP_SESSION_VARS, incidentally,
assigning the value of $_SESSION to any other variable has the same effect.

Could this be a bug in PHP?

Thanks again,
Mike
Nov 2 '06 #5

P: n/a
Michael Windsor wrote:
if I [...] put "$HTTP_SESSION_VARS = $_SESSION" after
session_start(), it stops $_SESSION behaving properly [...]

Could this be a bug in PHP?
My PHP does not exhibit that behaviour.
Can it be that you have /something else/ in your code responsible for
the behaviour you describe?
<?php
session_start();

if (rand(0, 1)) {

echo "Using copy of the \$_SESSION array...<br>\n";

$COPY_SESSION = $_SESSION;
if (!isset($COPY_SESSION['count'])) {
$COPY_SESSION['count'] = 0;
}
$val = ++$COPY_SESSION['count'];
if (rand(0, 1)) {
echo "and not copying it back.<br>\n";
} else {
$_SESSION = $COPY_SESSION;
}

} else {

if (!isset($_SESSION['count'])) {
$_SESSION['count'] = 0;
}
$val = ++$_SESSION['count'];

}

echo "Current value is $val.<br>\n";
?>

--
I (almost) never check the dodgeit address.
If you *really* need to mail me, use the address in the Reply-To
header with a message in *plain* *text* *without* *attachments*.
Nov 2 '06 #6

P: n/a
Pedro Graca wrote:
Michael Windsor wrote:
>if I [...] put "$HTTP_SESSION_VARS = $_SESSION" after
session_start(), it stops $_SESSION behaving properly [...]

Could this be a bug in PHP?

My PHP does not exhibit that behaviour.
Can it be that you have /something else/ in your code responsible for
the behaviour you describe?
[snip code]

Your code on my web server exhibits the behaviour I would expect, but it
doesn't quite test the problem I'm having. If your code is amended as
follows:

<?php
session_start();

if (rand(0, 1)) {

echo "Using copy of the \$_SESSION array...<br>\n";

$COPY_SESSION = $_SESSION;
if (rand(0, 1)) {
echo "and not copying it back.<br>\n";
} else {
$_SESSION = $COPY_SESSION;
}
if (!isset($_SESSION['count'])) {
$_SESSION['count'] = 0;
}
$val = ++$_SESSION['count'];

} else {

if (!isset($_SESSION['count'])) {
$_SESSION['count'] = 0;
}
$val = ++$_SESSION['count'];

}

echo "Current value is $val.<br>\n";
?>

counter increments are only shown on pages following a page where a copy
is NOT taken of $_SESSION (i.e. the final else clause is executed),
regardless of whether the copy of $_SESSION is written back to it or
not. Note that all increments in this version of the code are made
directly to the $_SESSION array, never to a copy: the counter *should*
increment on every page load, as far as I can see. It doesn't on my system.
Nov 3 '06 #7

P: n/a
Michael Windsor wrote:
<?php
session_start();

if (rand(0, 1)) {

echo "Using copy of the \$_SESSION array...<br>\n";

$COPY_SESSION = $_SESSION;
if (rand(0, 1)) {
echo "and not copying it back.<br>\n";
} else {
$_SESSION = $COPY_SESSION;
}
if (!isset($_SESSION['count'])) {
$_SESSION['count'] = 0;
}
$val = ++$_SESSION['count'];

} else {

if (!isset($_SESSION['count'])) {
$_SESSION['count'] = 0;
}
$val = ++$_SESSION['count'];

}

echo "Current value is $val.<br>\n";
?>

counter increments are only shown on pages following a page where a copy
is NOT taken of $_SESSION (i.e. the final else clause is executed),
regardless of whether the copy of $_SESSION is written back to it or
not. Note that all increments in this version of the code are made
directly to the $_SESSION array, never to a copy: the counter *should*
increment on every page load, as far as I can see. It doesn't on my system.
This amended script *always* increments the current value for me.
Can you post the result of phpinfo()?

Nov 4 '06 #8

P: n/a
Pedro Graca wrote:
Michael Windsor wrote:
....[snip]...
>
This amended script *always* increments the current value for me.
Can you post the result of phpinfo()?
Sure.

If you'd like a more formatted version, I'll gladly email you the
generated html.

As far as I can recall, I haven't changed anything other than paths from
the default installation settings, excepting that I used the "new
improved" php.ini in the distribution and not the older (but, if I
recall, more compatible php.ini-dist). This installation is a proper
install from the standard distribution.

Although I haven't tested this particular script with it, I have been
seeing similar results on an XP laptop running PHP 5.1.6 installed as
part of the WAMP (http://www.wampserver.com/en/) distribution. Let me
know if the phpinfo() data from there would also be useful.

Thanks,
Mike

PHP Logo
PHP Version 5.1.3

System Windows NT AGORA 5.2 build 3790
Build Date May 1 2006 00:27:04
Configure Command cscript /nologo configure.js
"--enable-snapshot-build" "--with-gd=shared"
Server API ISAPI
Virtual Directory Support enabled
Configuration File (php.ini) Path C:\UnixPrograms\PHP\php.ini
PHP API 20041225
PHP Extension 20050922
Zend Extension 220051025
Debug Build no
Thread Safety enabled
Zend Memory Manager enabled
IPv6 Support enabled
Registered PHP Streams php, file, http, ftp, compress.zlib
Registered Stream Socket Transports tcp, udp
Registered Stream Filters convert.iconv.*, string.rot13,
string.toupper, string.tolower, string.strip_tags, convert.*, consumed,
zlib.*

Zend logo This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies

PHP Credits
Configuration
PHP Core
Directive Local Value Master Value
allow_call_time_pass_reference Off Off
allow_url_fopen On On
always_populate_raw_post_data Off Off
arg_separator.input & &
arg_separator.output & &
asp_tags Off Off
auto_append_file no value no value
auto_globals_jit On On
auto_prepend_file no value no value
browscap C:\WINDOWS\system32\inetsrv\browscap.ini
C:\WINDOWS\system32\inetsrv\browscap.ini
default_charset no value no value
default_mimetype text/html text/html
define_syslog_variables Off Off
disable_classes no value no value
disable_functions no value no value
display_errors On On
display_startup_errors On On
doc_root c:\inetpub\wwwroot c:\inetpub\wwwroot
docref_ext no value no value
docref_root no value no value
enable_dl On On
error_append_string no value no value
error_log no value no value
error_prepend_string no value no value
error_reporting 2047 2047
expose_php On On
extension_dir C:\UnixPrograms\PHP\ext C:\UnixPrograms\PHP\ext
file_uploads On On
highlight.bg #FFFFFF #FFFFFF
highlight.comment #FF8000 #FF8000
highlight.default #0000BB #0000BB
highlight.html #000000 #000000
highlight.keyword #007700 #007700
highlight.string #DD0000 #DD0000
html_errors On On
ignore_repeated_errors Off Off
ignore_repeated_source Off Off
ignore_user_abort Off Off
implicit_flush Off Off
include_path .;C:\Inetpub\wwwroot\qcodo\includes
..;C:\Inetpub\wwwroot\qcodo\includes
log_errors On On
log_errors_max_len 1024 1024
magic_quotes_gpc Off Off
magic_quotes_runtime Off Off
magic_quotes_sybase Off Off
mail.force_extra_parameters no value no value
max_execution_time 30 30
max_input_time 60 60
open_basedir no value no value
output_buffering 4096 4096
output_handler no value no value
post_max_size 8M 8M
precision 14 14
realpath_cache_size 16K 16K
realpath_cache_ttl 120 120
register_argc_argv Off Off
register_globals Off Off
register_long_arrays Off Off
report_memleaks On On
report_zend_debug On On
safe_mode Off Off
safe_mode_exec_dir no value no value
safe_mode_gid Off Off
safe_mode_include_dir no value no value
sendmail_from no value no value
sendmail_path no value no value
serialize_precision 100 100
short_open_tag Off Off
SMTP smtp.ntlworld.com smtp.ntlworld.com
smtp_port 25 25
sql.safe_mode Off Off
track_errors Off Off
unserialize_callback_func no value no value
upload_max_filesize 2M 2M
upload_tmp_dir no value no value
user_dir no value no value
variables_order GPCS GPCS
xmlrpc_error_number 0 0
xmlrpc_errors Off Off
y2k_compliance On On
zend.ze1_compatibility_mode Off Off

bcmath
BCMath support enabled

calendar
Calendar support enabled

com_dotnet
COM support enabled
DCOM support disabled
..Net support enabled

Directive Local Value Master Value
com.allow_dcom 0 0
com.autoregister_casesensitive 1 1
com.autoregister_typelib 0 0
com.autoregister_verbose 0 0
com.code_page no value no value
com.typelib_file no value no value

ctype
ctype functions enabled

curl
CURL support enabled
CURL Information libcurl/7.14.0 OpenSSL/0.9.8a zlib/1.2.3

date
date/time support enabled
Timezone Database Version 2006.1
Timezone Database internal
Default timezone Europe/London

Directive Local Value Master Value
date.default_latitude 31.7667 31.7667
date.default_longitude 35.2333 35.2333
date.sunrise_zenith 90.583333 90.583333
date.sunset_zenith 90.583333 90.583333
date.timezone no value no value

dom
DOM/XML enabled
DOM/XML API Version 20031129
libxml Version 2.6.22
HTML Support enabled
XPath Support enabled
XPointer Support enabled
Schema Support enabled
RelaxNG Support enabled

ftp
FTP support enabled

hash
hash support enabled
Hashing Engines md4 md5 sha1 sha256 sha384 sha512 ripemd128 ripemd160
whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4
tiger192,4 snefru gost adler32 crc32 crc32b haval128,3 haval160,3
haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4
haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5

iconv
iconv support enabled
iconv implementation "libiconv"
iconv library version 1.9

Directive Local Value Master Value
iconv.input_encoding ISO-8859-1 ISO-8859-1
iconv.internal_encoding ISO-8859-1 ISO-8859-1
iconv.output_encoding ISO-8859-1 ISO-8859-1

ISAPI
Server Variable Value
CONTENT_LENGTH 0
PATH_TRANSLATED c:\inetpub\wwwroot\PHPTest\info.php
REMOTE_ADDR 192.168.40.11
REMOTE_HOST 192.168.40.11
REQUEST_METHOD GET
SERVER_NAME agora
SERVER_PORT 80
SERVER_PROTOCOL HTTP/1.1
SERVER_SOFTWARE Microsoft-IIS/6.0
APPL_MD_PATH /LM/W3SVC/1/ROOT
APPL_PHYSICAL_PATH c:\inetpub\wwwroot\
INSTANCE_ID 1
INSTANCE_META_PATH /LM/W3SVC/1
URL /PHPTest/info.php
ALL_HTTP HTTP_CONNECTION:keep-alive HTTP_KEEP_ALIVE:300
HTTP_ACCEPT:text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
HTTP_ACCEPT_CHARSET:ISO-8859-1,utf-8;q=0.7,*;q=0.7
HTTP_ACCEPT_ENCODING:gzip,deflate HTTP_ACCEPT_LANGUAGE:en-gb,en;q=0.5
HTTP_COOKIE:phpbb2mysql_data=a%3A2%3A%7Bs%3A11%3A% 22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22use rid%22%3Bs%3A1%3A%222%22%3B%7D;
Fishbone-Style=Standard; SlimServer-player=8c%3A79%3Aa8%3A57%3Ac8%3A12;
findafoodieforum_data=a%3A2%3A%7Bs%3A11%3A%22autol oginid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22% 3Bs%3A1%3A%222%22%3B%7D
HTTP_HOST:agora HTTP_USER_AGENT:Mozilla/5.0 (Windows; U; Windows NT 5.1;
en-GB; rv:1.8.1) Gecko/20061010 Firefox/2.0
HTTPS off
SCRIPT_NAME /PHPTest/info.php
SERVER_PORT_SECURE 0

libxml
libXML support active
libXML Version 2.6.22
libXML streams enabled

mysql
MySQL Support enabled
Active Persistent Links 0
Active Links 0
Client API version 5.0.21

Directive Local Value Master Value
mysql.allow_persistent On On
mysql.connect_timeout 60 60
mysql.default_host no value no value
mysql.default_password no value no value
mysql.default_port no value no value
mysql.default_socket no value no value
mysql.default_user no value no value
mysql.max_links Unlimited Unlimited
mysql.max_persistent Unlimited Unlimited
mysql.trace_mode Off Off

mysqli
MysqlI Support enabled
Client API version 5.0.21
MYSQLI_SOCKET /tmp/mysql.sock

Directive Local Value Master Value
mysqli.default_host no value no value
mysqli.default_port 3306 3306
mysqli.default_pw no value no value
mysqli.default_socket no value no value
mysqli.default_user no value no value
mysqli.max_links Unlimited Unlimited
mysqli.reconnect Off Off

odbc
ODBC Support enabled
Active Persistent Links 0
Active Links 0
ODBC library Win32

Directive Local Value Master Value
odbc.allow_persistent On On
odbc.check_persistent On On
odbc.default_db no value no value
odbc.default_pw no value no value
odbc.default_user no value no value
odbc.defaultbinmode return as is return as is
odbc.defaultlrl return up to 4096 bytes return up to 4096 bytes
odbc.max_links Unlimited Unlimited
odbc.max_persistent Unlimited Unlimited

pcre
PCRE (Perl Compatible Regular Expressions) Support enabled
PCRE Library Version 6.6 06-Feb-2006

Reflection
Reflection enabled
Version $Id: php_reflection.c,v 1.164.2.33 2006/03/29 14:28:42 tony2001
Exp $

session
Session Support enabled
Registered save handlers files user
Registered serializer handlers php php_binary wddx

Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 Off Off
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 1000 1000
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.hash_bits_per_character 5 5
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path no value no value
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid 0 0

SimpleXML
Simplexml support enabled
Revision $Revision: 1.151.2.22 $
Schema support enabled

SPL
SPL support enabled
Interfaces Countable, OuterIterator, RecursiveIterator,
SeekableIterator, SplObserver, SplSubject
Classes AppendIterator, ArrayIterator, ArrayObject,
BadFunctionCallException, BadMethodCallException, CachingIterator,
DirectoryIterator, DomainException, EmptyIterator, FilterIterator,
InfiniteIterator, InvalidArgumentException, IteratorIterator,
LengthException, LimitIterator, LogicException, NoRewindIterator,
OutOfBoundsException, OutOfRangeException, OverflowException,
ParentIterator, RangeException, RecursiveArrayIterator,
RecursiveCachingIterator, RecursiveDirectoryIterator,
RecursiveFilterIterator, RecursiveIteratorIterator, RuntimeException,
SimpleXMLIterator, SplFileInfo, SplFileObject, SplObjectStorage,
SplTempFileObject, UnderflowException, UnexpectedValueException

standard
Regex Library Bundled library enabled
Dynamic Library Support enabled
Internal Sendmail Support for Windows enabled

Directive Local Value Master Value
assert.active 1 1
assert.bail 0 0
assert.callback no value no value
assert.quiet_eval 0 0
assert.warning 1 1
auto_detect_line_endings 0 0
default_socket_timeout 60 60
safe_mode_allowed_env_vars PHP_ PHP_
safe_mode_protected_env_vars LD_LIBRARY_PATH LD_LIBRARY_PATH
url_rewriter.tags a=href,area=href,frame=src,input=src,form=fakeentr y
a=href,area=href,frame=src,input=src,form=fakeentr y
user_agent no value no value

tokenizer
Tokenizer Support enabled

wddx
WDDX Support enabled
WDDX Session Serializer enabled

xml
XML Support active
XML Namespace Support active
libxml2 Version 2.6.22

xmlreader
XMLReader enabled

xmlwriter
XMLWriter enabled

zlib
ZLib Support enabled
Stream Wrapper support compress.zlib://
Stream Filter support zlib.inflate, zlib.deflate
Compiled Version 1.2.3
Linked Version 1.2.3

Directive Local Value Master Value
zlib.output_compression Off Off
zlib.output_compression_level -1 -1
zlib.output_handler no value no value

Additional Modules
Module Name

Environment
Variable Value
ALLUSERSPROFILE C:\Documents and Settings\All Users
ClusterLog C:\WINDOWS\Cluster\cluster.log
CommonProgramFiles C:\Program Files\Common Files
COMPUTERNAME AGORA
ComSpec C:\WINDOWS\system32\cmd.exe
FP_NO_HOST_CHECK NO
NUMBER_OF_PROCESSORS 1
OS Windows_NT
Path C:\Perl\bin\;C:\Program Files\Windows Resource
Kits\Tools\;C:\WINDOWS\system32;C:\WINDOWS;C:\WIND OWS\System32\Wbem;C:\Program
Files\Microsoft SQL Server\80\Tools\Binn\;C:\Program Files\Microsoft SQL
Server\90\DTS\Binn\;C:\Program Files\Microsoft SQL
Server\90\Tools\binn\;C:\Program Files\Microsoft SQL
Server\90\Tools\Binn\VSShell\Common7\IDE\;C:\Progr am
Files\cwRsync\bin;C:\UnixPrograms\Sendmail;C:\Unix Programs\bin;C:\Program
Files\MySQL\MySQL Server 5.0\bin;C:\UnixPrograms\PHP
PATHEXT .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE x86
PROCESSOR_IDENTIFIER x86 Family 6 Model 7 Stepping 3, GenuineIntel
PROCESSOR_LEVEL 6
PROCESSOR_REVISION 0703
ProgramFiles C:\Program Files
SystemDrive C:
SystemRoot C:\WINDOWS
TEMP C:\WINDOWS\TEMP
TMP C:\WINDOWS\TEMP
USERPROFILE C:\Documents and Settings\Default User
windir C:\WINDOWS

PHP Variables
Variable Value
_REQUEST["phpbb2mysql_data"]
a:2:{s:11:"autologinid";s:0:"";s:6:"userid";s:1:"2 ";}
_REQUEST["Fishbone-Style"] Standard
_REQUEST["SlimServer-player"] 8c:79:a8:57:c8:12
_REQUEST["findafoodieforum_data"]
a:2:{s:11:"autologinid";s:0:"";s:6:"userid";s:1:"2 ";}
_COOKIE["phpbb2mysql_data"]
a:2:{s:11:"autologinid";s:0:"";s:6:"userid";s:1:"2 ";}
_COOKIE["Fishbone-Style"] Standard
_COOKIE["SlimServer-player"] 8c:79:a8:57:c8:12
_COOKIE["findafoodieforum_data"]
a:2:{s:11:"autologinid";s:0:"";s:6:"userid";s:1:"2 ";}
_SERVER["ALL_HTTP"] HTTP_CONNECTION:keep-alive HTTP_KEEP_ALIVE:300
HTTP_ACCEPT:text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
HTTP_ACCEPT_CHARSET:ISO-8859-1,utf-8;q=0.7,*;q=0.7
HTTP_ACCEPT_ENCODING:gzip,deflate HTTP_ACCEPT_LANGUAGE:en-gb,en;q=0.5
HTTP_COOKIE:phpbb2mysql_data=a%3A2%3A%7Bs%3A11%3A% 22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22use rid%22%3Bs%3A1%3A%222%22%3B%7D;
Fishbone-Style=Standard; SlimServer-player=8c%3A79%3Aa8%3A57%3Ac8%3A12;
findafoodieforum_data=a%3A2%3A%7Bs%3A11%3A%22autol oginid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22% 3Bs%3A1%3A%222%22%3B%7D
HTTP_HOST:agora HTTP_USER_AGENT:Mozilla/5.0 (Windows; U; Windows NT 5.1;
en-GB; rv:1.8.1) Gecko/20061010 Firefox/2.0
_SERVER["HTTPS"] off
_SERVER["SCRIPT_NAME"] /PHPTest/info.php
_SERVER["HTTP_COOKIE"]
phpbb2mysql_data=a%3A2%3A%7Bs%3A11%3A%22autologini d%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22%3Bs%3 A1%3A%222%22%3B%7D;
Fishbone-Style=Standard; SlimServer-player=8c%3A79%3Aa8%3A57%3Ac8%3A12;
findafoodieforum_data=a%3A2%3A%7Bs%3A11%3A%22autol oginid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22% 3Bs%3A1%3A%222%22%3B%7D
_SERVER["AUTH_PASSWORD"] no value
_SERVER["AUTH_TYPE"] no value
_SERVER["AUTH_USER"] no value
_SERVER["CONTENT_LENGTH"] 0
_SERVER["CONTENT_TYPE"] no value
_SERVER["PATH_TRANSLATED"] c:\inetpub\wwwroot
_SERVER["QUERY_STRING"] no value
_SERVER["REMOTE_ADDR"] 192.168.40.11
_SERVER["REMOTE_HOST"] 192.168.40.11
_SERVER["REMOTE_USER"] no value
_SERVER["REQUEST_METHOD"] GET
_SERVER["SERVER_NAME"] agora
_SERVER["SERVER_PORT"] 80
_SERVER["SERVER_PROTOCOL"] HTTP/1.1
_SERVER["SERVER_SOFTWARE"] Microsoft-IIS/6.0
_SERVER["APPL_MD_PATH"] /LM/W3SVC/1/ROOT
_SERVER["APPL_PHYSICAL_PATH"] c:\inetpub\wwwroot\
_SERVER["INSTANCE_ID"] 1
_SERVER["INSTANCE_META_PATH"] /LM/W3SVC/1
_SERVER["LOGON_USER"] no value
_SERVER["REQUEST_URI"] /PHPTest/info.php
_SERVER["URL"] /PHPTest/info.php
_SERVER["SCRIPT_FILENAME"] c:\inetpub\wwwroot/PHPTest/info.php
_SERVER["ORIG_PATH_INFO"] /PHPTest/info.php
_SERVER["PATH_INFO"] no value
_SERVER["ORIG_PATH_TRANSLATED"] c:\inetpub\wwwroot\PHPTest\info.php
_SERVER["DOCUMENT_ROOT"] c:\inetpub\wwwroot
_SERVER["PHP_SELF"] /PHPTest/info.php
_SERVER["HTTP_CONNECTION"] keep-alive
_SERVER["HTTP_KEEP_ALIVE"] 300
_SERVER["HTTP_ACCEPT"]
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
_SERVER["HTTP_ACCEPT_CHARSET"] ISO-8859-1,utf-8;q=0.7,*;q=0.7
_SERVER["HTTP_ACCEPT_ENCODING"] gzip,deflate
_SERVER["HTTP_ACCEPT_LANGUAGE"] en-gb,en;q=0.5
_SERVER["HTTP_HOST"] agora
_SERVER["HTTP_USER_AGENT"] Mozilla/5.0 (Windows; U; Windows NT 5.1;
en-GB; rv:1.8.1) Gecko/20061010 Firefox/2.0
_SERVER["REQUEST_TIME"] 1162839245

Nov 6 '06 #9

P: n/a
Michael Windsor wrote:
[...]
session
[...]
Directive Local Value Master Value
[...]
session.save_path no value no value
[...]

I believe `session.save_path` is your problem.
If there's no value for it, PHP will use "/tmp". Do you have a "C:\tmp"
directory on your disk?

Try changing php.ini and specify an existing directory for the
session.save_path entry, or create a "C:\tmp" directory.

Or do it within a test script first:

<?php
# session_save_path('C:/WINDOWS/TEMP');
session_save_path('C:\\WINDOWS\\TEMP');
session_start();

if (rand(0, 1)) {
echo "Using copy of the \$_SESSION array...<br>\n";
$COPY_SESSION = $_SESSION;
if (rand(0, 1)) {
echo "and not copying it back.<br>\n";
} else {
$_SESSION = $COPY_SESSION;
}
if (!isset($_SESSION['count'])) {
$_SESSION['count'] = 0;
}
$val = ++$_SESSION['count'];

} else {

if (!isset($_SESSION[çount'])) {
$_SESSION['count'] = 0;
}
$val = ++$_SESSION['count'];
}

echo "Current value is $val.<br>\n";
?>

--
I (almost) never check the dodgeit address.
If you *really* need to mail me, use the address in the Reply-To
header with a message in *plain* *text* *without* *attachments*.
Nov 6 '06 #10

P: n/a
Pedro Graca wrote:
Michael Windsor wrote:
[...]
>session
[...]
>Directive Local Value Master Value
[...]
>session.save_path no value no value
[...]

I believe `session.save_path` is your problem.
If there's no value for it, PHP will use "/tmp". Do you have a "C:\tmp"
directory on your disk?

Try changing php.ini and specify an existing directory for the
session.save_path entry, or create a "C:\tmp" directory.

Or do it within a test script first:
....[snip]...
>
I looked at this previously - I was examining the session files to see
if I could determine the problem. Session information is being stored in
C:\WINDOWS\Temp already; presumably PHP is defaulting to the system temp
path in the absence of a defined value.

Anyway, I'm sorry to report that adding the session_save_path() call
doesn't make any difference to the running of the script: the value is
still only incremented when $_SESSION is not assigned to another variable.

Just to make sure, I changed php.ini to specify a session path, but
again, it didn't make any difference, with or without the
session_save_path() call.

Are you running PHP on Windows? I'm wondering if that's the deciding factor.

I really appreciate your help!

Thanks,
Mike
Nov 7 '06 #11

P: n/a
Michael Windsor wrote:
Are you running PHP on Windows? I'm wondering if that's the deciding factor.
No, I'm on Linux, still with PHP 4.3.

I'm out of explanations for the behaviour you see.
Try switching on

zend.ze1_compatibility_mode

http://www.php.net/manual/en/migration5.oop.php

I doubt it will have an effect, but it will not do any harm to try it.

--
I (almost) never check the dodgeit address.
If you *really* need to mail me, use the address in the Reply-To
header with a message in *plain* *text* *without* *attachments*.
Nov 7 '06 #12

P: n/a
Pedro Graca wrote:
Michael Windsor wrote:
>Are you running PHP on Windows? I'm wondering if that's the deciding factor.

No, I'm on Linux, still with PHP 4.3.

I'm out of explanations for the behaviour you see.
Try switching on

zend.ze1_compatibility_mode

http://www.php.net/manual/en/migration5.oop.php

I doubt it will have an effect, but it will not do any harm to try it.
It would seem that this is a bug in PHP
(http://bugs.php.net/bug.php?id=38833). Not only that, but the
maintainers of PHP are unwilling to fix it
(http://bugs.php.net/bug.php?id=37926)!

IMO, this is not a "documentation bug", as some have tried to suggest,
but a flaw in the implementation of the superglobals, or at the very
least in $_SESSION. I have made a contribution to the tracker to reflect
my viewpoint.

Mike
Nov 7 '06 #13

This discussion thread is closed

Replies have been disabled for this discussion.