Php getenv('REMOTE_USER')不将值插入数据库日志

Php getenv('REMOTE_USER')不将值插入数据库日志,php,mysql,Php,Mysql,我有一个mysql数据库,它存储用户的访问日志。问题是数据库中的每一个指定列都填充了相应的数据,但是user\u info列始终是空的。有点像$user变量不包含值。我已经做了一段时间了,一切似乎都很好,但并没有完全达到我的目的。谢谢你的帮助。 下面是MySql代码 //Database Connection require( 'db.php' ); /* The User Info to be gathered */ $time = date( "M j, Y

我有一个mysql数据库,它存储用户的访问日志。问题是数据库中的每一个指定列都填充了相应的数据,但是user\u info列始终是空的。有点像$user变量不包含值。我已经做了一段时间了,一切似乎都很好,但并没有完全达到我的目的。谢谢你的帮助。 下面是MySql代码

    //Database Connection
    require( 'db.php' );

/* The User Info to be gathered */

$time       = date( "M j, Y | G:i:s A" );
$user       = getenv( 'REMOTE_USER' );
$ip         = getenv( 'REMOTE_ADDR' );
$userAgent  = getenv( 'HTTP_USER_AGENT' );
$referrer   = getenv( 'HTTP_REFERER' );
$currentPage    = getenv( 'REQUEST_URI' );
$query      = getenv( 'QUERY_STRING' );

if( isset( $time, $ip, $userAgent, $referrer, $currentPage ) ) {
/* Log all the required information into the database */
    $prep = $db->prepare(
        "INSERT INTO renal_accessLog(
            ip_address,
            user_info,
            time,
            page,
            referrer,
            search,
            user_agent
        ) VALUES ( ?, ?, ?, ?, ?, ?, ? )
        ");
    $prep->bind_param(
            'sssssss',
            $ip,
            $user,
            $time,
            $currentPage,
            $referrer,
            $query,
            $userAgent
        );
}
$prep->execute();
$prep->close();

$db->close();
这是我登录端的代码。确定哪个用户已登录并获取该用户的信息

//find out who we are dealing with
        if ( true || isset($HTTP_SERVER_VARS['PHP_AUTH_USER'])) {
            $username = $HTTP_SERVER_VARS['PHP_AUTH_USER'];
//          if ($HTTP_SERVER_VARS['HTTP_HOST'] == 'example.com' && (!$HTTP_SERVER_VARS['PHP_AUTH_USER']))  {
//              // this is a little kludge for development purposes
//              // if running in locsl mode and nobody has logged in, 
//              $username = "Teresa"; // Teresa, the developer
//          }

            //look for user record, and if found, remember his model
            $myQuery = "select people.FirstName, people.LastName, modelusername, people.MDFlag, people.ContactId from users left join people on people.ContactId = users.contactId where username = '$username'";
            $result = sql($myQuery);
            $row = mysql_fetch_row($result);
            $firstName = $row[0];
            $lastName = $row[1];
//          $initials = strtoupper("tm");
            $UserInitials = (substr($firstName,0,1) . substr($lastName,0,1));
            $userFullName = $firstName . ' ' . $lastName;
            if ($row[3] == 'Y') {
                $userFullName .= ", MD";
            }
            $modelusername = $row[2];
            $userId = $row[4];
            echo "<center>Hello, ". $firstName . " " . $lastName . " (" . $UserInitials . ")." ;
            if ($modelusername) {
                echo "You are authorized as '$modelusername'.  " ;
            }
尝试替换:

$user       = getenv( 'REMOTE_USER' );
$ip         = getenv( 'REMOTE_ADDR' );
$userAgent  = getenv( 'HTTP_USER_AGENT' );
$referrer   = getenv( 'HTTP_REFERER' );
$currentPage    = getenv( 'REQUEST_URI' );
$query      = getenv( 'QUERY_STRING' );
与:


您应该从$\u服务器超全局检索其中的大部分内容$HTTP_服务器_VARS已弃用,环境全部位于$\u服务器中。正如您所看到的,我相信getenv会为不可用的值返回FALSE,从而导致变量中设置FALSE。如果值为false,isset将返回true,因此您的条件仍将继续。是的,没错。但是如何获取登录用户。如果web服务器已通过HTTP basic auth填充远程用户,则它将存在于$\u服务器['REMOTE\u user']中。有时,如果您使用的是Apache if,则会导致在重定向或代理过程中重写env var作为$\u服务器['REDIRECT\u REMOTE\u USER']使用var\u dump$\u服务器查看它包含的内容。我使用了var\u dump$\u服务器,但发现服务器不包含[REMOTE\u USER]。请看一下上面的代码,如果发现任何异常,请告诉我。我得到一个错误,它说调用非对象上的成员函数$prep->execute,当我使用$\u服务器时。但是当我使用getenv时效果很好;谢谢
$user       = $_SERVER['REMOTE_USER'];
$ip         = $_SERVER['REMOTE_ADDR'];
$userAgent  = $_SERVER['HTTP_USER_AGENT'];
$referrer   = $_SERVER['HTTP_REFERER'];
$currentPage = $_SERVER['REQUEST_URI'];
$query      = $_SERVER['QUERY_STRING'];