我们将网站移到了一个带有新IP地址的新服务器上。什么使我困惑;网站登录会话在新服务器上不工作,但当我将数据库IP更改为旧服务器时,它们正在工作。
MySQL版本
- 旧服务器=5.1.58-社区
- 新服务器=5.1.68-社区
起初我以为这是一个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'))
让我们按顺序浏览通知:
session_start()
以前已被调用。没必要再打电话了- 没有
$_SESSION["uUserTypeID"]
这样的变量。它没有设置 - 位于
$UserTypeDescr
的数组没有0
索引。它可能是空的。如果您从数据库查询中获得它,它要么失败,要么返回空的结果集 - 与3相同
注意:一个会话已经启动-忽略第2行上C:''inetpub''wwwroot''gtest''libs''products.php中的session_start()
猜测session.auto_start已启用,因此在覆盖会话处理程序(或新的会话处理程序失败)之前,会话已启用。
防止此类错误(即会话已启动)的最安全方法是在启动会话之前始终检查会话是否已启动。你可以通过简单地包括来做到这一点
if(!isset($_SESSION))SESSION_start();
我希望这能解决问题?尝试后,您可以简单地添加您的评论或意见,以进一步改进答案,最重要的是,解决问题。我希望这有帮助?