PHP Conference Japan 2024

$_SESSION

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

$_SESSIONSession 變數

說明

一個關聯式陣列,包含目前腳本可用的 Session 變數。有關如何使用它的更多資訊,請參閱 Session 函式 文件。

注意事項

注意:

這是一個「超全域」或自動全域變數。這表示它在整個腳本的所有作用域中都可用。在函式或方法內存取它不需要使用 global $variable;

參見

新增筆記

使用者貢獻的筆記 3 則筆記

Tugrul
9 年前
建立新的 Session
==========================
<?php
session_start
();
/*如果沒有寫這行,就不能使用 $_Session 全域變數,因此必須先啟動 session*/
$_SESSION["newsession"]=$value;
?>
取得 Session
==========================
<?php
session_start
();
/*如果沒有寫這行,就不能使用 $_Session 全域變數,因此必須先啟動 session*/
$_SESSION["newsession"]=$value;
/*建立 session*/
echo $_SESSION["newsession"];
/*取得 session*/
?>
更新 Session
==========================
<?php
session_start
();
/*如果沒有寫這行,就不能使用 $_Session 全域變數,因此必須先啟動 session*/
$_SESSION["newsession"]=$value;
/*這是我的新 session*/
$_SESSION["newsession"]=$updatedvalue;
/*更新 session*/
?>
刪除 Session
==========================
<?php
session_start
();
/*如果沒有寫這行,就不能使用 $_Session 全域變數,因此必須先啟動 session*/
$_SESSION["newsession"]=$value;
unset(
$_SESSION["newsession"]);
/*刪除 session。如果您嘗試使用它,您會收到錯誤訊息*/
?>
bohwaz
16 年前
請注意,如果您的 register_globals 設定為開啟,則與 $_SESSION 變數關聯的全域變數將會是參考,因此這可能會導致一些奇怪的情況。

<?php

session_start
();

$_SESSION['test'] = 42;
$test = 43;
echo
$_SESSION['test'];

?>

載入頁面,OK,它顯示 42,重新載入頁面... 它顯示 43。

解決方案是在每次執行 session_start() 之後執行以下操作

<?php

if (ini_get('register_globals'))
{
foreach (
$_SESSION as $key=>$value)
{
if (isset(
$GLOBALS[$key]))
unset(
$GLOBALS[$key]);
}
}

?>
opajaap at opajaap dot nl
11 年前
當您有一個與一般全域變數同名的 $_SESSION 陣列元素時,請小心。

以下範例會導致 $wppa 陣列元素的行為難以預測,有些元素會被正常的程式碼更新,有些則不會,完全無法預測會發生什麼事。

<?php
global $wppa;
$wppa = array( 'elm1' => 'value1', 'elm2' => 'value2', ....等等...);

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);
?>
這很可能會顯示 Array ( [wppa] => Array ( [album] => Array ( [1234] => 1 ) [elm1] => 'newvalue1' [elm2] => 'value2' ... 等等 ...
但是將 $wppa['elm1'] 設定為另一個值或引用它會產生不可預測的結果,可能是 'value1' 或 'newvalue1'。

最奇怪的行為是並非所有 $wppa[xx] 的元素都會顯示為 $_SESSION['wppa'][xx]。
To Top