mirror of
https://github.com/php/php-src.git
synced 2024-09-22 02:17:32 +00:00
- Cleanup
This commit is contained in:
parent
b42a8b2f31
commit
672266c735
@ -111,8 +111,6 @@ typedef struct _php_ps_globals {
|
|||||||
long gc_maxlifetime;
|
long gc_maxlifetime;
|
||||||
int module_number;
|
int module_number;
|
||||||
long cache_expire;
|
long cache_expire;
|
||||||
zend_bool bug_compat; /* Whether to behave like PHP 4.2 and earlier */
|
|
||||||
zend_bool bug_compat_warn; /* Whether to warn about it */
|
|
||||||
const struct ps_serializer_struct *serializer;
|
const struct ps_serializer_struct *serializer;
|
||||||
zval *http_session_vars;
|
zval *http_session_vars;
|
||||||
zend_bool auto_start;
|
zend_bool auto_start;
|
||||||
|
@ -145,8 +145,6 @@ static PHP_INI_MH(OnUpdateSaveDir)
|
|||||||
/* {{{ PHP_INI
|
/* {{{ PHP_INI
|
||||||
*/
|
*/
|
||||||
PHP_INI_BEGIN()
|
PHP_INI_BEGIN()
|
||||||
STD_PHP_INI_BOOLEAN("session.bug_compat_42", "1", PHP_INI_ALL, OnUpdateBool, bug_compat, php_ps_globals, ps_globals)
|
|
||||||
STD_PHP_INI_BOOLEAN("session.bug_compat_warn", "1", PHP_INI_ALL, OnUpdateBool, bug_compat_warn, php_ps_globals, ps_globals)
|
|
||||||
STD_PHP_INI_ENTRY("session.save_path", "", PHP_INI_ALL, OnUpdateSaveDir,save_path, php_ps_globals, ps_globals)
|
STD_PHP_INI_ENTRY("session.save_path", "", PHP_INI_ALL, OnUpdateSaveDir,save_path, php_ps_globals, ps_globals)
|
||||||
STD_PHP_INI_ENTRY("session.name", "PHPSESSID", PHP_INI_ALL, OnUpdateString, session_name, php_ps_globals, ps_globals)
|
STD_PHP_INI_ENTRY("session.name", "PHPSESSID", PHP_INI_ALL, OnUpdateString, session_name, php_ps_globals, ps_globals)
|
||||||
PHP_INI_ENTRY("session.save_handler", "files", PHP_INI_ALL, OnUpdateSaveHandler)
|
PHP_INI_ENTRY("session.save_handler", "files", PHP_INI_ALL, OnUpdateSaveHandler)
|
||||||
@ -723,27 +721,6 @@ static void php_session_save_current_state(TSRMLS_D)
|
|||||||
int ret = FAILURE;
|
int ret = FAILURE;
|
||||||
|
|
||||||
IF_SESSION_VARS() {
|
IF_SESSION_VARS() {
|
||||||
if (PS(bug_compat)) {
|
|
||||||
HashTable *ht = Z_ARRVAL_P(PS(http_session_vars));
|
|
||||||
HashPosition pos;
|
|
||||||
zval **val;
|
|
||||||
int do_warn = 0;
|
|
||||||
|
|
||||||
zend_hash_internal_pointer_reset_ex(ht, &pos);
|
|
||||||
|
|
||||||
while (zend_hash_get_current_data_ex(ht,
|
|
||||||
(void **) &val, &pos) != FAILURE) {
|
|
||||||
if (Z_TYPE_PP(val) == IS_NULL) {
|
|
||||||
if (migrate_global(ht, &pos TSRMLS_CC))
|
|
||||||
do_warn = 1;
|
|
||||||
}
|
|
||||||
zend_hash_move_forward_ex(ht, &pos);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (do_warn && PS(bug_compat_warn)) {
|
|
||||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (PS(mod_data)) {
|
if (PS(mod_data)) {
|
||||||
char *val;
|
char *val;
|
||||||
|
@ -1,62 +0,0 @@
|
|||||||
--TEST--
|
|
||||||
bug compatibility: unset($c) with enabled register_globals
|
|
||||||
--SKIPIF--
|
|
||||||
<?php die('skip');/* RG removed */ ?>
|
|
||||||
--INI--
|
|
||||||
session.use_cookies=0
|
|
||||||
session.cache_limiter=
|
|
||||||
session.bug_compat_42=1
|
|
||||||
session.serialize_handler=php
|
|
||||||
session.save_handler=files
|
|
||||||
--FILE--
|
|
||||||
<?php
|
|
||||||
error_reporting(E_ALL);
|
|
||||||
|
|
||||||
session_id("abtest");
|
|
||||||
|
|
||||||
### Phase 1 cleanup
|
|
||||||
session_start();
|
|
||||||
session_destroy();
|
|
||||||
|
|
||||||
### Phase 2 $_SESSION["c"] does not contain any value
|
|
||||||
session_id("abtest");
|
|
||||||
$_SESSION['c'] = $c;
|
|
||||||
|
|
||||||
unset($c);
|
|
||||||
$c = 3.14;
|
|
||||||
session_write_close();
|
|
||||||
unset($_SESSION);
|
|
||||||
unset($c);
|
|
||||||
|
|
||||||
### Phase 3 $_SESSION["c"] is set
|
|
||||||
session_start();
|
|
||||||
$c = $_SESSION['c'];
|
|
||||||
var_dump($c);
|
|
||||||
var_dump($_SESSION);
|
|
||||||
unset($c);
|
|
||||||
$c = 2.78;
|
|
||||||
|
|
||||||
session_write_close();
|
|
||||||
unset($_SESSION);
|
|
||||||
unset($c);
|
|
||||||
|
|
||||||
### Phase 4 final
|
|
||||||
|
|
||||||
session_start();
|
|
||||||
$c = $_SESSION['c'];
|
|
||||||
var_dump($c);
|
|
||||||
var_dump($_SESSION);
|
|
||||||
|
|
||||||
session_destroy();
|
|
||||||
?>
|
|
||||||
--EXPECT--
|
|
||||||
float(3.14)
|
|
||||||
array(1) {
|
|
||||||
["c"]=>
|
|
||||||
&float(3.14)
|
|
||||||
}
|
|
||||||
float(3.14)
|
|
||||||
array(1) {
|
|
||||||
["c"]=>
|
|
||||||
&float(3.14)
|
|
||||||
}
|
|
@ -1,71 +0,0 @@
|
|||||||
--TEST--
|
|
||||||
bug compatibility: global is used albeit register_globals=0
|
|
||||||
--SKIPIF--
|
|
||||||
<?php include('skipif.inc');
|
|
||||||
die("skip, no more RG and session_register");
|
|
||||||
if (version_compare(PHP_VERSION,"4.2.3-dev", "<")) die("skip this is for PHP >= 4.2.3");
|
|
||||||
?>
|
|
||||||
--INI--
|
|
||||||
session.use_cookies=0
|
|
||||||
session.cache_limiter=
|
|
||||||
session.bug_compat_42=1
|
|
||||||
session.bug_compat_warn=1
|
|
||||||
track_errors=1
|
|
||||||
log_errors=0
|
|
||||||
html_errors=0
|
|
||||||
display_errors=1
|
|
||||||
error_reporting=2039;
|
|
||||||
session.serialize_handler=php
|
|
||||||
session.save_handler=files
|
|
||||||
--FILE--
|
|
||||||
<?php
|
|
||||||
session_id("abtest");
|
|
||||||
### Phase 1 cleanup
|
|
||||||
session_start();
|
|
||||||
session_destroy();
|
|
||||||
|
|
||||||
### Phase 2 $_SESSION["c"] does not contain any value
|
|
||||||
session_id("abtest");
|
|
||||||
$_SESSION['c'] = NULL;
|
|
||||||
$c = $_SESSION['c'];
|
|
||||||
var_dump($c);
|
|
||||||
unset($c);
|
|
||||||
$c = 3.14;
|
|
||||||
@session_write_close(); // this generates an E_WARNING which will be printed
|
|
||||||
// by $php_errormsg so we can use "@" here. ANY further message IS an error.
|
|
||||||
echo $php_errormsg."\n";
|
|
||||||
unset($_SESSION);
|
|
||||||
unset($c);
|
|
||||||
|
|
||||||
### Phase 3 $_SESSION["c"] is set
|
|
||||||
session_start();
|
|
||||||
$c = $_SESSION['c'];
|
|
||||||
var_dump($_SESSION);
|
|
||||||
unset($c);
|
|
||||||
$c = 2.78;
|
|
||||||
|
|
||||||
session_write_close();
|
|
||||||
unset($_SESSION);
|
|
||||||
unset($c);
|
|
||||||
|
|
||||||
### Phase 4 final
|
|
||||||
|
|
||||||
session_start();
|
|
||||||
$c = $_SESSION['c'];
|
|
||||||
var_dump($c);
|
|
||||||
var_dump($_SESSION);
|
|
||||||
|
|
||||||
session_destroy();
|
|
||||||
?>
|
|
||||||
--EXPECTF--
|
|
||||||
NULL
|
|
||||||
Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively.
|
|
||||||
array(1) {
|
|
||||||
["c"]=>
|
|
||||||
float(3.14)
|
|
||||||
}
|
|
||||||
NULL
|
|
||||||
array(1) {
|
|
||||||
["c"]=>
|
|
||||||
float(3.14)
|
|
||||||
}
|
|
@ -1,60 +0,0 @@
|
|||||||
--TEST--
|
|
||||||
bug compatibility: global is used albeit register_globals=0
|
|
||||||
--SKIPIF--
|
|
||||||
<?php include('skipif.inc');
|
|
||||||
if (version_compare(PHP_VERSION,"4.2.3-dev", ">=")) die("skip this is for PHP < 4.2.3");
|
|
||||||
?>
|
|
||||||
--INI--
|
|
||||||
session.use_cookies=0
|
|
||||||
session.cache_limiter=
|
|
||||||
session.bug_compat_42=1
|
|
||||||
session.bug_compat_warn=0
|
|
||||||
--FILE--
|
|
||||||
<?php
|
|
||||||
error_reporting(E_ALL & ~E_NOTICE);
|
|
||||||
|
|
||||||
session_id("abtest");
|
|
||||||
|
|
||||||
### Phase 1 cleanup
|
|
||||||
session_start();
|
|
||||||
session_destroy();
|
|
||||||
|
|
||||||
### Phase 2 $_SESSION["c"] does not contain any value
|
|
||||||
session_id("abtest");
|
|
||||||
session_register("c");
|
|
||||||
var_dump($c);
|
|
||||||
unset($c);
|
|
||||||
$c = 3.14;
|
|
||||||
session_write_close();
|
|
||||||
unset($_SESSION);
|
|
||||||
unset($c);
|
|
||||||
|
|
||||||
### Phase 3 $_SESSION["c"] is set
|
|
||||||
session_start();
|
|
||||||
var_dump($_SESSION);
|
|
||||||
unset($c);
|
|
||||||
$c = 2.78;
|
|
||||||
|
|
||||||
session_write_close();
|
|
||||||
unset($_SESSION);
|
|
||||||
unset($c);
|
|
||||||
|
|
||||||
### Phase 4 final
|
|
||||||
|
|
||||||
session_start();
|
|
||||||
var_dump($c);
|
|
||||||
var_dump($_SESSION);
|
|
||||||
|
|
||||||
session_destroy();
|
|
||||||
?>
|
|
||||||
--EXPECT--
|
|
||||||
NULL
|
|
||||||
array(1) {
|
|
||||||
["c"]=>
|
|
||||||
float(3.14)
|
|
||||||
}
|
|
||||||
NULL
|
|
||||||
array(1) {
|
|
||||||
["c"]=>
|
|
||||||
float(3.14)
|
|
||||||
}
|
|
@ -1,12 +1,10 @@
|
|||||||
--TEST--
|
--TEST--
|
||||||
unset($_SESSION["name"]); should work with register_globals=off
|
unset($_SESSION["name"]); should work
|
||||||
--SKIPIF--
|
--SKIPIF--
|
||||||
<?php include('skipif.inc'); ?>
|
<?php include('skipif.inc'); ?>
|
||||||
--INI--
|
--INI--
|
||||||
session.use_cookies=0
|
session.use_cookies=0
|
||||||
session.cache_limiter=
|
session.cache_limiter=
|
||||||
session.bug_compat_42=1
|
|
||||||
session.bug_compat_warn=0
|
|
||||||
session.serialize_handler=php
|
session.serialize_handler=php
|
||||||
session.save_handler=files
|
session.save_handler=files
|
||||||
--FILE--
|
--FILE--
|
||||||
|
@ -5,8 +5,6 @@ $session_array = explode(";", session_encode()); should not segfault
|
|||||||
--INI--
|
--INI--
|
||||||
session.use_cookies=0
|
session.use_cookies=0
|
||||||
session.cache_limiter=
|
session.cache_limiter=
|
||||||
session.bug_compat_42=1
|
|
||||||
session.bug_compat_warn=0
|
|
||||||
--FILE--
|
--FILE--
|
||||||
<?php
|
<?php
|
||||||
error_reporting(E_ALL);
|
error_reporting(E_ALL);
|
||||||
|
@ -5,8 +5,6 @@ session_decode(); should not segfault
|
|||||||
--INI--
|
--INI--
|
||||||
session.use_cookies=0
|
session.use_cookies=0
|
||||||
session.cache_limiter=
|
session.cache_limiter=
|
||||||
session.bug_compat_42=1
|
|
||||||
session.bug_compat_warn=0
|
|
||||||
--FILE--
|
--FILE--
|
||||||
<?php
|
<?php
|
||||||
error_reporting(E_ALL);
|
error_reporting(E_ALL);
|
||||||
|
@ -1,34 +0,0 @@
|
|||||||
--TEST--
|
|
||||||
registering $_SESSION should not segfault
|
|
||||||
--SKIPIF--
|
|
||||||
<?php die("skip no more RG or session_register"); ?>
|
|
||||||
--INI--
|
|
||||||
session.use_cookies=0
|
|
||||||
session.cache_limiter=
|
|
||||||
session.bug_compat_42=1
|
|
||||||
session.bug_compat_warn=0
|
|
||||||
session.serialize_handler=php
|
|
||||||
session.save_handler=files
|
|
||||||
--FILE--
|
|
||||||
<?php
|
|
||||||
error_reporting(E_ALL);
|
|
||||||
|
|
||||||
### Absurd example, value of $_SESSION does not matter
|
|
||||||
|
|
||||||
session_id("abtest");
|
|
||||||
session_start();
|
|
||||||
session_register("_SESSION");
|
|
||||||
$_SESSION = "kk";
|
|
||||||
|
|
||||||
session_write_close();
|
|
||||||
|
|
||||||
### Restart to test for $_SESSION brokenness
|
|
||||||
|
|
||||||
session_start();
|
|
||||||
$_SESSION = "kk";
|
|
||||||
session_destroy();
|
|
||||||
|
|
||||||
print "I live\n";
|
|
||||||
?>
|
|
||||||
--EXPECT--
|
|
||||||
I live
|
|
@ -5,8 +5,6 @@ redefining SID should not cause warnings
|
|||||||
--INI--
|
--INI--
|
||||||
session.use_cookies=0
|
session.use_cookies=0
|
||||||
session.cache_limiter=
|
session.cache_limiter=
|
||||||
session.bug_compat_42=1
|
|
||||||
session.bug_compat_warn=0
|
|
||||||
session.serialize_handler=php
|
session.serialize_handler=php
|
||||||
session.save_handler=files
|
session.save_handler=files
|
||||||
--FILE--
|
--FILE--
|
||||||
|
@ -6,8 +6,6 @@ a script should not be able to modify session.use_trans_sid
|
|||||||
session.use_trans_sid=1
|
session.use_trans_sid=1
|
||||||
session.use_cookies=0
|
session.use_cookies=0
|
||||||
session.cache_limiter=
|
session.cache_limiter=
|
||||||
session.bug_compat_42=1
|
|
||||||
session.bug_compat_warn=0
|
|
||||||
session.name=PHPSESSID
|
session.name=PHPSESSID
|
||||||
session.serialize_handler=php
|
session.serialize_handler=php
|
||||||
session.save_handler=files
|
session.save_handler=files
|
||||||
|
@ -1,73 +0,0 @@
|
|||||||
--TEST--
|
|
||||||
serializing references test case using globals
|
|
||||||
--SKIPIF--
|
|
||||||
<?php die("skip no more RG or session_register");include('skipif.inc'); ?>
|
|
||||||
--INI--
|
|
||||||
session.use_cookies=0
|
|
||||||
session.cache_limiter=
|
|
||||||
session.serialize_handler=php
|
|
||||||
session.save_handler=files
|
|
||||||
--FILE--
|
|
||||||
<?php
|
|
||||||
|
|
||||||
error_reporting(E_ALL);
|
|
||||||
|
|
||||||
class TFoo {
|
|
||||||
public $c;
|
|
||||||
function TFoo($c) {
|
|
||||||
$this->c = $c;
|
|
||||||
}
|
|
||||||
function inc() {
|
|
||||||
$this->c++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
session_id("abtest");
|
|
||||||
session_start();
|
|
||||||
$_SESSION['o1'] = $o1;
|
|
||||||
$_SESSION['o2'] = $o2;
|
|
||||||
|
|
||||||
$o1 = new TFoo(42);
|
|
||||||
$o2 =& $o1;
|
|
||||||
|
|
||||||
session_write_close();
|
|
||||||
|
|
||||||
unset($o1);
|
|
||||||
unset($o2);
|
|
||||||
|
|
||||||
session_start();
|
|
||||||
|
|
||||||
var_dump($_SESSION);
|
|
||||||
|
|
||||||
$o1->inc();
|
|
||||||
$o2->inc();
|
|
||||||
|
|
||||||
var_dump($_SESSION);
|
|
||||||
|
|
||||||
session_destroy();
|
|
||||||
?>
|
|
||||||
--EXPECTF--
|
|
||||||
array(2) {
|
|
||||||
["o1"]=>
|
|
||||||
&object(TFoo)#%d (1) {
|
|
||||||
["c"]=>
|
|
||||||
int(42)
|
|
||||||
}
|
|
||||||
["o2"]=>
|
|
||||||
&object(TFoo)#%d (1) {
|
|
||||||
["c"]=>
|
|
||||||
int(42)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
array(2) {
|
|
||||||
["o1"]=>
|
|
||||||
&object(TFoo)#%d (1) {
|
|
||||||
["c"]=>
|
|
||||||
int(44)
|
|
||||||
}
|
|
||||||
["o2"]=>
|
|
||||||
&object(TFoo)#%d (1) {
|
|
||||||
["c"]=>
|
|
||||||
int(44)
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
// This script prints "skip" if condition does not meet.
|
// This script prints "skip" if condition does not meet.
|
||||||
if (!extension_loaded("session") && ini_get("enable_dl")) {
|
if (!extension_loaded("session")) {
|
||||||
$dlext = (substr(PHP_OS, 0, 3) == "WIN") ? ".dll" : ".so";
|
$dlext = (substr(PHP_OS, 0, 3) == "WIN") ? ".dll" : ".so";
|
||||||
@dl("session$dlext");
|
@dl("session$dlext");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user