Php getenv('REMOTE_USER')不将值插入数据库日志
我有一个mysql数据库,它存储用户的访问日志。问题是数据库中的每一个指定列都填充了相应的数据,但是user\u info列始终是空的。有点像$user变量不包含值。我已经做了一段时间了,一切似乎都很好,但并没有完全达到我的目的。谢谢你的帮助。 下面是MySql代码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
//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'];