0

我们将网站移至带有新 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'))
4

3 回答 3

2

让我们按顺序浏览通知:

  1. session_start()之前已经被调用过。无需再次调用它。
  2. 没有这样的变量$_SESSION["uUserTypeID"]。它没有设置。
  3. at 的数组$UserTypeDescr没有0索引。应该是空的。如果您从数据库查询中得到它,它要么失败,要么返回一个空的结果集。
  4. 与 3 相同。
于 2013-07-24T10:54:53.117 回答
1

注意:会话已经开始 - 忽略第 2 行 C:\inetpub\wwwroot\gtest\libs\products.php 中的 session_start()

猜测 session.auto_start 已启用,因此在覆盖会话处理程序(或新的会话处理程序失败)之前启用了会话。

于 2013-07-24T10:56:44.533 回答
0

防止此类错误(即会话已启动)的最安全方法是在开始会话之前始终检查会话是否已启动。您可以通过简单地包括

if (!isset($_SESSION))session_start();

我希望这能解决问题吗?尝试后,您可以简单地添加您的评论或意见以进一步改进答案,最重要的是,解决问题。我希望这有帮助?

于 2014-01-24T15:44:46.070 回答