$HTTP_SESSION_VARS

Larson

Новичок
$HTTP_SESSION_VARS

Привет!
Подскажите, почему если я ставлю в php.ini строку register_globals=off, то в скрипте не видно переменных сессии, хотя я к ним обращаюсь через $HTTP_SESSION_VARS['что-то']?
Пробовал через $_SESSION['что-то'], но всеравно говорит что нет такого индекса в массиве.

Если поставить register_globals=on, то все видно как глобальные переменные, но по-моему массив $HTTP_SESSION_VARS всеравно не видно.

Прям уж голову сломал - не знаю что делать.
 

Hijacker

Guest
ты её выключи и на той странице сделай phpinfo(). Там всё и увидишь где и что лежит....
 

Unregistered

Guest
Re: $HTTP_SESSION_VARS

Автор оригинала: Larson
Привет!
Подскажите, почему если я ставлю в php.ini строку register_globals=off, то в скрипте не видно переменных сессии, хотя я к ним обращаюсь через $HTTP_SESSION_VARS['что-то']?
Пробовал через $_SESSION['что-то'], но всеравно говорит что нет такого индекса в массиве.

Если поставить register_globals=on, то все видно как глобальные переменные, но по-моему массив $HTTP_SESSION_VARS всеравно не видно.

Прям уж голову сломал - не знаю что делать.
 

Unregistered

Guest
Re: $HTTP_SESSION_VARS

Автор оригинала: Larson
Привет!
Подскажите, почему если я ставлю в php.ini строку register_globals=off, то в скрипте не видно переменных сессии, хотя я к ним обращаюсь через $HTTP_SESSION_VARS['что-то']?
Пробовал через $_SESSION['что-то'], но всеравно говорит что нет такого индекса в массиве.

Если поставить register_globals=on, то все видно как глобальные переменные, но по-моему массив $HTTP_SESSION_VARS всеравно не видно.

Прям уж голову сломал - не знаю что делать.
GET and POST values overriding session variables.
For those situations where I specifically want GET and POST variables to override values in session variables, I wrote the following function....
function grabvar($varname)
{
global $$varname, $HTTP_GET_VARS, $HTTP_POST_VARS;

session_register($varname);
if (isset($HTTP_POST_VARS[$varname]))
{
$$varname = $HTTP_POST_VARS[$varname];
}
if (isset($HTTP_GET_VARS[$varname]))
{
$$varname = $HTTP_GET_VARS[$varname];
}
}

?>
I put it into a file which I always include in the head of all my php scripts. Then in the scripts, instead of session_register(), I call my function, like this...
<?php
require("utils.inc");
grabvar("my_var");
grabvar("my_other_var");
?>

Thus I have a reasonably neat and tidy way of reading GET and POST values into sessions and still maintaining control over exactly which variables get saved.
 

Larson

Новичок
Автор оригинала: Hijacker
ты её выключи и на той странице сделай phpinfo(). Там всё и увидишь где и что лежит....
Может я совсем тупой, но в phpinfo() я ничего не увидел - ни слова о переменных сессии, только их настройки.
А может я что не то здесь делаю?

PHP:
<?php
// file one.php
  session_start();
  
      if(!session_is_registered("counter"))  session_register("counter");
      if(!isset($HTTP_SESSION_VARS['counter']))  $HTTP_SESSION_VARS['counter']=1;
      else $HTTP_SESSION_VARS['counter']++;

echo $HTTP_SESSION_VARS['counter'];
?>
    <a href='two.php'>Click</a>

PHP:
<?php
//file two.php

 session_start();
    if(!session_is_registered('counter')) session_register('counter');
    $HTTP_SESSION_VARS['counter']++;

echo $HTTP_SESSION_VARS['counter'] ;
?>
     <a href='one.php'>Back</a>
В результате: PHP Warning: Undefined index: counter in ...\two.php on line ...
Перепробовал различные варианты типа $_SESSION, $_SERVER['SESSION'] и т.д.
 

Larson

Новичок
Ура!

Вчера поставил PHP 4.2.2 и все заработало!

P.S. А все-таки, почему в PHP 4.1.2 не работало?
 
Сверху