| ASP实现防盗链的原理:根据浏览者访问时间及下载资源产生临时文件供下载,下载后自动删除临时文件,从而防止盗链。
 文件目录结构:建立一个专门存放下载资源的目录,如:DOWN,此目录最好放在网站根目录之外,在引用时用绝对地址来引用,当然也可以放在根目录之内。网站根目录中存放网页文件,并且建立一个TEMP目录,用于存放临时文件。
 
 数据库文件:Soft.mdb其中Dsoft表存放有关下载资源文件的相关信息。所有字段都可以设为文本型,DZYID为资源的ID,DNAME为资源名称,DSTYL为资源类型(如:soft表示为下载资源,view可为在线观看的影音资源),DFILE为文件名称。
 
 网页文件:其中Global.asa必须放在网站根目录下,浏览者启动任何一个页面都会先调用此文件,以产生一个session,其名称为getfile,内容为按时间产生临时文件名,global.asa具体内容如下:
 
 <Script Language="Vbscript" runat=server>
 Function Zh(s1)'根据日期时间产生随机字符串
 zh=int(now*1000000)
 End Function
 Sub Session_Onstart
 Session.TimeOut=30
 Session("GetFile")=Zh(Now())
 End    Sub
 </Script>
 
 其中:Session.TimeOut=30定义了Session过期时间长度为30分钟。
 
 Conn.asp
 <%定义文件位置等
 jddz="E:\test\"    '网站根目录在服务器上的上一级目录的绝对地址
 bzwz= " http://soft.test.net " ' 网站域名地址
 db=Server.Mappath("SOFT.MDB") '定义数据库文件的位置
 Connstr = " Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & db & "; Persist Security Info=False;Jet OLEDB:Database Locking Mode=2;Jet OLEDB:Database Password=A"
 Set Conn=Server.CreateObject("ADODB.CONNECTION")
 Conn.Open Connstr
 %>
          Default.asp主文件<!-#INCLUDE file="conn.asp"->
 <%action=Request.Querystring("action")
 Select Case action
 Case    "dele"
 Call   Dele
 Case    "down"
 Call    Down
 Case   "view"
 Call   View
 Case   alse
 Call   Defa
 End   Slesct
 Function Zh(s1)'根据日期时间产生随机字符串
 zh= int(now*1000000)
 End   Function
 Sub   Defa()'下载文件显示页
 Reasponse.Write "不要尝试同时从本站下载多个文件<br>"
 Set   Rs=Server.CreateObjcet("Adodb.RecordSet")
 SQL="Select   * From Dsoft"
 Rs.Open SQL,Conn,3,2
 Do   While   Not   Rs.Eof
 Response.Write     "<a href='default.asp?id="&rs("Dzyid") & "&action=down'>"   & rs("Dname") & "</a></br>"
 Rs.Movenext
 Loop
 End Sub
 Sub Down   ( )'下载页,
 
 以下三句为防止从其他地址直接打开本页,如果检测到是盗链就转到错误页
 
 |