存档
当PHP.ini设置register_globals = On是,通过GET提交的数据可以直接使用表单名调用GET提交的数据。asp就不可以,我想到了asp的execute,也谢了一个脚本,还能过滤SQL注入字符串
<%
Dim myRegExp
set myRegExp=New RegExp
myRegExp.Pattern = "[^a-z0-9_]"
myRegExp.Global=True
for each Req in Request.Querystring
ReqV=Request.Querystring(Req)
if trim(ReqV)<>"" then
ReqV=replace(ReqV,"""","""""")
Req=myRegExp.Replace(Req,"")
Execute(Req&"="""&ReqV&"""")
end if
next
response.write a
%>
调用很简单。比如GET提交/get_Test.asp?a=111&b=222
则直接可以使用Response.write a,输出结果为111。简单吧~
再次感谢小秦(Q48080163)提出的bug
本文只提供思路,程序代码在此就不方便发布了~
第一:每个程序代码都不样
第二:不能随便公布客户的代码~呵呵
如有类似需求,可联系QQ:1301425789
可以看到现在首页的执行时间已经是1.8秒以上了,如果访问量太大,有可能就会导致耗资源,加入缓存是最好的解决方法。我设置的数据库表如下:
Cache_id
Cache_key
Cache_Content
Cache_LastCreate
自动编号
缓存关键字
缓存内容
最后生成日期
设计缓存的时候,主要需要考虑以下两点:
1) 不经常改动部分缓存数据同步
保持缓存同步有两种方法:设置缓存刷新频率、实时更新
设置缓存刷新频率
<%
缓存关键字:http://www.aaa.com/cp_view.asp?ID=68727
更 新 频率:1天
到 期 日期:最后生成日期+更 新 频率
Sql:select Cache_Content from CacheTable where Cache_key=缓存关键字 and Cache_LaseCreate<到期日期
没有找到记录:{
将页面数据保存到数据库
select * from CacheTable where Cache_key=缓存关键字
没有记录{插入记录}有记录{更新生成日期,并保存记录}
}找到记录:{
直接输出
}
%>
实时更新
这种有点麻烦,但是是一个比较好的方案。唯一的缺点是保存的时候需要多次操作数据库。以 市场页为例:
给市场数据库添加一个最后更新日期
数据添加页面:凡是该分类下的所有页面更新,均更新最后更新日期。
最终显示页面:多表查询,如果当前市场最后更新日期<缓存日期,并且有缓存则直接输出缓存,否则创建缓存并输出。
2) (经常改动不废)非静态的部分
这个比较简单,主要是会员登录,ASP脚本判断状态,输出JS更改页面的动态部分
因为工作需要,经常需要操作数据转换的工作。比如:从dz导入到pw,或从新云导入到5ucms,把数据从这个表导入到那个表。操作的多了,认为自己对数据库转化还是有一定的研究的,今天写出了,希望能对做同样工作的朋友一些帮助或者启发。
一般我完成数据库转换的脚本选择vbscript。原因吗,简单当然是一个很重要的因素,更重要的常用的数据库(如:MySQL)都有ADO的驱动。
数据库转化第一步,先要确定目的数据库的类型和当前数据库的类型。如果access数据库转换成mysql数据库。则需要先去下载MySQL ADO的驱动。
第二步,连接好数据库了,现在要分析数据库对应的字段之间的关系。如果能把需要操作的数据表的字段导出来应该能快很多。既然选择了vbscript脚本,我们就让他来帮忙。
‘Auth:猫七(Miaoqiyuan.cn)
‘outTableCol(表名)
‘Desc:返回某表的所有字段
function outTableCol(tbl)
tablesCol=""
set rs=createobject("ADODB.Recordset")
rs.open "select top 1 * from "&tbl,conn,1,1
for i=0 to rs.fields.count-1
tablesCol=tablesCol & rs.fields(i).name & ","
next
outTableCol=tablesCol
rs.close
set rs=nothing
end function
直接使用Wscript.echo outTableCol(表名),哈哈,表明全输出来了(最好将vbscript的脚本宿主改成cscript)。
第三步,字段的对应关系分析好了,自然要进入实质性的过程了-插入数据。
insert into 语句?No,我们用ADODB.Recordset。使用MySQL数据库的使用ADODB也可以使用哦,这也是我使用vbscript的另一个原因,vbscript对ado的兼容性不用我说了吧。。。确定了用ADODB.Recordset,写这种Rs(..)=Rs(..)的方式也是挺麻烦的,现在我们再次请vbscript出山。
‘Auth:猫七(Miaoqiyuan.cn)
‘CreateRsStr(字段名,用’,'分隔,两个字段间的转换用=>)
‘例如:
‘CreateRsStr "d_id,d_dme" #Rs1("d_id")=Rs2("d_id")
‘CreateRsStr "d_id=>c_id" [...]
1.下载地址
http://www.miaoqiyuan.cn/products/webzip.rar
2.程序源码
http://www.miaoqiyuan.cn/p/webzip-code
3.使用说明
http://www.miaoqiyuan.cn/p/webzip-demo
4.未解决问题
ADODB.Stream读取asp文件时,如果文件结尾为%>,则%后的>会被忽略掉,现在本人暂未解决这个问题,用户可以在以%>结尾的asp文件,请在后边添加一个空格或换行符,恢复后程序即可正常使用。
1.下载&安装
到http://www.miaoqiyuan.cn/products/webzip.rar,保存为webzip.rar以供备用。
2.压缩
将webzip.rar中的webzip.asp、webzip.asp.webzip解压到要压缩的目录。在浏览器中访问[hostname]/[保存路径]/webzip.asp打开本工具,点击压缩,稍等片刻,即可打包完毕。
3.上传
将webzip.asp、webzip.asp.webzip通过FTP或在线文件管理系统上传到您的站点目录。
4.解压
在浏览器中访问[hostname]/[保存路径]/webzip.asp,选择解压。稍等片刻,您的整个站点将会在服务服务器上解压完毕。
至此,您的整个站点即可正常使用了。
[Debug]
1.ADODB.Stream读取asp文件时,如果文件结尾为%>,则%后的>会被忽略掉,现在本人暂未解决这个问题,用户可以在以%>结尾的asp文件,请在后边添加一个空格或换行符,恢复后程序即可正常使用。
2.如果您在使用中发现出现某些问题,可直接致邮:mqycn@126.com
猫七原创ASP压缩解压系统-WEBZip,原理即遍历当前目录的所有文件和文件夹,将结果保存到MDB数据库中。现在已经实现了ASP无需任何插件,仅用Access数据库。
全部代码如下:
<%
Server.ScriptTimeout=9999
Response.Buffer=false
Dim WEBZip_Path,WEBZip_Date,WEBZip_CMD,WEBZip_File
Dim WEBZip_FSO,WebZip_Conn,WEBZip_Rs,WEBZip_ADOStrem
‘压缩相关
‘================================================================
Function findFiles(p)
savePath(p)
for each s in p.subfolders
findFiles(s)
next
for each f in p.files
saveFile(f)
next
End Function
Function savePath(p)
If trim(replace(p,WEBZip_Path,""))="" Then Exit Function
RunSqlOne("insert into [p]([p_na],[p_pa],[p_cn])values(‘"&p.name&"’,'"&replace(p,WEBZip_Path,"")&"’,"&p.subfolders.count&")")
echo "找到路径:"&p
End Function
Function saveFile(f)
If instr(f,WEBZip_File)>0 Then Exit Function
RunSqlOne("insert into [f]([f_na],[f_pa],[f_sz])values(‘"&f.name&"’,'"&replace(f,WEBZip_Path,"")&"’,"&f.size&")")
SaveFileContent(replace(f,WEBZip_Path,""))
echo "压缩文件:"&f
End Function
‘写入文件内容
Function SaveFileContent(f)
fl=WEBZip_FSO.getfile(Server.Mappath(f))
WEBZip_Rs.Open "select * from [f] where [f_pa]=’"&f&"’",WEBZip_Conn,3,2
With WEBZip_ADOStrem
.Type = 1
.Open
.LoadFromFile fl
WEBZip_Rs("f_co") = .Read
.Close
End [...]