Скажите, господа!
Если в сессии PHP регистрировать переменные по типу
session_register("froschungsgebiet","what","show","how");
, то дожно бы быть так, что эти переменные будут доступны во всех скриптах, работающих в этой сессии? При этом
session_start();
надо писать в начале каждого скрипта?!
Во всяком случая я так понял описание...
Теперь опишу тот геморрой, с которым я в связи с этим столкнулся:
Если я регистрирую переменные сессии, то они почему-то действительны только на время исполнения скрипта, в котором они зарегестрированны. При вызове следующего скрипта они обнуляются, хотя id сессии остается прежним. Если я переменные НЕ регистрирую, то они доступны во всех вызываемых скриптаз и далее.
Объясните, что это за фокус, пожалуйста мне дураку!!!!
Или я не правильно понял описание?
Заранее благодарен!
Еще раз спасибо,
cand.rer.oek.
Paul Marx
Здравствуйте, marx paul, Вы писали:
похоже все твои проблемы в этой чудо настройке "register_globals", по дефолту она false,
If track_vars is enabled and register_globals is disabled, only members of the global associative array $HTTP_SESSION_VARS can be registered as session variables. The restored session variables will only be available in the array $HTTP_SESSION_VARS.
Example 1. Registering a variable with track_vars enabled
<?php
if (isset($HTTP_SESSION_VARS['count'])) {
$HTTP_SESSION_VARS['count']++;
}
else {
$HTTP_SESSION_VARS['count'] = 0;
}
?>
Use of $_SESSION (or $HTTP_SESSION_VARS with PHP 4.0.6 or less) is recommended for security and code readablity. With $_SESSION or $HTTP_SESSION_VARS, there is no need to use session_register()/session_unregister()/session_is_registered() functions. Users can access session variable like a normal variable. Example 2. Registering a variable with $_SESSION.
<?php
// Use $HTTP_SESSION_VARS with PHP 4.0.6 or less
if (!isset($_SESSION['count'])) {
$_SESSION['count'] = 0;
} else {
$_SESSION['count']++;
}
?>
Example 3. Unregistering a variable with $_SESSION.
<?php
// Use $HTTP_SESSION_VARS with PHP 4.0.6 or less
unset($_SESSION['count']);
?>
If register_globals is enabled, then all global variables can be registered as session variables and the session variables will be restored to corresponding global variables. Since PHP must know which global variables are registered as session variables, users must register variables with session_register() function while $HTTP_SESSION_VARS/$_SESSION does not need to use session_register().
У меня схожая проблема, но помимо сказанного, еще и Id сессии меняется. Точно знаю, что httpd.conf и php.ini настроены для работы с сессиями...
Никто не знает как бороться?
Здравствуйте, marx paul, Вы писали:
MP>Скажите, господа!
MP>Если в сессии PHP регистрировать переменные по типу
MP>MP>session_register("froschungsgebiet","what","show","how");
MP>
Попробуй просто $_SESSION['what'] = ... и так далее.
MP>, то дожно бы быть так, что эти переменные будут доступны во всех скриптах, работающих в этой сессии? При этом
MP>MP>session_start();
MP>
MP> надо писать в начале каждого скрипта?!
Да
MP>Если я регистрирую переменные сессии, то они почему-то действительны только на время исполнения скрипта, в котором они зарегестрированны. При вызове следующего скрипта они обнуляются, хотя id сессии остается прежним. Если я переменные НЕ регистрирую, то они доступны во всех вызываемых скриптаз и далее.
Покажи код, как ты переменные кладешь в сессию и как берешь их оттуда.
Я делаю так:
session_start();
$temp1 = "TEST";
$_SESSION['temp1'] = $temp1;
$temp1 = "HAHA";
echo $_SESSION['temp1'];
выводит TEST
(естественно при register_globals Off)