[英]$_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.