Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取本地intranet上的计算机名_Php_Javascript_Activex - Fatal编程技术网

Php 获取本地intranet上的计算机名

Php 获取本地intranet上的计算机名,php,javascript,activex,Php,Javascript,Activex,我们已经编写了一个代码,在本地内部网的php页面中显示计算机的名称和IP,以便我们的用户服务可以询问最终用户他们的计算机名称。它当前仅在IE中运行,并且仅当文件位于本地计算机上时才运行 <script type="text/javascript" language="javascript"> var cpu = new ActiveXObject("WScript.Network"); document.write("<h1 style=\

我们已经编写了一个代码,在本地内部网的php页面中显示计算机的名称和IP,以便我们的用户服务可以询问最终用户他们的计算机名称。它当前仅在IE中运行,并且仅当文件位于本地计算机上时才运行

<script type="text/javascript" language="javascript">           
    var cpu = new ActiveXObject("WScript.Network");
    document.write("<h1 style=\"color:#ffc533\"> Your Computer's name is: " + cpu.ComputerName + "</h1>")
</script>
<h1>Your IP Address is: <?php print $_SERVER[REMOTE_ADDR] ?></h1>

var cpu=新的ActiveXObject(“WScript.Network”);
document.write(“您的计算机名为:“+cpu.ComputerName+”)
您的IP地址是:

当我们在计算机上测试它时,两者都会显示,但当我们将其上载到服务器时,它只显示IP地址。只在IE中工作不是问题,然而,本地问题是。所以我的问题有两个方面。如何使计算机名显示在页面上,或者是否有更好的方法使其在不启用反向DNS的情况下工作?

编辑开始

原始答案如下,我添加了此选项作为打开安全批发的替代方案

您可以编写自己的ActiveX DLL并在每台客户端计算机上注册它。让它实现一个返回计算机名的类,或者您甚至可以只包装WScript.Network。然后,在类中实现,并将其标记为脚本安全。WScript对象是不安全的,因为它还可以修改计算机上的文件,但如果您仅包装单个函数以检索计算机名,则控件将无法修改任何文件

为使IObjectSafety实现中的脚本安全,请为IID_IActiveScript、IID_IDispatch和IID_IPersist设置
接口安全选项
返回
S_OK
。有关实现的详细信息,请参阅提供的链接

这是更多的工作,但消除了向用户展示如何使用以下选项运行不安全控件的危险

编辑结束

在每台客户端计算机上:

打开Internet Explorer并选择工具->Internet选项菜单:

选择“安全”选项卡,然后按“自定义级别”按钮:

确保在“ActiveX控件和插件”部分的两个设置“下载未签名的ActiveX控件”和“初始化并编写未标记为脚本安全的ActiveX控件”设置为“提示”:

在两个对话框上按“确定”以关闭它们

另外,要确保脚本运行时(WScript)已注册,请转到“开始”菜单并按Run,键入“cmd”并按enter键:

命令提示符应打开:

确保驱动器为驱动器C,键入“C:”

复制并粘贴“regsvr32 C:\windows\system32\scrun.dll”,然后按enter键。确保出现一个消息框,说明DllRegisterServer已成功:


安装完成

编辑开始

原始答案如下,我添加了此选项作为打开安全批发的替代方案

您可以编写自己的ActiveX DLL并在每台客户端计算机上注册它。让它实现一个返回计算机名的类,或者您甚至可以只包装WScript.Network。然后,在类中实现,并将其标记为脚本安全。WScript对象是不安全的,因为它还可以修改计算机上的文件,但如果您仅包装单个函数以检索计算机名,则控件将无法修改任何文件

为使IObjectSafety实现中的脚本安全,请为IID_IActiveScript、IID_IDispatch和IID_IPersist设置
接口安全选项
返回
S_OK
。有关实现的详细信息,请参阅提供的链接

这是更多的工作,但消除了向用户展示如何使用以下选项运行不安全控件的危险

编辑结束

在每台客户端计算机上:

打开Internet Explorer并选择工具->Internet选项菜单:

选择“安全”选项卡,然后按“自定义级别”按钮:

确保在“ActiveX控件和插件”部分的两个设置“下载未签名的ActiveX控件”和“初始化并编写未标记为脚本安全的ActiveX控件”设置为“提示”:

在两个对话框上按“确定”以关闭它们

另外,要确保脚本运行时(WScript)已注册,请转到“开始”菜单并按Run,键入“cmd”并按enter键:

命令提示符应打开:

确保驱动器为驱动器C,键入“C:”

复制并粘贴“regsvr32 C:\windows\system32\scrun.dll”,然后按enter键。确保出现一个消息框,说明DllRegisterServer已成功:


安装完成

这可能是IE信任本地提供的HTML文档来读取计算机名称,而不是远程主机的问题。没有其他服务器可以通过Internet询问您的计算机名称;您可能必须更改每个客户端浏览器上的某些设置才能避免此问题。您已尝试
gethostbyaddr($\u SERVER['REMOTE\u ADDR'])
PHP
中,gethost解决方案再次显示IP地址。如果您的web服务器的DNS服务器具有本地IP的条目,则gethostbyaddr的副本将正常工作。很可能,您的服务器没有内部DNS服务器。这可能是IE信任本地提供的HTML文档来读取计算机名称,而不是远程主机的问题。没有其他服务器可以通过Internet询问您的计算机名称;您可能必须更改每个客户端浏览器上的某些设置才能避免此问题。您已尝试
gethostbyaddr($\u SERVER['REMOTE\u ADDR'])
PHP
中,gethost解决方案再次显示IP地址。如果您的web服务器的DNS服务器具有本地IP的条目,则gethostbyaddr的副本将正常工作。很可能,您的服务器没有内部DNS服务器。我在这里被撕裂了。作为回答,这写得很好,但这是一个可怕的、可怕的、可怕的想法,因为它会让用户的机器远离恶意网页的攻击