如何将用户计算机名存储在数据库中?

Posted

技术标签:

【中文标题】如何将用户计算机名存储在数据库中?【英文标题】:How to store Users Computer Name in Database? 【发布时间】:2014-10-03 22:47:39 【问题描述】:

我正在尝试将访客计算机名称存储在我的数据库中。我编写了以下代码,但它只在数据库中保存 IP 地址而不是计算机名。我已经使用gethostbyadd 来获取计算机名称。

请告诉我在数据库中存储访客计算机名称的其他方法。

<?php

include 'connect.php';


$ip =           $_SERVER['REMOTE_ADDR'];
$host_name=     gethostbyaddr($_SERVER['REMOTE_ADDR']);


    $query= "insert into visitors_data (ip_address, computer_name, date, time)
             values('$ip', '$host_name', NOW(), CURTIME())";


    mysql_query($query);

?>

【问题讨论】:

有时找不到特定 IP 地址的主机名。您应该准备好处理这种情况。 【参考方案1】:

在我的快速查找中,它可以适用于本地网络,它可以正常工作并返回计算机名称。但是当从远程位置访问该页面时,则

$_SERVER['REMOTE_ADDR'];

将返回网络的公共 IP 地址,而不是特定的客户端计算机。还有

gethostbyaddr($_SERVER['REMOTE_ADDR']);

将从该客户端计算机所在的网络中给出该公共 IP 地址的结果。该结果将是该网络的公共主机名,不显示客户端计算机的名称。

此外,这将再次取决于该 IP 和域的 Reverse PTR 记录是否已配置。如果不是,则该函数将返回托管服务提供商的主机名或仅返回 IP(通常作为该 IP 的子域给定为 ISP / 主机)

另一个例外是托管专用服务器或 VPS,其中公共 IP 直接指向计算机。在大多数情况下,这可以显示服务器的主机名,但不能有任何用户从他们的服务器访问网站。

希望这会有所帮助。

【讨论】:

以上是关于如何将用户计算机名存储在数据库中?的主要内容,如果未能解决你的问题,请参考以下文章

如何最好地存储用户信息和用户登录名和密码

如何最好地存储用户信息和用户登录名和密码

如何实现IP,计算机名,用户名实时互查?

数据库中的登录名和密码存储

更改报表部署的登录名

文件后缀名files如何改为xls