$_SESSION
$HTTP_SESSION_VARS [устаревшее]
(PHP 4 >= 4.1.0, PHP 5)
$_SESSION -- $HTTP_SESSION_VARS [устаревшее] — Переменные сессии
Описание
Ассоциативный массив, содержащий переменные сессии, которые доступны для текущего скрипта. Смотрите документацию по функциям сессии для получения дополнительной информации.
$HTTP_SESSION_VARS первоначально содержит ту же информацию, но она не является суперглобальной переменной. (Обратите внимание, что $HTTP_SESSION_VARS и $_SESSION являются различными переменными и в таковом качестве обрабатываются PHP).
Список изменений
Версия | Описание |
---|---|
4.1.0 | Добавлена $_SESSION, которая превратила $HTTP_SESSION_VARS в устаревшую. |
Примечания
Замечание:
Это 'суперглобальная' или автоматическая глобальная переменная. Это просто означает что она доступна во всех контекстах скрипта. Нет необходимости выполнять global $variable; для доступа к ней внутри метода или функции.
- Функция Суперглобальные переменные() - Суперглобальные переменные - это встроенные переменные, которые всегда доступны во всех областях видимости
- Функция $GLOBALS() - Ссылки на все переменные глобальной области видимости
- Функция $_SERVER() - Информация о сервере и среде исполнения
- Функция $_GET() - GET-переменные HTTP
- Функция $_POST() - HTTP POST variables
- Функция $_FILES() - Переменные файлов, загруженных по HTTP
- Функция $_REQUEST() - Переменные HTTP-запроса
- Функция $_SESSION() - Переменные сессии
- Функция $_ENV() - Переменные окружения
- Функция $_COOKIE() - HTTP Куки
- Функция $php_errormsg() - Предыдущее сообщение об ошибке
- Функция $HTTP_RAW_POST_DATA() - Необработанные POST-данные
- Функция $http_response_header() - Заголовки ответов HTTP
- Функция $argc() - Количество аргументов переданных скрипту
- Функция $argv() - Массив переданных скрипту аргументов
Коментарии
Please note that if you have register_globals to On, global variables associated to $_SESSION variables are references, so this may lead to some weird situations.
<?php
session_start();
$_SESSION['test'] = 42;
$test = 43;
echo $_SESSION['test'];
?>
Load the page, OK it displays 42, reload the page... it displays 43.
The solution is to do this after each time you do a session_start() :
<?php
if (ini_get('register_globals'))
{
foreach ($_SESSION as $key=>$value)
{
if (isset($GLOBALS[$key]))
unset($GLOBALS[$key]);
}
}
?>
Be carefull with $_SESSION array elements when you have the same name as a normal global.
The following example leads to unpredictable behaviour of the $wppa array elements, some are updated by normal code, some not, it is totally unpredictable what happens.
<?php
global $wppa;
$wppa = array( 'elm1' => 'value1', 'elm2' => 'value2', ....etc...);
if ( ! session_id() ) @ session_start();
if ( ! isset($_SESSION['wppa']) $_SESSION['wppa'] = array();
if ( ! isset($_SESSION['wppa']['album']) ) $_SESSION['wppa']['album'] = array();
$_SESSION['wppa']['album'][1234] = 1;
$wppa['elm1'] = 'newvalue1';
print_r($_SESSION);
?>
This will most likely display Array ( [wppa] => Array ( [album] => Array ( [1234] => 1 ) [elm1] => 'newvalue1' [elm2] => 'value2' ... etc ...
But setting $wppa['elm1'] to another value or referring to it gives unpredictable results, maybe 'value1', or 'newvalue1'.
The most strange behaviour is that not all elements of $wppa[xx] show up as $_SESSION['wppa'][xx].
Creating New Session
==========================
<?php
session_start();
/*session is started if you don't write this line can't use $_Session global variable*/
$_SESSION["newsession"]=$value;
?>
Getting Session
==========================
<?php
session_start();
/*session is started if you don't write this line can't use $_Session global variable*/
$_SESSION["newsession"]=$value;
/*session created*/
echo $_SESSION["newsession"];
/*session was getting*/
?>
Updating Session
==========================
<?php
session_start();
/*session is started if you don't write this line can't use $_Session global variable*/
$_SESSION["newsession"]=$value;
/*it is my new session*/
$_SESSION["newsession"]=$updatedvalue;
/*session updated*/
?>
Deleting Session
==========================
<?php
session_start();
/*session is started if you don't write this line can't use $_Session global variable*/
$_SESSION["newsession"]=$value;
unset($_SESSION["newsession"]);
/*session deleted. if you try using this you've got an error*/
?>