xss公开教学[第五课]搜索框的利用
我们今天学习数据库
ADO的概念
ADO(ActiveX Data Object)是一种可以提供Web页面于数据库结合的最新的数据库技术
ADO对象模型包括7个对象和3个集合。
Connection(连接对象):用来建立数据源和ADO程序之间的连接。
Command(命令对象):用来嵌入SQL查询,包括对存储过程的调用。
Parameter(参数对象):用来传递参数给SQL查询,在使用存储过程时用到。
Recordset(记录集对象):用来浏览及操作实际数据库内的数据,者是十分重要的一个对象。
Field(字段对象): 用来取得一个记录集(Recordset)内不同字段的值。
Error(错误对象):用来返回一个数据库连接上的错误。
Property(属性对象):指明一个ADO对象的属性。
.这里只将我们常用的,其他的我们就不讲了
Connection
Asp使用ADO对各种数据源进行各种操作,其中,Connection对象是必不可少的,
Connection对象代表了打开的,与数据源的连接,该对象与数据库进行的唯一会话。
常用的方法
Open:建立一个与数据源的连接对象。
Close:关闭与数据库的连接,并且释放与连接有关的系统资源。
Execute:执行SQL命令或存储过程,以实现与数据库的通讯。
创建数据库连接
创建Connection 对象实例
与使用其他ASP组件一样,在使用ADO Connection对象前,应使用Server.CreateObject方法创建该对象的实例语法格式:
<%
Dim cnn
Set cnn=Server.CreateObject(“ADODB.Connection”)
%>
打开数据库连接
使用Connection对象的Open方法可以建立到数据库的物理连接
关闭数据库
关闭与数据库的连接,并且释放与连接有关的系统资源。其语法格式为:
Connection。Close
Recordset对象
利用Recordset对象的属性和方法可以完全操作一个数据库,
我们有必要了解一下常用的属性以及方法
Bof
判断记录指针是否到了第一条记录之前
Eof
判断记录指针是否到了最后一条记录之后
PageSize
表示 RecordSet对象中当前记录的顺序位置是第几行记录
PageCount
表示当前记录的页号
使用SELECT实现查询与统计
SELECT主要用于查询数据,也可以用来向局部变量赋值或者调用一个函数。
常用的SELECT的格式为:
SELECT 要查询的那些列名,列名之间用逗号间隔
FORM; 要查询的那些列名来自哪些表,表名之间用逗号间隔。
WHERE:要查询的条件
LIKE的使用
查询给定的有些字符相匹配的那些数据行,这些字符只是列值的一部分。这样的查询不要求于列值完全相同,将其称为模糊查询。
代码分析
我拿到了其中关键的代码
<form name="form1" method="get" action="search.asp">
<tr bgcolor=#ffffff>
<td height=22 align="center">
<input name="keyword">
<select name="lei">
<option value="0">软件名称</option>
<option value="1">软件简介</option>
</select>
<input type="submit" value=" 搜索 ">
</td>
</tr></form>
从上面可以看出把搜索的字符串送到search.asp
是以get方式提交的
我们就顺便到search.asp中去看看
片段一
dim rs,sql,keyword
keyword=trim(request("keyword"))
keyword=replace(keyword,"'","''")
if keyword = "" then
response.write"<center>搜索关键字不能为空!<a href=""javascript:history.go(-1)"">返回重查</a></center>"
response.end
end if
片段二
set rs=server.CreateObject("ADODB.RecordSet")
if int(lei)=0 then
sql="select * from learning,type where learning.typeid=type.typeid and title Like '%"& keyword &"%' order by dateandtime desc"
片段三
<table width="98%" align="center">
<tr>
<td>您查询的关键字为: <font color="#FF0000"><%=keyword%></font> </td>
<td align="right">共找到 <%=TotalCount%> 个软件 分为 <%=TotalPages%>
页 每页 <%=PAGESIZE%> 个软件</td>
</tr>
</table>
好了我们现在来说说思路:
当我们输入字符串的时候,程序用request来接受,只是过滤了空格以及引号,这些并不影响我们的跨站代码
接着程序吧我们输入的字符串放入数据库进行模糊查找
在给我们的查找字符串输出来
这样就实现了跨站