学习ASP一周的感受
本人为公司的IT工程师,在一家外企工作。本来以为外企对职责分的很清,事实上也并非如此,总之和网络电脑相关的一股脑儿都是你的事。所以理所当然的网页制作和维护也由我来做,因为虚拟主机只支持ASP,所以后台也只能用ASP来写。前几年在另一个公司的时候也是为了维护网站学了PHP,现在又要学ASP,不过还好,大凡这些语言都是相通的,在加上在大学里也想过写VB的课程,虽然早就忘得差不多了,但是有书的话还是很快能够上手。 好,废话少说,回到正题,谈谈一周来我探索用ASP来做后台的感受(一个招聘信息发布的后台) 首先,在此之前看了有一天的ASP语法方面的书,虽然不时有其它事情打扰,但是这并不影响,主要就是看ASP内置的一些对象啊方法之类的,如request.form,request.querystring,response.write 等等最常用的。当然要做后台少不了要用数据库,本机没有安装MSSQL,就用ACCESS好了。 1.与数据库的连接 在网上看了很多贴子,讲如何与数据库连接的脚本,其中大概有两类,一个就是用DSN,一个就是不用DSN,在本机测试的时候用DSN当然可以,但是一旦上传到虚拟主机,还要人家网管来设,那样也比较麻烦,干脆就不用DSN的那种。就是类似于这样的语句: <% dim conn dim connstr on error resume next connstr="DBQ="+server.mappath("data/data.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" set conn=server.createobject("ADODB.CONNECTION") conn.open connstr %> 其实其它的你看不明白也没有关系,只要知道如何改这里就好了server.mappath("data/data.mdb"),换言之如果你的数据库名不是data.mdb,也不在data文件夹下就作相应的更改,另外就是注意路径。如果你还在搞不清绝对路径和相对路径阶段,我觉得你还是多多打一下基础吧! 2.搞清了如何与数据库连接以后我们总不能每次在每个页面都这样写一次,那样效率太低了,所以ASP中有一个include file="*.asp" 这样的语句,意思就是在需要用到数据库的地方把它调用进来。 3.现在数据库也打开了,接下来我们如何操作呢?有一点SQL知识的人都应该清楚通常我们对数据库的操作无非就是查询(按条件或无条件)、添加、删除、修改操作。当然删除和修改通过情况下都会有一个WHERE子句,而一般情况下我想我们都是通过ID(自动编号)来进行WHERE条件的匹配。 这个时候只要随便在网上下一个什么新闻发布之类的源程序研读一下就学会了在ASP中是如何来执行这些操作的,无法就是写一条SQL语句,然后conn.execute(sql)这样的语句让其执行,执行的结果返回到rs。接下来我们就可以对RS的不同字段进行调用。比如说一个表里面有qty这样的字段,那么rs("qty")就可以返回这个字段下符合条件的值。 4.数据也取出来了,如果我们需要把它显示出来,那当然就离不开response.write 或者<%=变量名%>这样的语句了.当然你如果要显示出所有的值还得做个循环,做循环之前得先判断一下记录集的指针是否溢出,也就是通常我们会用这样的语句来判断 if rs.eof or rs.bof then “终止执行语句,回到原界面或者干什么” else 循环,至于如何循环,看一下语法就知道了,离不开loop,movenext之类的。 其中也涉及到如何把这样东东与html语言集成,我想多看看人家的代码你就清楚了。
上面大概说的是如何与数据库连接并进行操作和显示。 而动态网站无非就是与用户交互,怎么交互?不外乎让用户填写表单(Form)然后把表单内容送给后台服务器(POST或者GET),后台服务器根据情况执行后再把应该显示的通过HTML返回给用户。所以我接下来就简单说一下如何取用户表单数据,其实这更简单,就是通过request.form("表单域名")来取得,当然有时候我们为了把这些数据写入数据库可能会做些处理,比如说trim(request.form()),或者是server.htmlencode(requet.form()),再或其它的东东。此处无需多说。
最后讲一下session,我做好第一个后台经过调试后每一页都如我希望的那样打开并执行了觉得很有成就感,不过不一会儿我就发现有个漏洞,什么意思呢?一般后台我们都要做一个登录界面,登录后方可执行其它页面的操作,比如登陆成功后转到index.asp页面,可是我发现如果我在浏览器里直接输入index.asp一样的可以执行,也就是说绕过了登陆验证,这样一来是很可怕的。试想你的后台的路径和文件名要是让其它人得到的话人家根本就不需要破译你的密码一样的可以修改你的数据库。而我也突然之间明白为什么我以前得到人家的路径想登录的时候为什么会自动返回到登录界面,噢,原来如此啊!此时晃然大悟,因为人家使用了session,在每一个页面人家都会检查session,如果你没有通过登录界面进来,那么就没有session,当然通过语言判断session不对的话可以自动的重定向到登录界面。
以上仅为一点点小心得,我想对老鸟来说太小儿科,但是对于初学者来说或许应该有个启士,但愿如些! |