2017-08-08 37 views
0

我有一个大问题,当我tryed直接与会议工作...

/* 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(); 
    } 
    } 
} 

谢谢!

+2

'session_start();'在页面顶部 –

+0

M Siddiqui如果我这样做,我永远不会影响我的$ _SESSION ['PDO'] = new dataBase(); ... –

+2

每个页面上你想对SESSION,'session_start();做任何事情'''在刚开始使用'<?php'标记 –

回答

2

访问$_SESSION之前,你首先需要使用session_start();页面

0

顶部的$_SESSION变量不存在,直到session_start()被称为初始化会话。这个功能需要在每个页面上调用。

以下是你需要做的:

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的命令行工作

+0

第一次你加载页面,你会进入'isset'。那么如果你重新加载它,它会进入'else' –

+0

嗯,我的输出总是“我创建了一个会话并存储了一些数据”。我不会在dataBase类中取消任何设置,我仍然不明白 –

+0

在session_start后面添加这个:'echo session_id();'并且在重新加载页面时检查id是否相同 –

0
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); 
} 

试试这个,然后

+0

除了当我定义$ _SESSION ['PDO'] –

+0

调整为'内isset'它有点奇怪它在这里完全工作 – MacBooc

+0

当我将类分配给我的$ _SESSION ,我无法注册更多的数据 –

0

使用session_start()$_SESSION Click here for more details .....

+0

已经做到了(对不起,如果我没有显示它) –

+0

你使用哪种框架的PHP? –

+0

只用easyPhp的崇高文字 –

0

最后我决定从来没有创造我的对象,只能通过静态函数 使用它,如数据库: :connectDB();等等...