+ -
当前位置:首页 → 问答吧 → 请教asp小偷问题

请教asp小偷问题

时间:2011-07-25

来源:互联网

有一段代码如下:
<%
function getHTTPPage(url)
dim Http
set Http=server.createobject("MSXML2.XMLHTTP")
Http.open "GET",url,false
Http.send()
if Http.readystate<>4 then 
exit function
end if
getHTTPPage=bytesToBSTR(Http.responseBody,"utf-8")
set http=nothing
if err.number<>0 then err.Clear 
end function
Function BytesToBstr(body,Cset)
dim objstream
set objstream = Server.CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText 
objstream.Close
set objstream = nothing
End Function
Function GetBody(ConStr,StartStr,OverStr)
  Dim ConStrTemp
  Dim Start,Over
  ConStrTemp=Lcase(ConStr)
  StartStr=Lcase(StartStr)
  OverStr=Lcase(OverStr)
  Start = InStr(1, ConStrTemp, StartStr, vbBinaryCompare)
  Over=InStr(Start,ConStrTemp,OverStr,vbBinaryCompare)
  GetBody=Mid(ConStr,Start,Over-Start)
End Function
Dim Url,Html,MM
if request("id")="" then
%>
<%
else
Url="http://www.xxx.com/robot/robot.php?op=express&data=yto%20"&request("id")
Html = getHTTPPage(Url)
html=GetBody(html,"<table>","</table>")
response.write html
end if
%>
运行这段代码的时候,request("id")是个偷取远程网站的变量,当这个变量正确的时候可以截取到正确信息(信息截取为<html>...</html>之间的内容),但是当变量错误的时候截取信息里不包含<html>...</html>,而是一行文字(比如您查询的单号不存在,里面没有html代码),问代码该如何写才可以实现request("id")这个单号正确的时候可以截取到<html>...</html>之间的内容,而request("id")这个单号错误的时候也就是无法截取信息的时候提示一句:对不起,单号不存在呢?谢谢各位。

作者: zwx1982000   发布时间: 2011-07-25

这样?
Dim Url,Html,MM
if request("id")="" then
%>
对不起,单号不存在
<%
else
Url="http://www.xxx.com/robot/robot.php?op=express&data=yto%20"&request("id")
Html = getHTTPPage(Url)
html=GetBody(html,"<table>","</table>")
response.write html
end if
%>

作者: hongmei85   发布时间: 2011-07-25

看来我表达的还不是很明白呵呵,比如我输入了一个正确的查询单号后返回的代码是:
  <html>
  <tr>
  <th>时间</th>
  <th>跟踪记录</th>
  </tr>
  </html>
这样我用html=GetBody(html,"<table>","</table>")这一句代码就可以截取到正确的信息。
如果我输入了一个错误的单号后返回的结果是:对不起,您查询的单号不存在。(其中没有html信息)这样的话我用html=GetBody(html,"<table>","</table>")这一句代码就截取不到信息,提示:无效的过程调用或参数: 'InStr' 我的意思是当截取不到信息的时候能不让他出现无效的过程调用或参数: 'InStr'而是提示一句您查询的单号不存在吗?

作者: zwx1982000   发布时间: 2011-07-25

上边说错了不好意思,应该是html=GetBody(html,"<table>","</table>")

作者: zwx1982000   发布时间: 2011-07-25

上边说错了不好意思,应该是html=GetBody(html,"<html>","</html>") 

作者: zwx1982000   发布时间: 2011-07-25

Html = getHTTPPage(Url)
应该是在这一行后面用instr()判断返回的内容。

作者: tcwsyt   发布时间: 2011-07-25

谢谢楼上的,可具体该怎么写呢?

作者: zwx1982000   发布时间: 2011-07-25

热门下载

更多