簡體   English   中英

練習使用session_start()

[英]Practice to use session_start()

我應該使用

session_start()

要么

if (session_id() == ""){
  session_start();
}

因為我沒有記錯,沒有后者,還會出現另一條錯誤消息?

PHP> = 5.4.0版本的推薦方法

if (session_status() == PHP_SESSION_NONE) {
    session_start();
}

資料來源: http : //www.php.net/manual/en/function.session-status.php

對於PHP <5.4.0版本

if(session_id() == '') {
    session_start();
}

兩者都應該滿足您的要求。

我這樣做是為了阻止會話劫持。 然后只需在每個頁面的開頭調用該函數。

public function start_session()
{
    session_start();

    if (rand(1, 10) == 5)
    {
        session_regenerate_id();
    }
}

好的做法是始終將session_start()放在代碼的開頭,無論遇到什么情況。

來自session_id()的官方PhP文檔:

session_id()返回當前會話的會話ID,如果沒有當前會話(不存在當前會話ID),則返回空字符串(“”)。

這是一個如何檢查現有的session_id()的示例:

session_start();

if( empty(session_id()) ) {
    session_id();
}

始終從文檔中獲取:

session_id()用於獲取或設置當前會話的會話ID。

如php手冊所述, session_create函數將創建一個新會話,或者如果您已經創建了一個會話,返回當前會話 因此,無需檢查是否存在會話。 如果仍然要檢查,我建議使用Flux Coders方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM