2013-07-24 109 views
0

我們將我們的網站移至新的服務器,該服務器附帶一個新的IP地址。什麼使我困惑;網站登錄會話不能在新服務器上工作,但是當我將數據庫IP更改爲他們正在工作的舊服務器時。PHP MySQL會話

MySQL版本

  • 舊服務器= 5.1.58-社區
  • 新服務器= 68年5月1日 - 社區

起初我還以爲這是一個PHP錯誤,但我現在認爲它不是和懷疑它的MySQL相關。任何知道可能會導致這場衝突的人?

調試錯誤

Notice: A session had already been started - ignoring session_start() in C:\inetpub\wwwroot\gtest\libs\products.php on line 2 
Notice: Undefined index: uUserTypeID in C:\inetpub\wwwroot\gtest\admin\index.php on line 50 
Notice: Undefined offset: 0 in C:\inetpub\wwwroot\gtest\admin\index.php on line 52 
Notice: Undefined offset: 0 in C:\inetpub\wwwroot\gtest\admin\index.php on line 52 

線50

GetUserType($_SESSION['uUserTypeID'], $UserTypeID, $UserTypeDescr, $Active_Tag); 

線52

if (($UserTypeDescr[0] == 'Admin') || ($UserTypeDescr[0] == 'Report')) 
+2

可能是一些可怕的代碼? – zerkms

+0

我們需要更多的信息,例如代碼在哪裏失敗並提供那一塊。什麼是PHP錯誤?你試圖解決這個問題?您是否嘗試過調試它,或者只是將問題拋給我們? – HamZa

+1

@HamZa剛剛添加了調試信息 – Mlungisi

回答

2

讓我們通過的通知s的順序:

  1. session_start()已經被調用過。無需再次調用它。
  2. 有沒有這樣的變量$_SESSION["uUserTypeID"]。它沒有設置。
  3. $UserTypeDescr的數組沒有0索引。這可能是空的。如果你從數據庫查詢中得到它,它或者失敗或者返回一個空的結果集。
  4. 同3.
1

注意:一個會議已經開始了 - 忽略用C在session_start():\的Inetpub \ wwwroot的\ GTEST \庫\上線products.php 2

在猜測session.auto_start已啓用,因此在會話處理程序被重寫之前會啓用會話(或新的會話處理程序失敗)。

0

防止這種錯誤(即會話已經開始)的最安全的方法是始終檢查會話是否在開始會話之前已經啓動。 如果(!isset($ _ SESSION))session_start();您可以通過簡單地包括

來做到這一點。

我希望這能解決問題嗎?在嘗試之後,您可以簡單地添加您的評論或觀察結果以進一步改進答案,最重要的是解決問題。我希望這有幫助?