Tag: asp预览模式: 普通 | 列表

Vbscript Asp unicode编码转汉字

 自己写的代码:

ASP/Visual Basic代码
  1. Function unicodetostr(text)  
  2.     unicodetostr=text  
  3.     if instr(text,"&#")>0 then  
  4.         str=split(text,"&#")  
  5.         for i=1 to ubound(str)  
  6.         str1=mid(str(i),1,instr(str(i),";")-1)  
  7.         'response.write(str1&"<br/>")  
  8.         unicodetostr=replace(unicodetostr,"&#"&str1&";",chrw(str1))  
  9.         next  
  10.     end if  
  11. end function  

参考资料:https://zhidao.baidu.com/question/41686234.html

用Chr()函数把ascii码转化成汉字
用ChrW()函数把Unicode码转化成汉字
(还有之前说的AscW()函数返回值为负的时候,应加上65536 才得到汉字实际的Unicode码)
求汉字的Unicode代码 用AscW()函数
AscW("汉")=27721
求汉字的ASCII码 用Asc()函数 返回一个负数值
如Asc("汉")=-17734

Tags: asp vb

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 386

asp之字符串操作函数

 asp之字符串函数示例

用字符串函数对字符串进行截头去尾、大小写替换等操作。

函数 语法 功能
Len Len(string|varname) 返回字符串内字符的数目,或是存储一变量所需的字节数。
Trim Trim(string) 将字符串前后的空格去掉
Ltrim Ltrim(string) 将字符串前面的空格去掉
Rtrim Rtrim(string) 将字符串后面的空格去掉
Mid Mid(string,start,length) 从string字符串的start字符开始取得length长度的字符串,如果省略第三个参数表示从start字符开始到字符串结尾的字符串
Left Left(string,length) 从string字符串的左边取得length长度的字符串
Right Right(string,length) 从string字符串的右边取得length长度的字符串
LCase LCase(string) 将string字符串里的所有大写字母转化为小写字母
UCase UCase(string) 将string字符串里的所有大写字母转化为大写字母
StrComp StrComp(string1,string2[,compare]) 返回string1字符串与string2字符串的比较结果,如果两个字符串相同,则返回0,如果小于则返回-1,如果大于则返回1
InStr InStr(string1,string2[, compare]) 返回string1字符串在string2字符串中第一次出现的位置
Split Split(string1,delimiter[, count[, start]])

将字符串根据delimiter拆分成一维数组,其中delimiter用于标识子字符串界限。如果省略,使用空格("")作为分隔符。
count 返回的子字符串数目,-1 指示返回所有子字符串。
start为 1 执行文本比较;如果为 0 或者省略执行二进制比较。

Replace Replace(e­xpression, find, replacewith[, compare[, count[, start]]]) 返回字符串,其中指定数目的某子字符串(find)被替换为另一个子字符串(replacewith)。

Tags: asp

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1932

ACCESS库可以这样书写:

ASP/Visual Basic代码
  1. set rs = server.createobject("adodb.recordset")    
  2. sql = "select * from table   
  3. rs.addnew   
  4. rs("title") = "title"   
  5. rs("content") = "content"   
  6. rs.update   
  7. newid = rs("id")    
  8. rs.close    

SQLSERVER用上面的方法不行,必须在Update后多加一句,rs.movelast.

ASP/Visual Basic代码
  1. set rs = server.createobject("adodb.recordset")    
  2. sql = "select * from table   
  3. rs.addnew   
  4. rs("title") = "title"   
  5. rs("content") = "content"   
  6. rs.update   
  7. rs.movelast   
  8. newid = rs("id")    
  9. rs.close    

SqlServer中的自增的ID的最后的值:

Select SCOPE_IDENTITY() --返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。
Select @@IDENTITY    --返回插入到当前会话中任何作用域内的最后一个 IDENTITY 列值
Select IDENT_CURRENT('TbName')--不受作用域和会话的限制,而受限于指定的表。
IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。

查看更多...

Tags: asp

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 3074

asp返回404错误状态码

ASP/Visual Basic代码
  1. <%  
  2.    Response.Status = "404 Not Found"  
  3. %>

 

Tags: asp

分类:技术文章 | 固定链接 | 评论: 1 | 引用: 0 | 查看次数: 2569

Asp读取调用纯真IP数据库

ASP/Visual Basic代码
  1. <%   
  2. '文件名:ip.asp 与QQwry.dat放在一个文件夹下面   
  3. '使用:在要用到的查询ip的asp页面中最前面加入<!--#include file = "ip.asp"-->   
  4. '然后可以用address(getIP())获得请求的地理位置   
  5.   
  6. '=========================================================   
  7. ' IP物理定位搜索类 Version 3.0.0   
  8. ' QQWry.DAT 利用程序 修改自互联网流传代码   
  9. ' 本类在ASP环境中使用纯真版QQWry.dat通过完美测试   
  10. ' 如果您的服务器环境不支持ADodb.Stream,将无法使用此程序   
  11. ' 推荐使用纯真数据库,更新也方便   
  12. ' ========================================================   
  13.   
  14. ' ============================================   
  15. ' 返回IP信息   
  16. ' 如address("127.0.0.1")   
  17. ' 返回值为:"本机地址 CZ88.NET"   
  18. ' ============================================   
  19. Function address(sip)   
  20. Dim Wry, IPType   
  21. Set Wry = New TQQWry   
  22. IPType = Wry.QQWry(sip)   
  23.   
  24. address=""&Wry.Country & " " & Wry.LocalStr &""   
  25. End Function   
  26.   
  27. '获得请求的实际IP地址   
  28. Function getIP()   
  29. Dim strIPAddr   
  30. If Request.ServerVariables("HTTP_X_FORWARDED_FOR") = "" OR InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), "unknown") > 0 Then   
  31. strIPAddr = Request.ServerVariables("REMOTE_ADDR")   
  32. ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",") > 0 Then   
  33. strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",")-1)   
  34. ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";") > 0 Then   
  35. strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";")-1)   
  36. Else   
  37. strIPAddr = Request.ServerVariables("HTTP_X_FORWARDED_FOR")   
  38. End If   
  39. getIP = Trim(Mid(strIPAddr, 1, 30))   
  40. End Function   
  41.   
  42. Function Look_Ip(IP)   
  43. Dim Wry, IPType, QQWryVersion, IpCounter   
  44. ' 设置类对象   
  45. Set Wry = New TQQWry   
  46. ' 开始搜索,并返回搜索结果   
  47. ' 您可以根据 QQWry(IP) 返回值来判断该IP地址在数据库中是否存在,如果不存在可以执行其他的一些操作   
  48. ' 比如您自建一个数据库作为追捕等,这里我就不详细说明了   
  49. IPType = Wry.QQWry(IP)   
  50. ' Country:国家地区字段   
  51. ' LocalStr:省市及其他信息字段   
  52. Look_Ip = Wry.Country & " " & Wry.LocalStr   
  53. End Function   
  54. ' ============================================   
  55. ' 返回IP信息 JS调用   
  56. ' ============================================   
  57. Function GetIpInfoAv(IP, sType)   
  58. Dim Wry, IPType   
  59. Set Wry = New TQQWry   
  60. IPType = Wry.QQWry(IP)   
  61.   
  62. Select Case sType   
  63. Case 1 GetIpInfoAv = "document.write(""" & IP & """);"   
  64. Case 2 GetIpInfoAv = "document.write(""" & Wry.Country & """);"   
  65. Case 3 GetIpInfoAv = "document.write(""" & Wry.LocalStr & """);"   
  66. Case Else GetIpInfoAv = "document.write(""您来自:" & IP & " 所在区域:" & Wry.Country & " " & Wry.LocalStr & """);"   
  67. End Select   
  68. End Function   
  69. ' ============================================   
  70. ' 返回QQWry信息   
  71. ' ============================================   
  72. Function WryInfo()   
  73. Dim Wry, IPType, QQWry(1)   
  74. ' 设置类对象   
  75. Set Wry = New TQQWry   
  76. IPType = Wry.QQWry("255.255.255.255")   
  77. ' 读取数据库版本信息   
  78. QQWry(0) = Wry.Country & " " & Wry.LocalStr   
  79. ' 读取数据库IP地址数目   
  80. QQWry(1) = Wry.RecordCount + 1   
  81. WryInfo = QQWry   
  82. End Function   
  83. ' ============================================   
  84. ' 爱雪儿IP物理定位搜索类   
  85. ' ============================================   
  86. Class TQQWry   
  87. ' ============================================   
  88. ' 变量声名   
  89. ' ============================================   
  90. Dim Country, LocalStr, Buf, OffSet   
  91. Private StartIP, EndIP, CountryFlag   
  92. Public QQWryFile   
  93. Public FirstStartIP, LastStartIP, RecordCount   
  94. Private Stream, EndIPOff   
  95. ' ============================================   
  96. ' 类模块初始化   
  97. ' ============================================   
  98. Private Sub Class_Initialize   
  99. Country = ""   
  100. LocalStr = ""   
  101. StartIP = 0   
  102. EndIP = 0   
  103. CountryFlag = 0   
  104. FirstStartIP = 0   
  105. LastStartIP = 0   
  106. EndIPOff = 0   
  107. QQWryFile = Server.MapPath("QQWry.dat"'QQ IP库路径,要转换成物理路径   
  108. End Sub   
  109. ' ============================================   
  110. ' IP地址转换成整数   
  111. ' ============================================   
  112. Function IPToInt(IP)   
  113. Dim IPArray, i   
  114. IPArray = Split(IP, ".", -1)   
  115. FOr i = 0 to 3   
  116. If Not IsNumeric(IPArray(i)) Then IPArray(i) = 0   
  117. If CInt(IPArray(i)) < 0 Then IPArray(i) = Abs(CInt(IPArray(i)))   
  118. If CInt(IPArray(i)) > 255 Then IPArray(i) = 255   
  119. Next   
  120. IPToInt = (CInt(IPArray(0))*256*256*256) + (CInt(IPArray(1))*256*256) + (CInt(IPArray(2))*256) + CInt(IPArray(3))   
  121. End Function   
  122. ' ============================================   
  123. ' 整数逆转IP地址   
  124. ' ============================================   
  125. Function IntToIP(IntValue)   
  126. p4 = IntValue - Fix(IntValue/256)*256   
  127. IntValue = (IntValue-p4)/256   
  128. p3 = IntValue - Fix(IntValue/256)*256   
  129. IntValue = (IntValue-p3)/256   
  130. p2 = IntValue - Fix(IntValue/256)*256   
  131. IntValue = (IntValue - p2)/256   
  132. p1 = IntValue   
  133. IntToIP = Cstr(p1) & "." & Cstr(p2) & "." & Cstr(p3) & "." & Cstr(p4)   
  134. End Function   
  135. ' ============================================   
  136. ' 获取开始IP位置   
  137. ' ============================================   
  138. Private Function GetStartIP(RecNo)   
  139. OffSet = FirstStartIP + RecNo * 7   
  140. Stream.Position = OffSet   
  141. Buf = Stream.Read(7)   
  142.   
  143. EndIPOff = AscB(MidB(Buf, 5, 1)) + (AscB(MidB(Buf, 6, 1))*256) + (AscB(MidB(Buf, 7, 1))*256*256)   
  144. StartIP = AscB(MidB(Buf, 1, 1)) + (AscB(MidB(Buf, 2, 1))*256) + (AscB(MidB(Buf, 3, 1))*256*256) + (AscB(MidB(Buf, 4, 1))*256*256*256)   
  145. GetStartIP = StartIP   
  146. End Function   
  147. ' ============================================   
  148. ' 获取结束IP位置   
  149. ' ============================================   
  150. Private Function GetEndIP()   
  151. Stream.Position = EndIPOff   
  152. Buf = Stream.Read(5)   
  153. EndIP = AscB(MidB(Buf, 1, 1)) + (AscB(MidB(Buf, 2, 1))*256) + (AscB(MidB(Buf, 3, 1))*256*256) + (AscB(MidB(Buf, 4, 1))*256*256*256)   
  154. CountryFlag = AscB(MidB(Buf, 5, 1))   
  155. GetEndIP = EndIP   
  156. End Function   
  157. ' ============================================   
  158. ' 获取地域信息,包含国家和和省市   
  159. ' ============================================   
  160. Private Sub GetCountry(IP)   
  161. If (CountryFlag = 1 Or CountryFlag = 2) Then   
  162. Country = GetFlagStr(EndIPOff + 4)   
  163. If CountryFlag = 1 Then   
  164. LocalStr = GetFlagStr(Stream.Position)   
  165. ' 以下用来获取数据库版本信息   
  166. If IP >= IPToInt("255.255.255.0"And IP <= IPToInt("255.255.255.255"Then   
  167. LocalStr = GetFlagStr(EndIPOff + 21)   
  168. Country = GetFlagStr(EndIPOff + 12)   
  169. End If   
  170. Else   
  171. LocalStr = GetFlagStr(EndIPOff + 8)   
  172. End If   
  173. Else   
  174. Country = GetFlagStr(EndIPOff + 4)   
  175. LocalStr = GetFlagStr(Stream.Position)   
  176. End If   
  177. ' 过滤数据库中的无用信息   
  178. Country = Trim(Country)   
  179. LocalStr = Trim(LocalStr)   
  180. If InStr(Country, "CZ88.NET"Then Country = "114XP.CN"   
  181. If InStr(LocalStr, "CZ88.NET"Then LocalStr = "114XP.CN"   
  182. End Sub   
  183. ' ============================================   
  184. ' 获取IP地址标识符   
  185. ' ============================================   
  186. Private Function GetFlagStr(OffSet)   
  187. Dim Flag   
  188. Flag = 0   
  189. Do While (True)   
  190. Stream.Position = OffSet   
  191. Flag = AscB(Stream.Read(1))   
  192. If(Flag = 1 Or Flag = 2 ) Then   
  193. Buf = Stream.Read(3)   
  194. If (Flag = 2 ) Then   
  195. CountryFlag = 2   
  196. EndIPOff = OffSet - 4   
  197. End If   
  198. OffSet = AscB(MidB(Buf, 1, 1)) + (AscB(MidB(Buf, 2, 1))*256) + (AscB(MidB(Buf, 3, 1))*256*256)   
  199. Else   
  200. Exit Do   
  201. End If   
  202. Loop   
  203.   
  204. If (OffSet < 12 ) Then   
  205. GetFlagStr = ""   
  206. Else   
  207. Stream.Position = OffSet   
  208. GetFlagStr = GetStr()   
  209. End If   
  210. End Function   
  211. ' ============================================   
  212. ' 获取字串信息   
  213. ' ============================================   
  214. Private Function GetStr()   
  215. Dim c   
  216. GetStr = ""   
  217. Do While (True)   
  218. c = AscB(Stream.Read(1))   
  219. If (c = 0) Then Exit Do   
  220.   
  221. '如果是双字节,就进行高字节在结合低字节合成一个字符   
  222. If c > 127 Then   
  223. If Stream.EOS Then Exit Do   
  224. GetStr = GetStr & Chr(AscW(ChrB(AscB(Stream.Read(1))) & ChrB(C)))   
  225. Else   
  226. GetStr = GetStr & Chr(c)   
  227. End If   
  228. Loop   
  229. End Function   
  230. ' ============================================   
  231. ' 核心函数,执行IP搜索   
  232. ' ============================================   
  233. Public Function QQWry(DotIP)   
  234. Dim IP, nRet   
  235. Dim RangB, RangE, RecNo   
  236.   
  237. IP = IPToInt (DotIP)   
  238.   
  239. Set Stream = CreateObject("ADodb.Stream")   
  240. Stream.Mode = 3   
  241. Stream.Type = 1   
  242. Stream.Open   
  243. Stream.LoadFromFile QQWryFile   
  244. Stream.Position = 0   
  245. Buf = Stream.Read(8)   
  246.   
  247. FirstStartIP = AscB(MidB(Buf, 1, 1)) + (AscB(MidB(Buf, 2, 1))*256) + (AscB(MidB(Buf, 3, 1))*256*256) + (AscB(MidB(Buf, 4, 1))*256*256*256)   
  248. LastStartIP = AscB(MidB(Buf, 5, 1)) + (AscB(MidB(Buf, 6, 1))*256) + (AscB(MidB(Buf, 7, 1))*256*256) + (AscB(MidB(Buf, 8, 1))*256*256*256)   
  249. RecordCount = Int((LastStartIP - FirstStartIP)/7)   
  250. ' 在数据库中找不到任何IP地址   
  251. If (RecordCount <= 1) Then   
  252. Country = "未知"   
  253. QQWry = 2   
  254. Exit Function   
  255. End If   
  256.   
  257. RangB = 0   
  258. RangE = RecordCount   
  259.   
  260. Do While (RangB < (RangE - 1))   
  261. RecNo = Int((RangB + RangE)/2)   
  262. Call GetStartIP (RecNo)   
  263. If (IP = StartIP) Then   
  264. RangB = RecNo   
  265. Exit Do   
  266. End If   
  267. If (IP > StartIP) Then   
  268. RangB = RecNo   
  269. Else   
  270. RangE = RecNo   
  271. End If   
  272. Loop   
  273.   
  274. Call GetStartIP(RangB)   
  275. Call GetEndIP()   
  276.   
  277. If (StartIP <= IP) And ( EndIP >= IP) Then   
  278. ' 没有找到   
  279. nRet = 0   
  280. Else   
  281. ' 正常   
  282. nRet = 3   
  283. End If   
  284. Call GetCountry(IP)   
  285.   
  286. QQWry = nRet   
  287. End Function   
  288. ' ============================================   
  289. ' 类终结   
  290. ' ============================================   
  291. Private Sub Class_Terminate   
  292. On ErrOr Resume Next   
  293. Stream.Close   
  294. If Err Then Err.Clear   
  295. Set Stream = Nothing   
  296. End Sub   
  297. End Class   
  298. %>  

Tags: asp

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2894

Asp截取中文字符

ASP/Visual Basic代码
  1. Function GetStringLength(txt,length)  
  2. dim i  
  3. i=1  
  4. y=0  
  5. txt=trim(txt)  
  6. for i=1 to len(txt)  
  7. j=mid(txt,i,1)  
  8. if asc(j)>=0 and asc(j)<=127 then '汉字外的其他符号,如:!@#,数字,大小写英文字母  
  9. y=y+0.5  
  10. else '汉字  
  11. y=y+1  
  12. end if  
  13. if -int(-y) >= length then '截取长度  
  14. txt = left(txt,i)  
  15. exit for  
  16. end if  
  17. next  
  18. GetStringLength=txt  
  19. End Function   

Tags: asp

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2883

[私密日志] 私密日志

该日志是私密日志,只有博主或发布者可以查看!
分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1460

[私密日志] 私密日志

该日志是私密日志,只有博主或发布者可以查看!
分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1287

中文版正常是:select * from table1 where field1 like '%王%'
英文版要加上N:select * from table1 where field1 like N'%王%'

Tags: asp sqlserver

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 3113

Asp防刷新代码

内容来源于网络,代码为测试,谨慎使用。

1.在要保护的页面顶部加如对AntiRefresh.asp文件的引用如:
<!--#include virtual="AntiRefresh.asp" -->
2.接着添加调用代码
<%
   Const VarNameDateArr="www_domai_net_App_DataArr" '队列名称
   Const VarNameIPArr="www_domai_net_App_IPArr"     '队列名称
   Dim objAntiRefresh
   Set objAntiRefresh= new AntiRefresh
   objAntiRefresh.BufferSize=100   '队列大小
   objAntiRefresh.CacheItemAvailTime=2 '间隔时间
   If Not objAntiRefresh.IsValidAccess() Then
     Set objAntiRefresh=Nothing
    Response.Write("您的访问过去频繁请2秒后再试.")
    Response.End()
   End If
   Set objAntiRefresh=Nothing

%>

其中要注意的是 
   Const VarNameDateArr="www_domai_net_App_DataArr" '队列名称
   Const VarNameIPArr="www_domai_net_App_IPArr"     '队列名称
比方你要在List.asp与search.asp中加入通一个防刷新器,那么你把上面的调用代码分别复制到这两个页面,或者保证两个页面的掉用代码一致。这样的效果是,你访问了List.asp页那么你在2秒内将不能访问List.asp或Search.asp页
如果你要2个页面独立,即你访问List.asp后,你会在2秒内不能再次访问List.asp,但是你可以访问Search.asp,反之毅然,那么你就要保证2个页面的 Const VarNameDateArr="xxx",Const VarNameIPArr="xxx"不同,比方第一个也面你用xxxList,第个个页面用xxxSearch,
如:
   Const VarNameDateArr="www_domai_net_App_DataArr_Search" '(_List)
   Const VarNameIPArr="www_domai_net_App_IPArr_Search"     '(_List)

唠叨这些是给那么不太懂的朋友,以便他们能使用这些代码,如果你懂Asp那么以上的对你来说就很好理解了。


下面是AntiRefresh.asp文件源码




<%
'***************************************
'*         页面防刷新模块              *
'* WDFrog,2007-8-16                  

'***************************************

Class AntiRefresh

Private IPArr,DateArr
Private m_BufferSize
Private m_CacheItemAvailTime

Private Sub Class_Initialize()
   Application.Lock()
   m_BufferSize=100
   m_CacheItemAvailTime=2
  
End Sub
Private Sub Class_Terminate()
   Application.UnLock()
End Sub
Public Property Get CacheItemAvailTime
   CacheItemAvailTime=m_CacheItemAvailTime
End Property
Public Property Let CacheItemAvailTime(Value)
   m_CacheItemAvailTime=Value
End Property

Public Property Get BufferSize
   BufferSize=m_BufferSize
End Property

Public Property Let BufferSize(Value)
   m_BufferSize=Value
End Property

Private Sub EnsureArr()
   If IsArray(Application(VarNameDateArr)) Then
    DateArr=Application(VarNameDateArr)
   Else
    ReDim DateArr(BufferSize)
   End If
  
   If IsArray(Application(VarNameIPArr)) Then
    IPArr=Application(VarNameIPArr)
   Else
    ReDim IPArr(BufferSize)
   End If
End Sub

Public Function IsValidAccess()
   Dim ip,i
   ip=GetIP()
   IsValidAccess=True
   EnsureArr()
   For i=1 To BufferSize
    If IPArr(i)=ip Then
     If DateDiff("s",CDate(DateArr(i)),Now()) < CacheItemAvailTime Then
       IsValidAccess=False
       Exit Function
     End If   
    End If
   Next
   Call QueueHandle()
   DateArr(1)=Now()
   IPArr(1)=ip
   Application(VarNameIPArr)=IPArr
   Application(VarNameDateArr)=DateArr
End Function

Public Function ClearCache()
   Set Application(VarNameDateArr)=Nothing
   Set Application(VarNameIPArr)=Nothing
End Function

Private Sub QueueHandle()
   Dim i,j
  
   For i=BufferSize-1 To 1 Step -1
    DateArr(i+1)=DateArr(i)
   Next
   For j=BufferSize-1 To 1 Step -1
    IPArr(j+1)=IPArr(j)
   Next
End Sub

Private Function GetIP()
   Dim strIPAddr
   If Request.ServerVariables("HTTP_X_FORWARDED_FOR") = "" or InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), "unknown") > 0 Then
    strIPAddr = Request.ServerVariables("REMOTE_ADDR")
   ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",") > 0 Then
    strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",")-1)
   ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";") > 0 Then
    strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";")-1)
   Else
    strIPAddr = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
   End If
   GetIP = (Trim(Mid(strIPAddr, 1, 30)))
End Function

End Class 
%>

Tags: asp

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2421

ASP的URLDecode函数URLEncode解码函数

ASP/Visual Basic代码
  1. Function URLDecode(ByVal urlcode)   
  2. Dim start,final,length,char,i,butf8,pass   
  3. Dim leftstr,rightstr,finalstr   
  4. Dim b0,b1,bx,blength,position,u,utf8   
  5. On Error Resume Next  
  6. b0 = Array(192,224,240,248,252,254)   
  7. urlcode = Replace(urlcode,"+"," ")   
  8. pass = 0   
  9. utf8 = -1  
  10. length = Len(urlcode) : start = InStr(urlcode,"%") : final = InStrRev(urlcode,"%")   
  11. If start = 0 Or length < 3 Then URLDecode = urlcode : Exit Function   
  12. leftstr = Left(urlcode,start - 1) : rightstr = Right(urlcode,length - 2 - final)  
  13. For i = start To final   
  14. char = Mid(urlcode,i,1)   
  15. If char = "%" Then   
  16. bx = URLDecode_Hex(Mid(urlcode,i + 1,2))   
  17. If bx > 31 And bx < 128 Then   
  18. i = i + 2   
  19. finalstr = finalstr & ChrW(bx)   
  20. ElseIf bx > 127 Then   
  21. i = i + 2   
  22. If utf8 < 0 Then   
  23. butf8 = 1 : blength = -1 : b1 = bx   
  24. For position = 4 To 0 Step -1   
  25. If b1 >= b0(position) And b1 < b0(position + 1) Then   
  26. blength = position   
  27. Exit For   
  28. End If   
  29. Next   
  30. If blength > -1 Then   
  31. For position = 0 To blength   
  32. b1 = URLDecode_Hex(Mid(urlcode,i + position * 3 + 2,2))   
  33. If b1 < 128 Or b1 > 191 Then butf8 = 0 : Exit For   
  34. Next   
  35. Else   
  36. butf8 = 0   
  37. End If   
  38. If butf8 = 1 And blength = 0 Then butf8 = -2   
  39. If butf8 > -1 And utf8 = -2 Then i = start - 1 : finalstr = "" : pass = 1   
  40. utf8 = butf8   
  41. End If   
  42. If pass = 0 Then   
  43. If utf8 = 1 Then   
  44. b1 = bx : u = 0 : blength = -1   
  45. For position = 4 To 0 Step -1   
  46. If b1 >= b0(position) And b1 < b0(position + 1) Then   
  47. blength = position   
  48. b1 = (b1 xOr b0(position)) * 64 ^ (position + 1)   
  49. Exit For   
  50. End If   
  51. Next   
  52. If blength > -1 Then   
  53. For position = 0 To blength   
  54. bx = URLDecode_Hex(Mid(urlcode,i + 2,2)) : i = i + 3   
  55. If bx < 128 Or bx > 191 Then u = 0 : Exit For   
  56. u = u + (bx And 63) * 64 ^ (blength - position)   
  57. Next   
  58. If u > 0 Then finalstr = finalstr & ChrW(b1 + u)   
  59. End If   
  60. Else   
  61. b1 = bx * &h100 : u = 0   
  62. bx = URLDecode_Hex(Mid(urlcode,i + 2,2))   
  63. If bx > 0 Then   
  64. u = b1 + bx   
  65. i = i + 3   
  66. Else   
  67. If Left(urlcode,1) = "%" Then   
  68. u = b1 + Asc(Mid(urlcode,i + 3,1))   
  69. i = i + 2   
  70. Else   
  71. u = b1 + Asc(Mid(urlcode,i + 1,1))   
  72. i = i + 1   
  73. End If   
  74. End If   
  75. finalstr = finalstr & Chr(u)   
  76. End If   
  77. Else   
  78. pass = 0   
  79. End If   
  80. End If   
  81. Else   
  82. finalstr = finalstr & char   
  83. End If   
  84. Next   
  85. URLDecode = leftstr & finalstr & rightstr   
  86. End Function  
  87. Function URLDecode_Hex(ByVal h)   
  88. On Error Resume Next   
  89. h = "&h" & Trim(h) : URLDecode_Hex = -1   
  90. If Len(h) <> 4 Then Exit Function   
  91. If isNumeric(h) Then URLDecode_Hex = cInt(h)   
  92. End Function  

Tags: asp

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 3420

Asp实现不带www301重定向到带www且带参数

带参数的301重定向代码好像不多见,自己写了一段:

ASP/Visual Basic代码
  1. Dim strHostName,strScriptName,strSubUrl,strRequestItem   
  2. strHostName=CStr(Request.ServerVariables("HTTP_HOST"))  
  3. if strHostName="shanxicoal.com" then  
  4.     strScriptName=CStr(Request.ServerVariables("SCRIPT_NAME"))  
  5.     strSubUrl=""  
  6.     If Request.QueryString<>"" Then  
  7.         strScriptName=strScriptName&"?"  
  8.         For Each strRequestItem In Request.QueryString  
  9.             If InStr(strScriptName,strRequestItem)=0 Then  
  10.                 If strSubUrl="" Then  
  11.                     strSubUrl=strSubUrl&strRequestItem&"="&Server.URLEncode(Request.QueryString(""&strRequestItem&""))  
  12.                 Else  
  13.                     strSubUrl=strSubUrl&"&"&strRequestItem&"="&Server.URLEncode(Request.QueryString(""&strRequestItem&""))  
  14.                 End If  
  15.             End If  
  16.         Next  
  17.     End If  
  18.     GetUrl="http://www."&strHostName&strScriptName&strSubUrl  
  19.     Response.Status="301 Moved Permanently"  
  20.     Response.AddHeader "Location",GetUrl  
  21. end if  

参考文章:ASP获取当前网址https://blog.guanjianci.net/article.asp?id=349

 

Tags: asp

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2259

 广告位

↑返回顶部↑