荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: nicq (NoName), 信区: Homepage
标  题: asp代码精华(五)
发信站: 荔园晨风BBS站 (Wed Apr 23 13:27:21 2003), 站内信件


ASP分页函数

Function ExportPageInfo(ByRef rs,curpage,i,LinkFile)
 Dim retval, j, pageNumber, BasePage

 retval = "第" & curpage & "页/总" & rs.pagecount & "页 "
 retval = retval & "本页" & i & "条/总" & rs.recordcount & "条 "

 If curpage = 1 Then
  retval = retval & "首页 前页 "
 Else
  retval = retval & "<a href='" & LinkFile & "page=1'>首页</a> <a href='" &
LinkFile & "page=" & cstr(curpage - 1) & "'>前页</a> "
 End If
 If  curpage = rs.pagecount Then
  retval = retval & "后页 末页"
 Else
  retval = retval & "<a href='" & LinkFile & "page=" & cstr(curpage + 1) & "'>后
页</a> <a href='" & LinkFile & "page=" & cstr(rs.pagecount) & "'>末页</a>"
 End if

 retval = retval & "<br/>"
 BasePage = (curpage \ 10) * 10
 If BasePage > 0 Then retval = retval & " <a href='" & LinkFile & "page=" &
(BasePage - 9) & "'>&lt;&lt;</a>"
 For j = 1 to 10
  pageNumber = BasePage + j
  If PageNumber > rs.pagecount Then Exit For
  If pageNumber = Cint(curpage) Then
   retval =  retval & " <font color='#FF0000'>" & pageNumber & "</font>"
  Else
   retval =  retval & " <a href='" & LinkFile & "page=" & pageNumber & "'>" &
pageNumber & "</a>"
  End If
 Next
 If rs.pagecount > BasePage Then retval = retval & " <a href='" & LinkFile &
"page=" & (BasePage + 11) & "'>&gt;&gt;</a>"

 ExportPageInfo = retval
End Function

应用

<%
adoPageRS.open "SELECT * FROM news ORDER BY addtime DESC", conn, 1, 1
if err.number <> 0 then
 response.write "数据库操作失败:"&err.description
 else
  if adoPageRS.eof and adoPageRS.bof then
   response.write "没有记录"
  else
%>
<div align="center">
  <center>
    <table width="100%" border="0" cellspacing="1" cellpadding="2">
      <tr class="big">
        <td width="60%">新 闻 标 题</td>
        <td width="25%" align="center">日期</td>
        <td width="15%" align="center">操  作</td>
      </tr>
      <%
adoPageRS.pagesize = 10
adoPageRS.absolutepage = curpage
for i = 0 to 9
%>
      <tr>
        <td><%= adoPageRS("title") %></td>
        <td align="center">
          <% = adoPageRS("addtime") %>
        </td>
        <td align="center"><a href='newsman.asp?action=edit&id=<%=
adoPageRS("id")%>'>编辑</a>
          <a href='javascript:confirmDel(<%= adoPageRS("id") %>)'>删除</a></td>
      </tr>
      <%
 adoPageRS.movenext
 if adoPageRS.eof then
  i = i + 1
  exit for
 End If
next
%>
      <tr align="center">
        <td colspan="3">
          <% = ExportPageInfo(adoPageRS, curpage, i, "Newsman.asp?") %>
        </td>
      </tr>
    </table>
  </center>
</div>

从ASP调用SQL中的图像:
如何处理ASP中的图象 在用ASP编程中,很多时侯要用到图象。对于单纯从数据库中处理一
个图象,
方法大家讲了很多,也不难, 可以看下面的代码: 这里假设你有个数据库名字叫:PUBS,
在数据
库中有一个叫:PUB_INFO的表,在表中有一个LOGO 的BLOB列。我们查出PUB_ID=0736的人的
相片。
FILE: SHOWIMG.ASP *************************************** < %@
LANGUAGE="VBSCRIPT" %>
 < % ’ Clear out the existing HTTP header information Response.Expires = 0
Response.Buffer
= TRUE Response.Clear ’ Change the HTTP header to reflect that an image is
being
passed. Response.ContentType = "image/gif" Set cn =
Server.CreateObject("ADODB.Connection") ’
 The following open line assumes you have set up a System DataSource ’ by the
name of
myDSN. cn.Open "DSN=myDSN;UID=sa;PWD=;DATABASE=pubs" Set rs =
cn.Execute("SELECT logo FROM
pub_info WHERE pub_id=’0736’") Response.BinaryWrite rs("logo") Response.End %>
 *************
**************************** 执行这个ASP文件就可以看到你存在数据库中的图象了。
但如果是同时处
理文字和图象就会有些困难了:-( 比如:一个企业的人员管理,后台数据库可以用SYBASE或
SQL SERVER等。
(我在这用SQL SERVER)当 你在企业内部需要用到BROWSE/SERVER方式,即用浏览器查看员
工的个人信息时
,就即要处理文字信息同时 还要用到关于图象的技巧。 问题在于你显示文字信息时HTML的
HEAD中的
CONTENT=“TEXT/HTML”,而显示图象则必须是 CONTENT=“IMAGE/GIF”或者是CONTENT=”
IMAGE/JPEG“。
因此你是无法只用一个ASP文件就把文字信息和 图象都处理完的,解决的办法是:用一个单
独的ASP文件
处理图象,然后在处理文字信息的ASP文件中调用 这个ASP文件。 在这给大家介绍一个我的
解决方法,
希望大家一起讨论: 环境:WINNT4.0 SQL SERVER IIS3.0 数据库名:RSDA 表名:
RSDA_TABLE 目的:
从RSDA_TABLE中查出ID=00001的人员的信息,包括姓名,年龄和照片 第一步:创建一个查
询表单
RSDA.HTM: ********************************** < html> < head> < /head> < body>
< form method="POST" action="SEARCH.ASP"> < p>请输入编号:< input type="text"
name="T1"
size="20"> < input type="submit" value="提交" name="B1"> < /form> < /body>
*************
********************** 第二步:建立SEARCH.ASP
*********************************** < html>
< head> < meta http-equiv="content-type" content="text/html;charset=gb2312"> <
title>查询
结果< /title> < /head> < body bgColor=Azure> < % session("RSDA_ID")
=Request.Form("T1") ’
这里我用了一个SESSION变量,是为了在处理图象的ASP文件中再次调用
temp_id=session("RSDA_ID")
< font size=4 color=OrangeRed> 查询结果:< /font> < %set
conntemp=server.createobject
("adodb.connection") conntemp.open "dsn=RSDA;uid=sa;pwd=SA" set
rstemp=conntemp.execute
("select * from RSDA_TABLE where rsda=’"&temp_id&"’") % > < % ’put headings
on the
table of field names nobody="对不起!在我们的数据库里没有您要找的资料!"%> ’判
断是否有
这个人 < %if rstemp.eof then % > < font size="5" color=OrangeRed> <
%Response.Write(nobody)% >
< /font> < %else% > < div align="center"> < center> < table border="1"
width="73%" height="399">
 < tr> < td width="21%" height="49" align="center">< p align="center">姓 名<
/td>
< td width="30%" height="49" align="center"> < font size=4 color=OrangeRed><
/font>
< /td> < /td> < tr> < p align="center">年 龄< /td> < td width="30%" height="47"
align="center"> < font size=4 color=OrangeRed>< %=rstemp(0)% >< /font>< /td> <
/tr>
 < tr> < td width="49%" height="146" rowspan="3" colspan="2"> < img
src="jpg.asp">
< /td> ’JPG.ASP就是我们将要建立的专门处理图象的ASP文件 < /tr> < /table> <
/center>
< /div> rstemp.close set rstemp=nothing conntemp.close set conntemp=nothing % >
< /BODY>
 < /HTML> *********************************** 第三步:建立处理图象的ASP文件。
(JPG.ASP)
*********************************** < % Response.Expires = 0 Response.Buffer =
TRUE
Response.Clear ’ Open database Set conntemp =
Server.CreateObject("ADODB.Connection")
conntemp.open "dsn=RSDA;uid=sa;pwd=SA" ’change http header Response.ContentType
 = "image/jpeg" ’ or "IMAGE/GIF" ’ Get picture TEMP_ID=session("RSDA_ID") Set
Rs =
conntemp.Execute("SELECT photo from RSDA_table where ID=’"&TEMP_ID&"’")
Response.BinaryWrite
 Rs("photo") Session.Abandon Response.End % >
********************************** 这里主要
就是用到了一个小技巧就是利用了一个SESSION变量来实现两次同条件查询。 大家如我上述
只需少量改动,
就可以实现一个页面既有文字又有图象了!


MD5不可逆加密算法的ASP实现实例(一)

此为国外转载函数,可将任意字符转换为md5 16为字符加密形式,而且为不可逆转换。
<%
Private Const BITS_TO_A_BYTE = 8
Private Const BYTES_TO_A_WORD = 4
Private Const BITS_TO_A_WORD = 32

Private m_lOnBits(30)
Private m_l2Power(30)

Private Function LShift(lValue, iShiftBits)
If iShiftBits = 0 Then
LShift = lValue
Exit Function
ElseIf iShiftBits = 31 Then
If lValue And 1 Then
LShift = &H80000000
Else
LShift = 0
End If
Exit Function
ElseIf iShiftBits < 0 Or iShiftBits > 31 Then
Err.Raise 6
End If

If (lValue And m_l2Power(31 - iShiftBits)) Then
LShift = ((lValue And m_lOnBits(31 - (iShiftBits + 1))) * m_l2Power(iShiftBits))
 Or &H80000000
Else
LShift = ((lValue And m_lOnBits(31 - iShiftBits)) * m_l2Power(iShiftBits))
End If
End Function

Private Function RShift(lValue, iShiftBits)
If iShiftBits = 0 Then
RShift = lValue
Exit Function
ElseIf iShiftBits = 31 Then
If lValue And &H80000000 Then
RShift = 1
Else
RShift = 0
End If
Exit Function
ElseIf iShiftBits < 0 Or iShiftBits > 31 Then
Err.Raise 6
End If

RShift = (lValue And &H7FFFFFFE) \ m_l2Power(iShiftBits)

If (lValue And &H80000000) Then
RShift = (RShift Or (&H40000000 \ m_l2Power(iShiftBits - 1)))
End If
End Function

Private Function RotateLeft(lValue, iShiftBits)
RotateLeft = LShift(lValue, iShiftBits) Or RShift(lValue, (32 - iShiftBits))
End Function

Private Function AddUnsigned(lX, lY)
Dim lX4
Dim lY4
Dim lX8
Dim lY8
Dim lResult

lX8 = lX And &H80000000
lY8 = lY And &H80000000
lX4 = lX And &H40000000
lY4 = lY And &H40000000

lResult = (lX And &H3FFFFFFF) + (lY And &H3FFFFFFF)

If lX4 And lY4 Then
lResult = lResult Xor &H80000000 Xor lX8 Xor lY8
ElseIf lX4 Or lY4 Then
If lResult And &H40000000 Then
lResult = lResult Xor &HC0000000 Xor lX8 Xor lY8
Else
lResult = lResult Xor &H40000000 Xor lX8 Xor lY8
End If
Else
lResult = lResult Xor lX8 Xor lY8
End If

AddUnsigned = lResult
End Function

Private Function md5_F(x, y, z)
md5_F = (x And y) Or ((Not x) And z)
End Function

Private Function md5_G(x, y, z)
md5_G = (x And z) Or (y And (Not z))
End Function

Private Function md5_H(x, y, z)
md5_H = (x Xor y Xor z)
End Function

Private Function md5_I(x, y, z)
md5_I = (y Xor (x Or (Not z)))
End Function

Private Sub md5_FF(a, b, c, d, x, s, ac)
a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_F(b, c, d), x), ac))
a = RotateLeft(a, s)
a = AddUnsigned(a, b)
End Sub

Private Sub md5_GG(a, b, c, d, x, s, ac)
a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_G(b, c, d), x), ac))
a = RotateLeft(a, s)
a = AddUnsigned(a, b)
End Sub

Private Sub md5_HH(a, b, c, d, x, s, ac)
a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_H(b, c, d), x), ac))
a = RotateLeft(a, s)
a = AddUnsigned(a, b)
End Sub

Private Sub md5_II(a, b, c, d, x, s, ac)
a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_I(b, c, d), x), ac))
a = RotateLeft(a, s)
a = AddUnsigned(a, b)
End Sub

Private Function ConvertToWordArray(sMessage)
Dim lMessageLength
Dim lNumberOfWords
Dim lWordArray()
Dim lBytePosition
Dim lByteCount
Dim lWordCount

Const MODULUS_BITS = 512
Const CONGRUENT_BITS = 448

lMessageLength = Len(sMessage)

lNumberOfWords = (((lMessageLength + ((MODULUS_BITS - CONGRUENT_BITS) \
BITS_TO_A_BYTE)) \ (MODULUS_BITS \ BITS_TO_A_BYTE)) + 1) * (MODULUS_BITS \
BITS_TO_A_WORD)
ReDim lWordArray(lNumberOfWords - 1)

lBytePosition = 0
lByteCount = 0
Do Until lByteCount >= lMessageLength
lWordCount = lByteCount \ BYTES_TO_A_WORD
lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE
lWordArray(lWordCount) = lWordArray(lWordCount) Or LShift(Asc(Mid(sMessage,
lByteCount + 1, 1)), lBytePosition)
lByteCount = lByteCount + 1
Loop

lWordCount = lByteCount \ BYTES_TO_A_WORD
lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE

lWordArray(lWordCount) = lWordArray(lWordCount) Or LShift(&H80, lBytePosition)

lWordArray(lNumberOfWords - 2) = LShift(lMessageLength, 3)
lWordArray(lNumberOfWords - 1) = RShift(lMessageLength, 29)

ConvertToWordArray = lWordArray
End Function

Private Function WordToHex(lValue)
Dim lByte
Dim lCount

For lCount = 0 To 3
lByte = RShift(lValue, lCount * BITS_TO_A_BYTE) And m_lOnBits(BITS_TO_A_BYTE -
1)
WordToHex = WordToHex & Right("0" & Hex(lByte), 2)
Next
End Function
--
(S-Term)Sorry, i'm not here

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.180]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店