asp常用函数库

 
  1. '----------------- ASP站点开发常用函数库 ------------------
  2. 'OpenDB(vdata_url)   -------------------- 打开数据库
  3. 'getIp()  ------------------------------- 得到真实IP
  4. 'getIPAdress(sip)------------------------ 查找ip对应的真实地址
  5. 'IP2Num(sip) ---------------------------- 限制某段IP地址
  6. 'chkFrom() ------------------------------ 防站外提交设定
  7. 'getsys() ------------------------------- 操作系统检测
  8. 'GetBrowser() --------------------------- 浏览器版本检测
  9. 'GetSearcher() -------------------------- 识别搜索引擎
  10. '
  11. '---------------------- 数据过滤 ↓----------------------------
  12. 'CheckStr(byVal ChkStr) ----------------- 检查无效字符
  13. 'CheckSql() ----------------------------- 防止SQL注入
  14. 'UnCheckStr(Str)------------------------- 检查非法sql命令
  15. 'Checkstr(Str) -------------------------- ASP最新SQL防注入过滤涵数
  16. 'HTMLEncode(reString) ------------------- 过滤转换HTML代码
  17. 'DateToStr(DateTime,ShowType) ----------- 日期转换函数
  18. 'Date2Chinese(iDate) -------------------- 获得ASP的中文日期字符串
  19. 'lenStr(str) ---------------------------- 计算字符串长度(字节)
  20. 'CreateArr(str) ------------------------- 生成二维数组
  21. 'ShowRsArr(rsArr) ----------------------- 用表格显示记录集getrows生成的数组的表结构
  22. '---------------------- 外接组件使用函数↓------------------------
  23. 'sendMail(to_Email,from_Email,from_Name,mail_Subject,mail_Body,mail_htmlBody) -----'Jmail组件 发送邮件
  24. '-----------------------------------------系统检测函数↓------------------------------------------
  25. 'IsValidUrl(url) ------------------------ 检测网页是否有效
  26. 'getHTMLPage(filename) ------------------ 获取文件内容
  27. 'CheckFile(FilePath) -------------------- 检查某一文件是否存在
  28. 'CheckDir(FolderPath) ------------------- 检查某一目录是否存在
  29. 'MakeNewsDir(foldername) ---------------- 根据指定名称生成目录
  30. 'CreateHTMLPage(filename,FileData,C_mode) 生成文件
  31. 'CheckBadWord(byVal ChkStr) ------------- 过滤脏字
  32. '###############################################################
  33. Dim ipData_url
  34. ipData_url="./Ip.mdb"
  35. Response.Write("--------------客户端信息检测------------""<br>")
  36. Response.Write(getsys()"<br>")
  37. Response.Write(GetBrowser()"<br>")
  38. Response.Write(GetSearcher()"<br>")
  39. Response.Write("IP:"&getIp()"<br>")
  40. Response.Write("来源:"&(getIPAdress(GetIp()))"<br>")
  41. Response.Write("<br>")
  42. Response.Write("--------------数据提交检测--------------""<br>")
  43. if not chkFrom then
  44.     Response.write("请不要从站外提交内容!""<br>")
  45.     Response.end
  46. else
  47.     Response.write("本站提交内容!""<br><br>")
  48. End if
  49. function OpenDB(vdata_url)
  50. '------------------------------打开数据库
  51. '使用:Conn = OpenDB("data/data.mdb")
  52.   Dim vibo_Conn
  53.   Set vibo_Conn= Server.CreateObject("ADODB.Connection")
  54.   vibo_Conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(vdata_url)
  55.   vibo_Conn.Open
  56.   OpenDB=vibo_Conn
  57. End Function
  58. function getIp()
  59. '-----------------------得到真实IP
  60. userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR"
  61. If userip = "" Then userip = Request.ServerVariables("REMOTE_ADDR"
  62. getIp=userip
  63. End function
  64. Function getIPAdress(sip) 
  65. '---------------------查找ip对应的真实地址
  66. Dim iparr,iprs,country,city
  67. If sip="127.0.0.1" then sip= "192.168.0.1"    
  68. iparr=split(sip,".")
  69. sip=cint(iparr(0))*256*256*256+cint(iparr(1))*256*256+cint(iparr(2))*256+cint(iparr(3))-1 
  70. Dim vibo_ipconn_STRING
  71. vibo_ipconn_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath(ipData_url)
  72. Set iprs = Server.CreateObject("ADODB.Recordset")
  73. iprs.ActiveConnection = vibo_ipconn_STRING
  74. iprs.Source = "Select Top 1 city, country FROM address Where ip1 <=" & sip & " and " & sip & "<=ip2"
  75. iprs.CursorType = 0
  76. iprs.CursorLocation = 2
  77. iprs.LockType = 1
  78. iprs.Open()
  79. If iprs.bof and iprs.eof then
  80.     country="未知地区"
  81.     city=""
  82. Else
  83.     country=iprs.Fields.Item("country").Value
  84.     city=iprs.Fields.Item("city").Value
  85. End If
  86. getIPAdress=country&city 
  87. iprs.Close()
  88. Set iprs = Nothing
  89. End Function 
  90. Function IP2Num(sip)
  91. '--------------------限制某段IP地址
  92.     dim str1,str2,str3,str4
  93.     dim num
  94.     IP2Num=0
  95.     if isnumeric(left(sip,2)) then
  96.         str1=left(sip,instr(sip,".")-1)
  97.         sip=mid(sip,instr(sip,".")+1)
  98.         str2=left(sip,instr(sip,".")-1)
  99.         sip=mid(sip,instr(sip,".")+1)
  100.         str3=left(sip,instr(sip,".")-1)
  101.         str4=mid(sip,instr(sip,".")+1)
  102.         num=cint(str1)*256*256*256+cint(str2)*256*256+cint(str3)*256+cint(str4)-1
  103.         IP2Num = num
  104.     end if
  105. end function
  106. 'userIPnum = IP2Num(Request.ServerVariables("REMOTE_ADDR"))
  107. 'if userIPnum > IP2Num("192.168.0.0") and userIPnum < IP2Num("192.168.0.255") then
  108.     'response.write ("<center>您的IP被禁止</center>")
  109.     'response.end
  110. 'end if
  111. Function chkFrom() 
  112. '----------------------------防站外提交设定
  113.     Dim server_v1,server_v2, server1, server2
  114.     chkFrom=False 
  115.     server1=Cstr(Request.ServerVariables("HTTP_REFERER"))
  116.     server2=Cstr(Request.ServerVariables("SERVER_NAME"))
  117.     If Mid(server1,8,len(server2))=server2 Then chkFrom=True 
  118. End Function
  119. 'if not chkFrom then
  120.     'Response.write("请不要从站外提交内容!")
  121.     'Response.end
  122. 'End if
  123. function getsys()
  124. '----------------------------------操作系统检测
  125. vibo_soft=Request.ServerVariables("HTTP_USER_AGENT")
  126. if instr(vibo_soft,"Windows NT 5.0") then
  127.     msm="Win 2000"
  128. elseif instr(vibo_soft,"Windows NT 5.1") then
  129.     msm="Win XP"
  130. elseif instr(vibo_soft,"Windows NT 5.2") then
  131.     msm="Win 2003"
  132. elseif instr(vibo_soft,"4.0") then
  133.     msm="Win NT"
  134. elseif instr(vibo_soft,"NT") then
  135.     msm="Win NT"
  136. elseif instr(vibo_soft,"Windows CE") then
  137.     msm="Windows CE"
  138. elseif instr(vibo_soft,"Windows 9") then
  139.     msm="Win 9x"
  140. elseif instr(vibo_soft,"9x") then
  141.     msm="Windows ME"
  142. elseif instr(vibo_soft,"98") then
  143.     msm="Windows 98"
  144. elseif instr(vibo_soft,"Windows 95") then
  145.     msm="Windows 95"
  146. elseif instr(vibo_soft,"Win32") then
  147.     msm="Win32"
  148. elseif instr(vibo_soft,"unix") or instr(vibo_soft,"linux") or instr(vibo_soft,"SunOS") or instr(vibo_soft,"BSD") then
  149.     msm="类Unix"
  150. elseif instr(vibo_soft,"Mac") then
  151.     msm="Mac"
  152. else
  153.     msm="Other"
  154. end if
  155. getsys=msm
  156. End Function
  157. function GetBrowser()
  158. '----------------------------------浏览器版本检测
  159. dim vibo_soft
  160. vibo_soft=Request.ServerVariables("HTTP_USER_AGENT")
  161. Browser="unknown"
  162. version="unknown"
  163. 'vibo_soft="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; TencentTraveler ; .NET CLR 1.1.4322)"    
  164. If Left(vibo_soft,7) ="Mozilla" Then '有此标识为浏览器
  165.             vibo_soft=Split(vibo_soft,";")
  166.             If InStr(vibo_soft(1),"MSIE")>0 Then
  167.                 Browser="Microsoft Internet Explorer "
  168.                 version=Trim(Left(Replace(vibo_soft(1),"MSIE",""),6))
  169.             ElseIf InStr(vibo_soft(4),"Netscape")>0 Then 
  170.                 Browser="Netscape "
  171.                 tmpstr=Split(vibo_soft(4),"/")
  172.                 version=tmpstr(UBound(tmpstr))
  173.             ElseIf InStr(vibo_soft(4),"rv:")>0 Then
  174.                 Browser="Mozilla "
  175.                 tmpstr=Split(vibo_soft(4),":")
  176.                 version=tmpstr(UBound(tmpstr))
  177.                 If InStr(version,")") > 0 Then 
  178.                     tmpstr=Split(version,")")
  179.                     version=tmpstr(0)
  180.                 End If
  181.             End If
  182. ElseIf Left(vibo_soft,5) ="Opera" Then 
  183.             vibo_soft=Split(vibo_soft,"/")
  184.             Browser="Mozilla "
  185.             tmpstr=Split(vibo_soft(1)," ")
  186.             version=tmpstr(0)
  187. End If
  188. If version<>"unknown" Then 
  189.             Dim Tmpstr1
  190.             Tmpstr1=Trim(Replace(version,".",""))
  191.             If Not IsNumeric(Tmpstr1) Then
  192.                 version="unknown"
  193.             End If
  194. End If
  195. GetBrowser=Browser " "& version
  196. End function
  197. function GetSearcher()
  198. '----------------------识别搜索引擎
  199. Dim botlist,Searcher
  200. Dim vibo_soft
  201. vibo_soft=Request.ServerVariables("HTTP_USER_AGENT")
  202. Botlist="Google,Isaac,SurveyBot,Baiduspider,ia_archiver,P.Arthur,FAST-WebCrawler,Java,Microsoft-ATL-Native,TurnitinBot,WebGather,Sleipnir,TencentTraveler"
  203. Botlist=split(Botlist,",")
  204.   For i=0 to UBound(Botlist)
  205.     If InStr(vibo_soft,Botlist(i))>0  Then 
  206.       Searcher=Botlist(i)" 搜索器"
  207.       IsSearch=True
  208.       Exit For
  209.     End If
  210.   Next 
  211. If IsSearch Then 
  212.   GetSearcher=Searcher
  213. else
  214.   GetSearcher="unknown"
  215. End if
  216. End function
  217. '----------------------------------数据过滤 ↓---------------------------------------
  218. Function CheckSql() '防止SQL注入
  219.     Dim sql_injdata  
  220.     SQL_injdata = "'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare" 
  221.     SQL_inj = split(SQL_Injdata,"|"
  222.     If Request.QueryString<>"" Then 
  223.         For Each SQL_Get In Request.QueryString 
  224.             For SQL_Data=0 To Ubound(SQL_inj) 
  225.                 if instr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))>0 Then 
  226.                     Response.Write "<Script Language='javascript'>{alert('请不要在参数中包含非法字符!');history.back(-1)}</Script>" 
  227.                     Response.end 
  228.                 end if 
  229.             next 
  230.         Next 
  231.     End If
  232.     If Request.Form<>"" Then 
  233.         For Each Sql_Post In Request.Form 
  234.             For SQL_Data=0 To Ubound(SQL_inj) 
  235.                 if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 Then 
  236.                     Response.Write "<Script Language='javascript'>{alert('请不要在参数中包含非法字符!');history.back(-1)}    </Script>" 
  237.                     Response.end 
  238.                 end if 
  239.             next 
  240.         next 
  241.     end if
  242. End Function
  243. Function CheckStr(byVal ChkStr) '检查无效字符
  244.     Dim Str:Str=ChkStr
  245.     Str=Trim(Str)
  246.     If IsNull(Str) Then
  247.         CheckStr = ""
  248.         Exit Function 
  249.     End If
  250.     Dim re
  251.     Set re=new RegExp
  252.     re.IgnoreCase =True
  253.     re.Global=True
  254.     re.Pattern="(/r/n){3,}"
  255.     Str=re.Replace(Str,"$1$1$1")
  256.     Set re=Nothing
  257.     Str = Replace(Str,"'","''")
  258.     Str = Replace(Str, "select""select")
  259.     Str = Replace(Str, "join""join")
  260.     Str = Replace(Str, "union""union")
  261.     Str = Replace(Str, "where""where")
  262.     Str = Replace(Str, "insert""insert")
  263.     Str = Replace(Str, "delete""delete")
  264.     Str = Replace(Str, "update""update")
  265.     Str = Replace(Str, "like""like")
  266.     Str = Replace(Str, "drop""drop")
  267.     Str = Replace(Str, "create""create")
  268.     Str = Replace(Str, "modify""modify")
  269.     Str = Replace(Str, "rename""rename")
  270.     Str = Replace(Str, "alter""alter")
  271.     Str = Replace(Str, "cast""cast")
  272.     CheckStr=Str
  273. End Function
  274. Function UnCheckStr(Str) '检查非法sql命令
  275.         Str = Replace(Str, "select""select")
  276.         Str = Replace(Str, "join""join")
  277.         Str = Replace(Str, "union""union")
  278.         Str = Replace(Str, "where""where")
  279.         Str = Replace(Str, "insert""insert")
  280.         Str = Replace(Str, "delete""delete")
  281.         Str = Replace(Str, "update""update")
  282.         Str = Replace(Str, "like""like")
  283.         Str = Replace(Str, "drop""drop")
  284.         Str = Replace(Str, "create""create")
  285.         Str = Replace(Str, "modify""modify")
  286.         Str = Replace(Str, "rename""rename")
  287.         Str = Replace(Str, "alter""alter")
  288.         Str = Replace(Str, "cast""cast")
  289.         UnCheckStr=Str
  290. End Function
  291. Function Checkstr(Str) 'SQL防注入过滤涵数
  292.     If Isnull(Str) Then 
  293.     CheckStr = "" 
  294.     Exit Function 
  295.     End If 
  296.     Str = Replace(Str,Chr(0),"", 1, -1, 1) 
  297.     Str = Replace(Str, """""""", 1, -1, 1) 
  298.     Str = Replace(Str,"<","<", 1, -1, 1) 
  299.     Str = Replace(Str,">",">", 1, -1, 1) 
  300.     Str = Replace(Str, "script""script", 1, -1, 0) 
  301.     Str = Replace(Str, "SCRIPT""SCRIPT", 1, -1, 0) 
  302.     Str = Replace(Str, "Script""Script", 1, -1, 0) 
  303.     Str = Replace(Str, "script""Script", 1, -1, 1) 
  304.     Str = Replace(Str, "object""object", 1, -1, 0) 
  305.     Str = Replace(Str, "OBJECT""OBJECT", 1, -1, 0) 
  306.     Str = Replace(Str, "Object""Object", 1, -1, 0) 
  307.     Str = Replace(Str, "object""Object", 1, -1, 1) 
  308.     Str = Replace(Str, "applet""applet", 1, -1, 0) 
  309.     Str = Replace(Str, "APPLET""APPLET", 1, -1, 0) 
  310.     Str = Replace(Str, "Applet""Applet", 1, -1, 0) 
  311.     Str = Replace(Str, "applet""Applet", 1, -1, 1) 
  312.     Str = Replace(Str, "[""["
  313.     Str = Replace(Str, "]""]"
  314.     Str = Replace(Str, """""", 1, -1, 1) 
  315.     Str = Replace(Str, "=""=", 1, -1, 1) 
  316.     Str = Replace(Str, "'""''", 1, -1, 1) 
  317.     Str = Replace(Str, "select""select", 1, -1, 1) 
  318.     Str = Replace(Str, "execute""execute", 1, -1, 1) 
  319.     Str = Replace(Str, "exec""exec", 1, -1, 1) 
  320.     Str = Replace(Str, "join""join", 1, -1, 1) 
  321.     Str = Replace(Str, "union""union", 1, -1, 1) 
  322.     Str = Replace(Str, "where""where", 1, -1, 1) 
  323.     Str = Replace(Str, "insert""insert", 1, -1, 1) 
  324.     Str = Replace(Str, "delete""delete", 1, -1, 1) 
  325.     Str = Replace(Str, "update""update", 1, -1, 1) 
  326.     Str = Replace(Str, "like""like", 1, -1, 1) 
  327.     Str = Replace(Str, "drop""drop", 1, -1, 1) 
  328.     Str = Replace(Str, "create""create", 1, -1, 1) 
  329.     Str = Replace(Str, "rename""rename", 1, -1, 1) 
  330.     Str = Replace(Str, "count""count", 1, -1, 1) 
  331.     Str = Replace(Str, "chr""chr", 1, -1, 1) 
  332.     Str = Replace(Str, "mid""mid", 1, -1, 1) 
  333.     Str = Replace(Str, "truncate""truncate", 1, -1, 1) 
  334.     Str = Replace(Str, "nchar""nchar", 1, -1, 1) 
  335.     Str = Replace(Str, "char""char", 1, -1, 1) 
  336.     Str = Replace(Str, "alter""alter", 1, -1, 1) 
  337.     Str = Replace(Str, "cast""cast", 1, -1, 1) 
  338.     Str = Replace(Str, "exists""exists", 1, -1, 1) 
  339.     Str = Replace(Str,Chr(13),"<br>", 1, -1, 1) 
  340.     CheckStr = Replace(Str,"'","''", 1, -1, 1) 
  341. End Function
  342. Function HTMLEncode(reString) '过滤转换HTML代码
  343.     Dim Str:Str=reString
  344.     If Not IsNull(Str) Then
  345.         Str = UnCheckStr(Str)
  346.         Str = Replace(Str, "&""&")
  347.         Str = Replace(Str, ">"">")
  348.         Str = Replace(Str, "<""<")
  349.         Str = Replace(Str, CHR(32), " ")
  350.         Str = Replace(Str, CHR(9), "    ")
  351.         Str = Replace(Str, CHR(9), "    ")
  352.         Str = Replace(Str, CHR(34),""")
  353.         Str = Replace(Str, CHR(39),"'")
  354.         Str = Replace(Str, CHR(13), "")
  355.         Str = Replace(Str, CHR(10), "<br>")
  356.         HTMLEncode = Str
  357.     End If
  358. End Function
  359. Function DateToStr(DateTime,ShowType)  '日期转换函数
  360.     Dim DateMonth,DateDay,DateHour,DateMinute
  361.     DateMonth=Month(DateTime)
  362.     DateDay=Day(DateTime)
  363.     DateHour=Hour(DateTime)
  364.     DateMinute=Minute(DateTime)
  365.     If Len(DateMonth)<2 Then DateMonth="0"
  366.     If Len(DateDay)<2 Then DateDay="0"
  367.     Select Case ShowType
  368.     Case "Y-m-d"  
  369.         DateToStr=Year(DateTime)"-"&DateMonth"-"
  370.     Case "Y-m-d H:I A"
  371.         Dim DateAMPM
  372.         If DateHour>12 Then 
  373.             DateHour=DateHour-12
  374.             DateAMPM="PM"
  375.         Else
  376.             DateHour=DateHour
  377.             DateAMPM="AM"
  378.         End If
  379.         If Len(DateHour)<2 Then DateHour="0"&DateHour    
  380.         If Len(DateMinute)<2 Then DateMinute="0"
  381.         DateToStr=Year(DateTime)"-"&DateMonth"-"&DateDay" "&DateHour":"&DateMinute" "
  382.     Case "Y-m-d H:I:S"
  383.         Dim DateSecond
  384.         DateSecond=Second(DateTime)
  385.         If Len(DateHour)<2 Then DateHour="0"&DateHour    
  386.         If Len(DateMinute)<2 Then DateMinute="0"
  387.         If Len(DateSecond)<2 Then DateSecond="0"
  388.         DateToStr=Year(DateTime)"-"&DateMonth"-"&DateDay" "&DateHour":"&DateMinute":"
  389.     Case "YmdHIS"
  390.         DateSecond=Second(DateTime)
  391.         If Len(DateHour)<2 Then DateHour="0"&DateHour    
  392.         If Len(DateMinute)<2 Then DateMinute="0"
  393.         If Len(DateSecond)<2 Then DateSecond="0"
  394.         DateToStr=Year(DateTime)&DateMonth&DateDay&DateHour&DateMinute&DateSecond    
  395.     Case "ym"
  396.         DateToStr=Right(Year(DateTime),2)
  397.     Case "d"
  398.         DateToStr=DateDay
  399.     Case Else
  400.         If Len(DateHour)<2 Then DateHour="0"
  401.         If Len(DateMinute)<2 Then DateMinute="0"
  402.         DateToStr=Year(DateTime)"-"&DateMonth"-"&DateDay" "&DateHour":"
  403.     End Select
  404. End Function
  405. Function Date2Chinese(iDate) '获得ASP的中文日期字符串
  406.     Dim num(10)
  407.     Dim iYear
  408.     Dim iMonth
  409.     Dim iDay
  410.     num(0) = "〇"
  411.     num(1) = "一"
  412.     num(2) = "二"
  413.     num(3) = "三"
  414.     num(4) = "四"
  415.     num(5) = "五"
  416.     num(6) = "六"
  417.     num(7) = "七"
  418.     num(8) = "八"
  419.     num(9) = "九"
  420.     iYear = Year(iDate)
  421.     iMonth = Month(iDate)
  422.     iDay = Day(iDate)
  423.     Date2Chinese = num(iYear / 1000) + num((iYear / 100) Mod 10) + num((iYear/ 10) Mod 10) + num(iYear Mod 10) + "年"
  424.     If iMonth >= 10 Then
  425.         If iMonth = 10 Then
  426.             Date2Chinese = Date2Chinese + "十" + "月"
  427.         Else
  428.             Date2Chinese = Date2Chinese + "十" + num(iMonth Mod 10) + "月"
  429.         End If
  430.     Else
  431.         Date2Chinese = Date2Chinese + num(iMonth Mod 10) + "月"
  432.     End If
  433.     If iDay >= 10 Then
  434.         If iDay = 10 Then
  435.             Date2Chinese = Date2Chinese +"十" + "日"
  436.         ElseIf iDay = 20 or iDay = 30 Then
  437.             Date2Chinese = Date2Chinese + num(iDay / 10) + "十" + "日"
  438.         ElseIf iDay > 20 Then
  439.             Date2Chinese = Date2Chinese + num(iDay / 10) + "十" +num(iDay Mod 10) + "日"
  440.         Else
  441.            Date2Chinese = Date2Chinese + "十" + num(iDay Mod 10) + "日"
  442.         End If
  443.     Else
  444.         Date2Chinese = Date2Chinese + num(iDay Mod 10) + "日"
  445.     End If
  446. End Function
  447. Function lenStr(str)'计算字符串长度(字节)
  448.     dim l,t,c
  449.     dim i
  450.     l=len(str)
  451.     t=0
  452. for i=1 to l
  453.     c=asc(mid(str,i,1))
  454.     if c<0 then c=c+65536
  455.     if c<255 then t=t+1
  456.     if c>255 then t=t+2
  457. next
  458.    lenstr=t
  459. End Function
  460. Function CreateArr(str) '生成二维数组 数据如:"1,a1,b1,c1,d1|2,a2,b2,c2,d2|5,a3,b3,c3,d3|8,a4,b4,c4,d4"
  461. dim arr()
  462. str=split(str,"|")
  463. for i=0 to UBound(str)
  464.     arrstr=split(str(i),",")
  465.     for j=0 to Ubound(arrstr)
  466.         ReDim Preserve arr(UBound(str),UBound(arrstr))
  467.         arr(i,j)=arrstr(j)
  468.     next
  469. next
  470. CreateArr=arr
  471. End Function
  472. '###############################################################
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值