LINUX.ORG.RU
ФорумAdmin

Сессионные переменные в PHP 5.4

 , , ,


1

1

Здравствуйте! Всегда стояла PHP 5.3, теперь пришлось невольно обновиться до PHP 5.6. Скажите, пожалуйста, как организовать register_globals = On и session_register() ? В интернете нашёл следующие варианты:

1. Эмуляция register_globals = On: в php.ini вставляем с заменой

auto_prepend_file = /etc/php/5.6/apache2/globals.php

содержимое globals.php:

<?php
extract($_REQUEST);

2. Эмуляция session_register(): на самом сайте пишем:

<?php session_start(); ?>
<?php

function session_register() {
$args = func_get_args();

foreach ($args as $key) {

if (!isset($GLOBALS[$key])) {$GLOBALS[$key] = NULL;}
$_SESSION[$key] =& $GLOBALS[$key];

}

}

session_register("var1");

?>

Не работает такой вариант. Подскажите, пожалуйста, что я не так делаю?

Не работает такой вариант. Подскажите, пожалуйста, что я не так делаю?

Отлаживай, что именно не работает.

goingUp ★★★★★ ()
Ответ на: комментарий от goingUp
<?php session_start(); ?>
<?php

function session_register(){
$args = func_get_args();
foreach ($args as $key){
if (!isset($GLOBALS[$key])) {
$GLOBALS[$key] = NULL;
}
$_SESSION[$key] =& $GLOBALS[$key];
}
}

session_register("var1");

if (!$var1) {$var1="xxx";} else {$var1="yyy";}

echo("S_VAR: ".$var1);

?>

всё время выводит «xxx».

saliery ()
Ответ на: комментарий от goingUp
<?php session_start(); ?>
<?php

function session_register(){
$args = func_get_args();
foreach ($args as $key){
if (!isset($GLOBALS[$key])) {
$GLOBALS[$key] = NULL;
}
$_SESSION[$key] =& $GLOBALS[$key];
}
}

session_register("var1");

if (!$var1) {$var1="xxx";} else {$var1="yyy";}

echo("S_VAR: ".$var1);


print_r($_SESSION)


?>

вывод:

S_VAR: xxxArray ( [var1] => xxx ) 
saliery ()
Ответ на: комментарий от saliery

Ну то есть в $_SESSION оно таки попадает, но почему-то сессия не работает, хотя тут Сессионные переменные в PHP 5.4 (комментарий) работает. Может дело в том, что до session_start() в браузер что-то выводится (пробелы например, перевод строки после ?>), для старых версий пыха это было проблемой, потом они включили буферизацию. В том числе в auto_prepend_file.

goingUp ★★★★★ ()
Последнее исправление: goingUp (всего исправлений: 1)
Ответ на: комментарий от goingUp

php.ini:

auto_prepend_file = /etc/php/5.6/apache2/globals.php

globals.php:

<?php
extract($_REQUEST);

saliery ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.