在ASP中获取客户端MAC地址的方法

在ASP中获取客户端MAC地址的方法,第1张

程序属于一种特别的方法 使用范围比较有限 而且有一定的危险性 借鉴了asp后门里的一些方法 下面是程序代码 <%dim remoteaddrif Request ServerVariables( HTTP_X_FORWARDED_FOR )=empty thenremoteaddr=Request ServerVariables( REMOTE_ADDR )elseremoteaddr=Request ServerVariables( HTTP_X_FORWARDED_FOR )end ifResponse Write(GetMac(remoteaddr)) 由于读取某IP的网卡MAC地址 本程序通过调用arp命令通过查询本机arp表读取特定IP的MAC地址 使用本程序需注意以下事项 本程序需要 WSCRIPT SHELL 和 Scripting FileSystemObject 两个组件 请确保您的服务器可以正常使用这两个组件 本程序需要调用cmd exe程序 请确保IIS来宾帐号对程序有访问权限 本程序需要临时文件保存结果 请确保IIS来宾帐号对临时目录有写权限 function GetMac(IP)On Error Resume NextDim oScriptDim oFileSys oFileDim All szTempFile ipc phyc typecDim TempPathSet oScript = Server CreateObject( WSCRIPT SHELL )Set oFileSys = Server CreateObject( Scripting FileSystemObject )TempPath= d:\temp\ 临时目录szTempFile = TempPath &oFileSys GetTempName() 获取临时文件名Call oScript Run ( cmd exe /c ping n &IP True) 保证arp表中有此IPCall oScript Run ( cmd exe /c arp a &IP &>&szTempFile True)Set oFile = oFileSys OpenTextFile (szTempFile False )All=oFile ReadAll()oFile CloseIf (IsObject(oFile)) ThenCall oFileSys DeleteFile(szTempFile True)End Ifarr = Split(All vbCrLf)If UBound(arr) = Thenipc = InStr( arr( ) Internet Address )phyc = InStr( arr( ) Physical Address )typec = InStr( arr( ) Type )If typec >phyc And phyc >ipc And ipc >ThenGetMac=Ucase(Trim(CStr(Mid(arr( ) phyc typec phyc))))End IfEnd IfEnd function%> lishixinzhi/Article/program/ASP/201311/21739

获取当前程序文件的路径也算是一个比较常见的需求 比如我有一个文件conn xml位于 exe的同一目录 在运行时需要从中读取一些设置信息

string str =Process GetCurrentProcess() MainModule FileName//可获得当前执行的exe的文件名

string str =Environment CurrentDirectory//获取和设置当前目录(即该进程从中启动的目录)的完全限定路径

//备注 按照定义 如果该进程在本地或网络驱动器的根目录中启动 则此属性的值为驱动器名称后跟一个尾部反斜杠(如 C:\ ) 如果该进程在子目录中启  动 则此属性的值为不带尾部反斜杠的驱动器和子目录路径(如 C:\mySubDirectory )

string str =Directory GetCurrentDirectory()//获取应用程序的当前工作目录

string str =AppDomain CurrentDomain BaseDirectory//获取基目录 它由程序集冲突解决程序用来探测程序集

string str =Application StartupPath//获取启动了应用程序的可执行文件的路径 不包括可执行文件的名称

string str =Application ExecutablePath//获取启动了应用程序的可执行文件的路径 包括可执行文件的名称

string str =AppDomain CurrentDomain SetupInformation ApplicationBase//获取或设置包含该应用程序的目录的名称

System Diagnostics Process GetCurrentProcess() MainModule FileName

获取模块的完整路径

System Environment CurrentDirectory

获取和设置当前目录(该进程从中启动的目录)的完全限定目录

System IO Directory GetCurrentDirectory()

获取应用程序的当前工作目录 这个不一定是程序从中启动的目录啊 有可能程序放在C:\里 这个函数有可能返回C:\Documents and Settings\ZYB\ 或者C:\Program Files\Adobe\ 有时不一定返回什么东东 我也搞不懂了

System AppDomain CurrentDomain BaseDirectory

获取程序的基目录

System AppDomain CurrentDomain SetupInformation ApplicationBase

获取和设置包括该应用程序的目录的名称

System Windows Forms Application StartupPath

获取启动了应用程序的可执行文件的路径 效果和 一样 只是 返回的字符串后面多了一个 \ 而已

System Windows Forms Application ExecutablePath

获取启动了应用程序的可执行文件的路径及文件名 效果和 一样

对于Windows程序 和Web 应用程序来说 他们运行的路径是不一样的 所以关键是判断当前运行的程序是哪种程序 于是我们可以使用如下的代码  string path =

if (System Environment CurrentDirectory == appDomain CurrentDomain BaseDirectory)//Windows应用程序则相等

{

path = AppDomain CurrentDomain BaseDirectory

}

else

{

path = AppDomain CurrentDomain BaseDirectory + Bin\

}

这样如果我们写了一个类库 类库中用到了Assembly LoadFrom 由于是通用类库 所以可能用到Windows程序中也可能用到Web中 那么用上面的代码就很方便了

Server MapPath

System Windows Forms StartupPath

Type Assembly Location

方法 可以应用于控制台应用程序 WinForm应用程序 Windows服务 方法 可以应用于Web应用程序 方法 都可以应用

但方法 是加载应用程序的路径 如果是Web应用程序 取得的路径是C:\WINDOWS\Microsoft NET\Framework\v \Temporary ASP NET Files目录 所以Web项目还是使用Server MapPath吧 否则建议使用方法 如果自己新建类库 可以加入对System Windows Forms StartupPath的引用后使用

进程对象在 NET中表现为System Diagnostics Process类 通过调用Process GetCurrentProcess() MainModule FileName可获得当前执行的exe的文件名 但是这个方法得到的仅仅是文件名 如果程序运行期间没有切换工作目录 那么可以调用System IO Path的方法获取绝对路径 但是当前目录同样可以通过Environment CurrentDirectory获得 而且很多软件在使用Open Dialog打开文件的时候 都会切换工作目录 而使得这一机制失效

如果是在Windows Forms应用程序中 当前应用也表现为System Windows Forms Application对象 通过其静态属性Application ExecutablePath和Application StartupPath 可以取得可执行文件的路径和启动路径

但如果不是在Windows应用中呢 或者是在Library中呢 就算是Application对象的属性依然能获得 也需要在工程中添加System Windows Forms这个Assembly的引用 非常不方便 这个时候 可以通过Assembly的静态方法 GetCallingAssembly或者GetExecutingAssembly取得当前执行的Assembly 然后通过Assembly类的Location获取assembly的位置

但是使用Assembly的时候 可能会遇到权限方面的问题 同时Assembly GetCallingAssembly或者Assembly GetExecutingAssembly有可能得到的不是 exe文件的位置 在GAC中的添加了强名的Assembly 运行时是可以不必与 exe在同一目录的

NET的进程启动时 会创建AppDomain 所有的Assembly都被Load到某一个AppDomain中 而AppDomain中提供了SetupInformation属性 可以获取AppDomain启动时的一些信息 因此 可以通过调用AppDomain CurrentDomain SetupInformation ApplicationBase获取当前应用程序所在的路径

在通过以上方法取到所需的目录后 可以调用System IO Path的方法获取文件名 目录名 绝对路径等 停止对路径字符串的分析 而改用System IO Path类吧

lishixinzhi/Article/program/net/201311/11363

分类: 电脑/网络 >>程序设计 >>其他编程语言

问题描述:

我做了注册表单如下

第一页是选择用户名 文本字段名称name 提交到regcheck

regcheck的代码

<%if request("name")="" then

response.write"<script language=JavaScript>{window.alert('对不起,请您输入需要注册的用户名!')window.location.href='reg2'}</script>"

end if%>

<%if len(request("name"))>12 or len(request("name"))<5 then

response.write"<script language=JavaScript>{window.alert('对不起,您的用户名长度不符合规则!')window.location.href='reg2'}</script>"

end if%>

<!--#include file="conn" -->

<head>

<STYLE type=text/css>

TD {

FONT-SIZE: 12pxCOLOR: #000000;font-family: "宋体"

}

</STYLE>

</head>

<body bgcolor="#F7FCFF">

<%

name=request("name")

set rs=server.createobject("adodb.recordset")

sql="select * from user where name='"&name&"'"

rs.open sql,conn,1,3

%>

<% if not rs.eof then

%>

<table>

<tr>

<td>

<% Response.Write"<script language=JavaScript>{window.alert('对不起,这个用户已经被注册!请重新选择用户名.')window.location.href='reg2'}</script>"%>

<%else%>

<%session("login")=true

response.write"<script language=JavaScript>{window.alert('恭喜您!您选择的帐号完全可以注册,请继续填写详细资料!')window.location.href='reg3'}</script>"%>

<%end if%>

</td>

</tr>

</table>

</body>

<%

rs.close

set rs=nothing

conn.close

set conn=nothing

%>

在第三页填写详细资料的时候,我想直接显示用户填写的用户名,而不再次填写,我用了<%=session("name")%>为什么什么都不显示啊 也没有出错信息,在用户名后面 依然是空的 我该怎么做啊

解析:

利用session把这个用户名暂时储存起来,

session("name")="注册的用户名"

后面用到的时候就方便多了.

在文本框里显示就这样写

<input type=text name=username value="<%=session("name")%>" readonly >

显示出来的用户名是不允许修改的所以要记得写上readonly(只读)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11457125.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存