2016-09-24 89 views
-1

我開始主要在php中開發一個平臺,並且會話工作正常,直到我停止了我的Apache服務器並在一週後開始工作。

這是我的問題:

的index.php

<?php 
    include_once 'backend/login.php'; // DB connect + functions   
    include_once 'menu.php';   // menu include 
    check_logout();      // check if user logged out 
?>  
<?php 
    include_once 'widgets/widgets.php'; // widgets : login, agenda, events, languages 
    include_once 'footer.php';   // footer 
?> 

所以基本上這些都是我的網頁的PHP部分(其餘爲HTML)。後端/登錄包括登錄功能(並且該文件本身包括登錄到數據庫,然後是session_start())。

home.php

<?php 
     include_once 'backend/login.php';   // connect to DB, login functions 
     include_once 'backend/load_feed.php';  // feed functions   
     include_once 'menu.php';     // include main menu 
     ?> 
     <script> 
      alert("<?php echo $_SESSION['first_name']; ?>"); 
     </script> 
     <?php   
     check_login();        // ensure user is logged in 
    ?> 

當上的index.php登錄(形式被隱藏在窗口小部件/ widgets.php)是有效的。它將window.location更改爲 home.php。問題是$ _SESSION不包含登錄過程中存儲的信息。

dbconnect.php

<?php 
/* 
remote script used to conenct to the database 
*/ 
$servername = "localhost"; 
$username = "root"; 
$password = "root"; 
$dbname = "DB"; 

// create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 

// check connection 
if($conn->connect_error){ 
    die("Connection failed : " . $conn->connect_error); 
} 
session_start(); 
?> 

這是用於連接到數據庫的腳本,它運行正常(我可以驗證用戶憑證的有效性)

補充信息:
- 我已驗證存儲的所有信息在登錄時存儲在$ _SESSION中(信息存在於函數的範圍中)。
- 所有需要$ _SESSION的文件都包含(直接或通過其他包含的) dbconnect.php文件,因此可以訪問$ _SESSION。
- 在調用session_start()之前不會生成輸出。

有人對我的問題的根源有什麼概念嗎?

回答

1
<?php 
    session_start(); 
    include_once 'backend/login.php'; 
    include_once 'menu.php'; 
    check_logout(); 
    include_once 'widgets/widgets.php'; 
    include_once 'footer.php' 
?> 

試試這個!

我希望這個作品&還做了一件事,你在上面包含文件的列表,請確保您有沒有所謂的在session_start()再次也文件,其實這並不重要,但還是給一個嘗試。

此外,正如你所說的功能給出了問題,也請張貼錯誤的快照,以便我更有助於理解錯誤。

+0

我試過!它似乎沒有工作.. 該功能沒有任何問題,它使用$ _SESSSION沒有任何問題。實際上,index.php具有完美的訪問$ _SESSION,但不知何故home.php沒有它.. – TanguyH

+0

<?php session_start(); ?> //將這個函數放在你的home.php文件的第一行,打開<?php標籤並給它一個鏡頭。 –

+0

這就是我剛剛嘗試的,但以某種方式添加和刪除一行,會話似乎再次活動(沒有使用session_start())。我不明白剛剛發生了什麼事,不過謝謝! ;) – TanguyH

0

我想你應該根據this首先調用session_start(),但我不太清楚

+0

我已經試過了,但沒有改變任何東西。而作爲session_start()被稱爲在dbconnect的結尾,並通過其他包括,我想象的結果是相同的。 – TanguyH

0

你需要呼籲home.php的開始session_start()功能,然後再試一次。

+0

不起作用(這是我嘗試的第一件事當然之一) – TanguyH

0

您可以嘗試在包含文件之前在文檔的頂部添加sesion_start();