forofbyp 发表于 2016-6-30 19:41

一个ASP入门的问题。通过JS获取IP并且用ASP保存到服务器txt...

在局域网中访问一个局域网中服务器的网页,然后登记记录所访问的机子IP等信息。
ipbook.html是获取IP等信息的页面,也是默认首页,经过测试,能完成功能。<html>
<head>
<title>IP登记</title>
</head>
<body>
<h1>说明</h1>
<p>
如果出现“已限制此网页运行脚本或ActiveX控件。”点击“允许阻止的内容。”<br>
如果出现“在此页上的ActiveX控件和本页上的其它部分的交互可能不安全。你想允许这种交互吗?”点击“是”<br>
然后填写自己姓名,办公室房间号。<br>
填写无误后,点击“登记”按钮。<br>
如果弹出“Ok”,证明登记完毕,点击“确定”,关闭网页即可。<br>
</p>
<object classid="CLSID:76A64158-CB41-11D1-8B02-00600806D9B6" id="locator" style="display:none;visibility:hidden"></object>
<object classid="CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223" id="foo" style="display:none;visibility:hidden"></object>   
<form action ="ipbook.asp" method ="post" name="ipForm" id="ipForm">
<br/> 姓名:<input type="text" name="username" id="username" >
<br/>房间号:<input type="text" name="userroom" id="userroom" >
<br/>MAC地址:<input type="text" name="macAddress" id="macAddress" >
<br/>IP地址:<input type="text" name="ipAddress" id="ipAddress" >
<br/>主机名:<input type="text" name="hostName" id="hostName">
</form>
<input type="submit" name="submit" value="登记" />
</body>
</html>

<script language="javascript">
var sMacAddr="";
var sIPAddr="";
var sDNSName="";
var service = locator.ConnectServer();
service.Security_.ImpersonationLevel=3;
service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');
</script>
<script FOR="foo" EVENT="OnObjectReady(objObject,objAsyncContext)" LANGUAGE="JScript">
         if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true){
                           if(objObject.IPEnabled && objObject.IPAddress(0) !=null && objObject.IPAddress(0) != "undefined")
                                       sIPAddr = objObject.IPAddress(0);
                           if(objObject.MACAddress != null &&objObject.MACAddress != "undefined")
                     sMacAddr = objObject.MACAddress;
                           if(objObject.DNSHostName != null &&objObject.DNSHostName != "undefined")
                                       sDNSName = objObject.DNSHostName;
          }
</script>

<script FOR="foo" EVENT="OnCompleted(hResult,pErrorObject, pAsyncContext)" LANGUAGE="JScript">
ipForm.macAddress.value=sMacAddr;
ipForm.ipAddress.value=sIPAddr;
ipForm.hostName.value=sDNSName;
</script>ipbook.html生成和填写的表单信息,通过ipbook.asp来在服务器保存到网页所在目录下的ip.txt里。但是不知为什么,点了按钮以后没有反应,服务器上也没法保存信息。这里是ipbook.asp的代码 :<%   

'读取各输入框的数据
   
username = Request ("username")
userroom = Request ("userroom")
macAddress = Request ("macAddress")
ipAddress = Request ("ipAddress")
hostName = Request ("hostName")

'检查各输入框是否输入有数据
   
If username = ""Or userroom = "" Or macAddress = "" Or ipAddress = "" Or hostName = "" Then Response.Write "输入内容不能为空白!"   
Response.End
'不再处理以下的程序
End If
info = username & "," & userroom & "," & macAddress & "," & ipAddress & "," & hostName

'On Error Resume Next
'忽略所有的错误
   
'建立 FileSystemObject对象
   
Set fso = Server.CreateObject("Scripting.FileSystemObject")
   
Application.Lock   

'取得ip.txt的完整路径
   
FilePath = Server.MapPath("ip.txt")

'打开ipold.txt   
Set fin = fso.OpenTextFile(OldFilePath,8,True,)
   
'写入信息   
fin.WriteLine info
fin.Close
Application.Unlock
Response.Redirect "over.html"   
%> asp直接写代码就好了吧?不许要html、head、body标签吧?而且添加了这些标签也没作用。


hein 发表于 2016-7-1 01:38

记得建立ip.txt

ipbook.asp的问题:
行13:then后面回车,不然end if无效
行33:33.Set fin = fso.OpenTextFile(FilePath,8,True)
OldFilePath改成FilePath……逗号都用英文的,我建议用ADODB.Stream,所有页面用UTF-8,保存txt用unicode……

还有就是你的ipbook.html23行,应该放在</form>前面……
35行不要用JScript……这东西好像就老IE兼容?你的ipbook.html用到的自动解析我这所有浏览器都是出错的不会获取这些信息的……当然你们机器都设置好了是另外一回事情。

-----------------------------------------------

你IIS把显示详细错误开出来不就能知道问题了吗?

chachi 发表于 2016-7-1 01:52

我猜是目录权限问题

forofbyp 发表于 2016-7-1 10:13

谢谢各位
能看完代码就很感谢了

就是如@hein 所说,旧思路导致的变量命名没有更新。
修正以后OK了。
能看出中文和英文逗号,我的修行果然是太差了T_T

另外,确实很多IE(IE8开始,似乎就阻止了,不晓得有没有什么更好的方法获取相关信息)

aithinkso 发表于 2016-7-1 10:21

但是,为什么要用asp

lexluthor 发表于 2016-7-1 11:28

看到asp的时候我以为有谁挖坟了。。。

forofbyp 发表于 2016-7-1 11:58

lexluthor 发表于 2016-7-1 11:28
看到asp的时候我以为有谁挖坟了。。。

对不起=。=

forofbyp 发表于 2016-7-1 11:58

aithinkso 发表于 2016-7-1 10:21
但是,为什么要用asp

更好更方便的不知道。
页: [1]
查看完整版本: 一个ASP入门的问题。通过JS获取IP并且用ASP保存到服务器txt...