簡體   English   中英

$ _Session不起作用,如何正確使用它?

[英]$_Session don't work, how to use it in a proper way?

當我嘗試直接與會話一起工作時,我遇到了一個大問題。

/* session_start(); //already tried */
if (isset($_SESSION) == false)
{
  session_start();
  $_SESSION['PDO'] = new dataBase();
  $_SESSION['Debug'] = 'Inside the isset';  
}
else
{
  $_SESSION['Debug'] = 'Outside the isset';  
}

編輯:

session_start();
if (!isset($_SESSION['PDO'])) // the session is new
{ 
  $dbObject = new dataBase(); // store the data into the session
  $_SESSION['PDO'] = $dbObject;
  echo 'I created a session and stored some data into it';
} 
else 
{ // there is data into the session
  var_export($_SESSION);
  echo 'I have some data in the session';  
}

輸出始終是“我創建了一個會話並將一些數據存儲到其中”

我開始認為問題可能出在我班上

class dataBase
{
  var $connLink;

  var $SERVERNAME = "127.0.0.1";
  var $PORT = "3388";
  var $USERNAME = "root";
  var $PASSWORD = "";

  function __construct()
  {
    try 
    {
        $this->connLink = new PDO("mysql:host=$this->SERVERNAME;port=$this->PORT;dbname=mydb;charset=utf8", $this->USERNAME, $this->PASSWORD);
        $this->connLink->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch (PDOException $e) 
    {
        echo 'Echec lors de la connexion : ' . $e->getMessage();
    }
  }
}

謝謝 !

在訪問$_SESSION之前,您首先需要使用session_start();初始化會話session_start(); 在頁面頂部

在調用session_start()之前, $_SESSION變量不存在。 需要在每個頁面上調用此函數。

這是您需要做的:

session_start(); // start the session

if (!isset($_SESSION['PDO'])) { // the session is new
  $_SESSION['PDO'] = new dataBase(); // store the data into the session
  echo 'I created a session and stored some data into it';
} else { // there is data into the session
  echo 'I have some data in the session';  
}

在頁面上的第一次調用中,會話開始,並將pdo數據存儲到其中。 然后,在此頁面上的下一個調用中,將從服務器存儲中加載會話,並且pdo數據位於會話中

請注意,如果您從命令行使用php,則會話將無法正常工作

session_start();

if (!isset($_SESSION['PDO']))
{
  $_SESSION['PDO'] = new dataBase();
  $_SESSION['Debug'] = 'Inside the isset'; 
}
else
{
  $_SESSION['Debug'] = 'Outside the isset';  
}

你有這樣的東西嗎?

編輯:

if(!isset($_SESSION['test']))
{
    $obj = new stdClass();
    $_SESSION['test'] = $obj;
}
else{
    var_export($_SESSION);
}

然后試試這個

$_SESSION之前使用session_start() 單擊此處以獲取更多詳細信息.....

最終,我決定不再創建對象,而僅通過諸如dataBase :: connectDB();之類的靜態函數使用它。 等...

暫無
暫無

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

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