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%> 个软件&nbsp;分为 <%=TotalPages%> 

              页&nbsp;每页 <%=PAGESIZE%> 个软件</td>

          </tr>

        </table>

 

好了我们现在来说说思路:

当我们输入字符串的时候,程序用request来接受,只是过滤了空格以及引号,这些并不影响我们的跨站代码

接着程序吧我们输入的字符串放入数据库进行模糊查找

在给我们的查找字符串输出来

这样就实现了跨站

 


©ID3369036 | Powered by LOFTER