首頁  >  文章  >  後端開發  >  php中session_start()是什麼意思

php中session_start()是什麼意思

青灯夜游
青灯夜游原創
2022-03-07 11:08:576102瀏覽

在php中,session_start()的意思為“開始會話”,是一個用於創建新會話或重用現有會話的內建函數;語法為“session_start($array);”,成功開始會話回傳true,反之回傳false。

php中session_start()是什麼意思

本教學操作環境:windows7系統、PHP7.1版、DELL G3電腦

在php中,session_start()的意思為「開始會話」。

語法:

session_start(array $options = array()): bool

session_start()函數會建立新會話或重複使用現有會話。如果透過 GET 或 POST 方式,或使用 cookie 提交了會話 ID, 則會重複使用現有會話。

參數:

  • $options:此參數是關聯數組,如果提供,那麼就會用其中的項目覆寫 會話配置指示 中的配置項目。此陣列中的鍵無需包含 session. 前綴。

    除了一般的會話設定指示項, 也可以在此陣列中包含 read_and_close 選項。如果將此選項的值設為 true, 那麼會話檔案會在讀取完畢之後馬上關閉, 因此,可以在會話資料沒有變動的時候,避免不必要的檔案鎖定。

當會話自動開始或透過 session_start() 手動開始的時候, PHP 內部會呼叫會話管理器的 open 和 read 回呼函數。會話管理器可能是 PHP 預設的, 也可能是擴充功能提供的(SQLite 或 Memcached 擴充功能), 也可能是透過 session_set_save_handler() 設定的使用者自訂會話管理器。透過 read 回呼函數傳回的現有會話資料(使用特殊的序列化格式儲存), PHP 會自動反序列化資料並且填入 $_SESSION 超級全域變數。

若要使用命名會話,請在呼叫 session_start() 函數 之前呼叫 session_name() 函數。

如果啟用了 session.use_trans_sid 選項, session_start() 函數會註冊一個內部輸出管理器, 此輸出管理器完成 URL 重寫的工作。

如果使用者合併使用 ob_start() 和 ob_gzhandler 函數,則函數的呼叫順序會影響輸出結果。例如,必須在開始會話之前呼叫 ob_gzhandler 函數完成註冊。

  • 回傳值:成功開始會話回傳 true ,反而回傳 false。

範例1:

<?php
// page1.php

session_start();

echo &#39;Welcome to page #1&#39;;

$_SESSION[&#39;favcolor&#39;] = &#39;green&#39;;
$_SESSION[&#39;animal&#39;]   = &#39;cat&#39;;
$_SESSION[&#39;time&#39;]     = time();

// 如果使用 cookie 方式传送会话 ID
echo &#39;<br /><a href="page2.php">page 2</a>&#39;;

// 如果不是使用 cookie 方式传送会话 ID,则使用 URL 改写的方式传送会话 ID
echo &#39;<br /><a href="page2.php?&#39; . SID . &#39;">page 2</a>&#39;;
?>

請求 page1.php 頁面之後, 第二頁 page2.php 會包含會話資料。請參閱 會話參考 以取得更多關於 會話 ID 傳送的信息, 在該參考頁中有關於常數 SID 的詳細說明。

範例2:覆寫 Cookie 逾時時間設定

<?php
// 设置 cookie 的有效时间为 1 天
session_start([
    &#39;cookie_lifetime&#39; => 86400,
]);
?>

推薦學習:《PHP影片教學

以上是php中session_start()是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn