<% Dim Tags, Count, Position, Slide, Size, QueryString, refer Dim TimeStamp, Current_Site, Current_Root, From_Site_Temp, From_Site Dim IfDraft, NoCache, Force_Update, ValidAmount Dim AryFitSize, TagTEMP Tags = SafeRequest(3, "tags", 1, "", 0) Count = SafeRequest(3, "count", 0, 0, 0) Position = SafeRequest(3, "position", 1, "", 0) Slide = SafeRequest(3, "slide", 0, 0, 0) IfDraft = SafeRequest(3, "draft", 0, 0, 0) NoCache = SafeRequest(3, "nocache", 0, 0, 0) Force_Update = SafeRequest(3, "update", 0, 0, 0) If Not InStr(Tags, "|") > 0 Then Call JsError("") End If If Count = 0 Then Count = 5 End If If Len(Position) = 0 Then Position = "footer" End If If Slide > 1 Then Slide = 1 End If If IfDraft > 1 Then IfDraft = 1 End If If NoCache > 1 Then NoCache = 1 End If If Force_Update > 1 Then Force_Update = 1 End If '得到请求的size TagTEMP = Split(Tags, "|") Size = TagTEMP(UBound(TagTEMP)) '验证size AryFitSize = Array("1x1", "2x1", "2x0.5", "3x1") If Not InArray(AryFitSize, Size) Then Call JsError("") End If '得到请求的参数 QueryString = "tag"& Tags &"&count"& Count &"&position"& Position &"&slide"& Slide '当前时间戳 TimeStamp = DatetoNum(Now()) '来源站点缩写 refer = Request.ServerVariables("HTTP_REFERER") If Len(refer) > 0 Then If Not InStr(refer, "panasonic.cn") > 0 And Not InStr(refer, "01media.cn") > 0 And Not InStr(refer, "61.129.85.4") > 0 Then Call JsError("invalid from site") End If From_Site_Temp = Split(refer, "//")(1) If InStr(From_Site_Temp, ".") > 0 Then From_Site = Split(From_Site_Temp, ".")(0) Else From_Site = From_Site_Temp End If End If '当前站点地址 Current_Site = Request.ServerVariables("SCRIPT_NAME") Current_Root = "http://"& Request.ServerVariables("SERVER_NAME") & Left(Current_Site, InstrRev(Current_Site, "/") - 1) '如果显示滑动图片则禁止缓存 If Slide = 1 Then Response.Buffer = True Response.ExpiresAbsolute = Date() - 365 Response.Expires = 0 Response.CacheControl = "no-cache" Response.AddHeader "Pragma", "No-Cache" End If If Len(From_Site) > 0 Then Response.ContentType = "text/javascript" Else NoCache = 1 End If '输出图片 If NoCache = 1 Or IfDraft = 1 Then Response.Write Replace(Get_Icon_From_Database(), "{FROM_SITE}", From_Site) Else Response.Write Replace(Get_Icon_From_Cache(), "{FROM_SITE}", From_Site) End If Call closeDatabase() 'If ValidAmount < Count Then ' Dim EmailTitle, EmailBody ' EmailTitle = "banner数量不足" ' EmailBody = EmailBody &"banner数量不足,请求数量为"& Count &"个,实际数量为"& ValidAmount &"个,请求参数如下:"& vbCrLf ' EmailBody = EmailBody & Request.ServerVariables("QUERY_STRING") 'Call SendMail(EmailTitle, EmailBody, "linyong@01cosmos.com") 'End If '======================================================== '从缓存中获取图片列表 '======================================================== Function Get_Icon_From_Cache() Dim CacheInfo Dim blnUpdateCache, strContent CacheInfo = Query("SELECT val, lastupdate FROM "& TablePre &"caches WHERE querystring = '"& QueryString &"'") If IsArray(CacheInfo) Then If DateDiff("d", CacheInfo(1, 0), Now()) > 1 Or Force_Update = 1 Then '如果更新时间超过1天或者强制更新缓存则重新读取数据 strContent = Get_Icon_From_Database() Execute("DELETE FROM "& TablePre &"caches WHERE querystring = '"& QueryString &"'") blnUpdateCache = True Else '否则直接输出缓存 strContent = CacheInfo(0, 0) End If Else '缓存中没有找到记录则直接输出 strContent = Get_Icon_From_Database() blnUpdateCache = True End If If blnUpdateCache And Len(From_Site) > 0 Then Execute("INSERT INTO "& TablePre &"caches (querystring, val) VALUES ('"& QueryString &"', '"& Replace(strContent, "'", "''") &"')") End If Get_Icon_From_Cache = strContent strContent = Empty End Function '======================================================== '重新读取Icon列表 '======================================================== Function Get_Icon_From_Database() Dim Box_Width, Box_Height, RandClass Dim IconListArray, InTagListAray, Ary_NotInTags, Ary_Character Dim strContent, strSQL, Sql_InTags, Sql_Where_InTags, Sql_NoTag '根据图片得到div容器的宽高 Box_Width = Split(Size, "x")(0) Box_Height = Split(Size, "x")(1) If Not IsNumeric(Box_Width) Or Not IsNumeric(Box_Height) Then Box_Width = 0 Box_Height = 0 End If Box_Width = Box_Width * 110 + (Box_Width - 1) * 10 Box_Height = Box_Height * 110 + (Box_Height - 1) * 10 '得到tag数组 ReDim Preserve TagTemp(UBound(TagTEMP) - 1) Tags = Join(TagTEMP, "|") '得到需要的tag For i = 0 To UBound(TagTEMP) If Left(TagTEMP(i), 1) <> "!" Then Sql_InTags = Sql_InTags &"'"& TagTEMP(i) &"', " Else Sql_NoTag = Sql_NoTag &"'"& Right(TagTEMP(i), Len(TagTEMP(i)) - 1) &"', " End If Next If Len(Sql_InTags) > 0 Then If Right(Sql_InTags, 2) = ", " Then Sql_InTags = Left(Sql_InTags, Len(Sql_InTags) - 2) End If Ary_Character = Split("a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z", ",") InTagListAray = Query("SELECT tagid FROM "& TablePre &"tags WHERE tag IN("& Sql_InTags &")") If IsArray(InTagListAray) Then Sql_InTags = "SELECT iconid FROM (SELECT iconid, " For i = 0 To UBound(InTagListAray, 2) Sql_InTags = Sql_InTags & Ary_Character(i) &" = ISNULL(SUM(CASE tagid WHEN "& InTagListAray(0, i) &" THEN 1 END), 0)" If i <> UBound(InTagListAray, 2) Then Sql_InTags = Sql_InTags &", " End If Sql_Where_InTags = Sql_Where_InTags&" AND "& Ary_Character(i) &" = 1" Next Sql_InTags = Sql_InTags &" FROM "& TablePre &"icon_tags GROUP BY iconid) AS t WHERE 1 = 1"& Sql_Where_InTags Else Sql_InTags = "" End If End If '得到不需要读取的tag If Len(Sql_NoTag) > 0 Then If Right(Sql_NoTag, 2) = ", " Then Sql_NoTag = Left(Sql_NoTag, Len(Sql_NoTag) - 2) End If Sql_NoTag = " AND i.iconid NOT IN(SELECT iconid FROM "& TablePre &"icon_tags WHERE tagid IN(SELECT tagid FROM "& TablePre &"tags WHERE tag IN("& Sql_NoTag &")))" End If '读取图片 IconListArray = Query("SELECT TOP "& Count &" i.savepath, i.size, b.siteid, b.url, s.name, ISNULL(d.displayorder, 0) AS displayorder FROM "& TablePre &"icons i INNER JOIN "& TablePre &"bannerlist b ON i.bannerid = b.bannerid INNER JOIN "& TablePre &"sites s ON b.siteid = s.siteid LEFT JOIN (SELECT iconid, displayorder FROM "& TablePre &"displayorder WHERE tags = '"& Tags &"') d ON i.iconid = d.iconid WHERE i.size = '"& Size &"' AND b.starttime <= "& TimeStamp &" AND b.endtime >= "& TimeStamp & IIF(IfDraft = 0, " AND i.ifpublish = 1", "") & IIF(Len(Sql_InTags) > 0, " AND i.iconid IN("& Sql_InTags &")", "") & IIF(Len(Sql_NoTag) > 0, Sql_NoTag, "") &" ORDER BY displayorder ASC, i.iconid DESC") If IsArray(IconListArray) Then If Slide = 1 Then '滑动图片的输出 '生成a标签id的随机字符串 RandClass = Rand(10) '滑动a标签的容器 strContent = strContent &"document.write('');" '调用远程js的function strContent = strContent &"var MiniSite=new Object();MiniSite.Browser={ie:/msie/.test(window.navigator.userAgent.toLowerCase()),moz:/gecko/.test(window.navigator.userAgent.toLowerCase()),opera:/opera/.test(window.navigator.userAgent.toLowerCase())};MiniSite.JsLoader={load:function(sUrl,fCallback){var _script=document.createElement('script');_script.setAttribute('type','text/javascript');_script.setAttribute('src',sUrl);document.getElementsByTagName('head')[0].appendChild(_script);if(MiniSite.Browser.ie){_script.onreadystatechange=function(){if(this.readyState=='loaded'||this.readyState=='complete'){fCallback()}}}else if(MiniSite.Browser.moz){_script.onload=function(){fCallback()}}else{fCallback()}}};" '加载jquery滑动插件 strContent = strContent &"MiniSite.JsLoader.load('"& Current_Root &"/js/portal-1.1.2-min.js', function(){" '定义滑动图片数组 strContent = strContent &"$('#slide_"& RandClass &"').portal("& Box_Width + 10 &", "& Box_Height + 10 &", [" For i = 0 To UBound(IconListArray, 2) 'strContent = strContent &"{src:"""& Current_Root &"/attachments/"& IconListArray(0, i) &""", url:"""& IconListArray(3, i) & IIF(InStr(IconListArray(3, i), "panasonic.cn") > 0 And Len(From_Site) > 0, IIF(InStr(IconListArray(3, i), "?") > 0, "&", "?") &"utm_source="& IconListArray(4, i) &"<{FROM_SITE}&utm_medium=GroupSites&utm_campaign="& IconListArray(4, i) &"<{FROM_SITE}-home-footer-graphic-"& IconListArray(1, i), "") &"""}" strContent = strContent &"{src:"""& Current_Root &"/attachments/"& IconListArray(0, i) &""", url:"""& IconListArray(3, i) & """}" If i <> UBound(IconListArray, 2) Then strContent = strContent &", " End If Next strContent = strContent &"], 'vertical')});" Else '普通图片的输出 strContent = strContent &"document.write('" For i = 0 To UBound(IconListArray, 2) 'strContent = strContent &" 0 And Len(From_Site) > 0, IIF(InStr(IconListArray(3, i), "?") > 0, "&", "?") &"utm_source="& IconListArray(4, i) &"<{FROM_SITE}&utm_medium=GroupSites&utm_campaign="& IconListArray(4, i) &"<{FROM_SITE}-home-footer-graphic-"& IconListArray(1, i), "") &""" target=""_blank"">" strContent = strContent &"" Next strContent = strContent &"');" End If '实际图片的数量 ValidAmount = UBound(IconListArray, 2) Else ValidAmount = 0 End If Get_Icon_From_Database = strContent strContent = Empty End Function '======================================================== 'js输出错误信息 '======================================================== Sub JsError(Message) Response.Write "document.write('"& Message &"');" Response.End() End Sub %>