2010-11-07 99 views
1

这个脚本在线工作而不是通过离线WAMP ...PHP脚本在线,但没有离线

function current_user() 
    { 
     static $current_user; 
     if(!$current_user) 
     { 
      if($_SESSION['userID']) 
      { 
       $userID = intval($_SESSION['userID']); 
       $query = "SELECT * 
          FROM `users` 
          WHERE `id` = $userID"; 
       $data = mysql_query($query); 
       if(mysql_num_rows($data)) 
       { 
        $current_user = mysql_fetch_assoc($data); 
        return $current_user; 
       } 
      } 
     } 
     return $current_user; 
    } 

当这个函数被调用时,我得到以下错误信息......

Notice: Undefined index: userID in C:\wamp\www\alpha\_includes\session.php on line 38 

第38行是$userID = intval($_SESSION['userID']);

该错误只发生在未设置userID SESSION变量时。该功能通过离线测试计算机(运行WAMP)的页面调用。


作为一个便笺,这不是我的脚本。信用归因于Think Vitamin Membership的Jim Hoskins。

+0

更正标题.... PHP脚本在线,但不会脱机。 – SgtOJ 2010-11-07 13:04:34

+0

将'$ userID'重命名为'$ somethingwhichisnotasessionkey',有什么区别? – Harmen 2010-11-07 13:06:08

回答

3

您在一台服务器上启用了通知,但没有启用另一台服务器。本通知只是告诉你正试图读取一个不存在的数组元素。

相反,试试这个

if(isset($_SESSION['userID'])) 
+0

谢谢。我意识到在你发布你的答案之前几秒钟,他仍然发布了他的答案。我有错误检查。再次感谢你。 – SgtOJ 2010-11-07 13:17:06

3

这是一个通知,而不是一个错误。修复:

if (isset($_SESSION['userID']) && $_SESSION['userID']) 
+0

谢谢。我在问为什么它显示为离线,但不在线。你间接回答我的问题。我记得我的php.ini在线和离线之间是不同的。 – SgtOJ 2010-11-07 13:16:28

+0

我很乐意为您提供帮助。但是,保罗有正确的答案。感谢你的快速回复。 – SgtOJ 2010-11-07 13:17:38

0

变化if($_SESSION['userID'])if(isset($_SESSION['userID']))首先检查我们是否使用它之前的会话变量“用户ID”设置。

试试这个代码

function current_user() 
    { 
     static $current_user; 
     if(!$current_user) 
     { 
      if($_SESSION['userID']) 
      { 
       $userID = intval($_SESSION['userID']); 
       $query = "SELECT * 
          FROM `users` 
          WHERE `id` = $userID"; 
       $data = mysql_query($query); 
       if(mysql_num_rows($data)) 
       { 
        $current_user = mysql_fetch_assoc($data); 
        return $current_user; 
       } 
      } 
     } 
     return $current_user; 
    }