session.bug_compat_42. ни хрена не понимаю.
Кто-нибудь разбирается в проблеме настолько, чтобы на пальцах объяснить - какое именно сочетание факторов приводит к появлению этого сообщения?
И как правильно на него реагировать - запретить ли директиву в ини, или менять код? Если менять, то как?
Вот reproduce code
обращение: ttt.php?login=test
при таких вот настройках
комментирование любой строчки в коде приводит к исчезновению ошибки.
убирание переменной login из квери стринг приводит к исчезновению ошибки.
если поменять местами вторую и третью сточку - это приводит к исчезновению ошибки.
смена имени индекса в $_SESSION приводит к исчезновению ошибки
смена имени индекса в $_GET приводит к исчезновению ошибки
присвоение $_SESSION['login'] строкового значения приводит к исчезновению ошибки
присвоение $_SESSION['login'] существующей переменной приводит к исчезновению ошибки
присвоение $_SESSION['login'] несуществующей переменной НЕ приводит к исчезновению ошибки
$subj
-~{}~ 30.12.07 18:20:
Кодблин:
В нём я тоже ничего не понимаю.
Кто-нибудь разбирается в проблеме настолько, чтобы на пальцах объяснить - какое именно сочетание факторов приводит к появлению этого сообщения?
И как правильно на него реагировать - запретить ли директиву в ини, или менять код? Если менять, то как?
Вот reproduce code
PHP:
session_start();
$_SESSION['login']=$login;
$login=$_GET['login'];
при таких вот настройках
Код:
php_flag register_globals 0
php_flag display_errors 1
php_flag session.bug_compat_42 1
убирание переменной login из квери стринг приводит к исчезновению ошибки.
если поменять местами вторую и третью сточку - это приводит к исчезновению ошибки.
смена имени индекса в $_SESSION приводит к исчезновению ошибки
смена имени индекса в $_GET приводит к исчезновению ошибки
присвоение $_SESSION['login'] строкового значения приводит к исчезновению ошибки
присвоение $_SESSION['login'] существующей переменной приводит к исчезновению ошибки
присвоение $_SESSION['login'] несуществующей переменной НЕ приводит к исчезновению ошибки
$subj
-~{}~ 30.12.07 18:20:
Кодблин:
Код:
if (PS(bug_compat) && !PG(register_globals)) {
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, 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.");
}
}