蓝森林首页 | 返回主页 | 本站地图 | 站内搜索 | 联系信箱 |
 您目前的位置:首页 > 自由软件 > 技术交流 > 应用编程


    

蓝森林 http://www.lslnet.com 2006年8月25日 8:28

[XhTML+asp+access]教程 [6.26更新]

[b]写个[菜鸟篇 XhtML+asp+access]做的信息输入,管理,高级显示,等教程供菜鸟学习:[/b]可是说是小综合吧!
   原xml的说法有误,不好意思,我修正一下吧!

  当然,首先先建站点,这个我不说了,怕被人砍!哈哈

1.第一是建立一个data.mdb了,我做了4张表【每张表里面有id为主建,我在下面省掉不写】多谢狼哥提示,表名要加前缀*_,防止和关键字重复出现问题!由于我的已经做到一般狼哥才提示,就还是老样子,以后菜鸟应该用()里面的命名,这次例外。
   表1:admin(szd_admin): szd_name  szd_password  szd_jibie[0表示一般用户,1表示管理员]


     表2:lanmu( szd_lanmu): szd_lanmu[这是栏目分类,以后要写在那个栏目下,就用到了]

     表3:news(szd_news): szd_title[标题]  szd_lanmu[在那个栏目下,存栏目的id号,方便以后修改]  szd_content【内容】  szd_hits【点击】 szd_jibie[0表示不置顶,1表示置顶,2表示推荐,3表示归档]
    表4:nodown 防下载的表【呵呵,有点安全的观念】数据类型是 OLE 对象 ,然后添加一条记录:<%'p'-9%>自己想办法添加,可以copy的,^_^


现在就是链接数据库了,还是老办法

[html]
<%
option explicit
dim rootdir,myLocation,dbPath,conn,connStr

On Error Resume Next  
        Dim db
           '更改数据库名字
        db="data.mdb"
        set conn = Server.CreateObject("ADODB.Connection")
        connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&db&"")
        conn.Open connstr



if Err.Number <> 0 then '如果有错误发生
        response.write "<b>提示:</b>建立数据库连接错误,请联系管理员。"
        conn.close
        set conn=nothing
        response.end
end if
%>

<%

'SQL注入式攻击防范
dim squery,sURL,allquery
squery=lcase(Request.ServerVariables("QUERY_STRING"))
sURL=lcase(Request.ServerVariables("HTTP_HOST"))
allquery=squery+sURL
if InStr(allquery,"%20")<>0 or InStr(allquery,"%27")<>0 or InStr(allquery,"'")<>0 or InStr(allquery,"%a1a1")<>0 or InStr(allquery,"%24")<>0 or InStr(allquery,"$")<>0 or InStr(allquery,"%3b")<>0 or InStr(allquery,";")<>0 or InStr(allquery,":")<>0 or InStr(allquery,"%%")<>0 or InStr(allquery,"%3c")<>0 or InStr(allquery,"<")<>0 or InStr(allquery,">")<>0 or InStr(allquery,"--")<>0 or InStr(allquery,"sp_")<>0 or InStr(allquery,"xp_")<>0 or InStr(allquery,"exec")<>0 or InStr(allquery,"\")<>0 or InStr(allquery,"delete")<>0 or InStr(allquery,"dir")<>0 or InStr(allquery,"exe")<>0 or InStr(allquery,"select")<>0 or InStr(allquery,"Update")<>0 or InStr(allquery,"cmd")<>0 or InStr(allquery,"*")<>0 or InStr(allquery,"^")<>0 or InStr(allquery,"(")<>0 or InStr(allquery,")")<>0 or InStr(allquery,"+")<>0 or InStr(allquery,"copy")<>0 or InStr(allquery,"format")<>0 or not(isnumeric(request("id"))) then%>
<script Language="JavaScript">window.top.location.href="Error.asp?allquery=<%=allquery%>"</script>
<%Response.End
end if
dim startime,rs
startime=timer()


On Error Resume Next '防止暴库处理
db="data.mdb" '数据库路径
set conn = Server.CreateObject("ADODB.Connection")
        connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&db&"")
        conn.Open connstr




If Err Then


err.Clear
Set Conn = Nothing
Response.Write "数据库连接出错,请检查连接字串。防止暴库处理。"
Response.End
End If
%>
[/html]

ps:原先计划是新闻系统,现在我想改为更加确切的这个标题,呵呵。

[菜鸟篇 xml+asp+access]做的新闻系统教程

[b][color=red]相关的 CSS样式表;[/color]
[/b]
^_^,样式表今天看了一下,经典blog群的不错,就选它吧[由于本片文章献给经典,应该不会是侵权,^/^]
[html]*{
        margin:0;
        padding:0;
        }
body{
        text-align:center;
        margin:0;
        background-color:#E0E6D9;
        font-size:90% !important;
        font-size:88%;
        font-family:tahoma,verdana,arial;
        }
img{
        border-width:0;
        }
form{
        margin:0;
        }
i{
        display:none;
        }
u{
        display:none;
        }
a{
        color:#333399;
        }
.highlight{
        background-color:#0e0;
        font-weight:bold;
        padding-left:2px;
        padding-right:2px;
        }
.caption{
        display:none;
        }
.notice{
        border:1px dotted #ccc;
        background-color:#ffc;
        padding:5px;
        font-size:.9em;
        }

/* base element *********************************************************/
#top{
        text-align:left;
        width:750px;
        margin:auto;
        overflow:hidden;
        }

/* head *****************************************************************/
#header{
        background-position:10px center;
        height:22px;
        margin:9px;
        }
        #header #title{
                display:none;
                }
        #header #subtitle{
                font-weight:bold;
                font-size:70% !important;
                font-size:80%;
                font-family:verdana,arial;
                margin:5px 10px 0 10px;
                float:right;
                color:#666677;
                }

/* navigation ***********************************************************/
#navigation{
        height:25px;
        padding:6px 10px 0 10px;
        background-color:#667799;
        background-image:url(mxna/navbg.gif);
        }
        #navigation a{
                font-size:85%;
                color:#ffffff;
                text-decoration:none;
                padding-right:15px;
                padding-left:15px;
                border-right:1px solid #778899;
        height:50px;
                }
                #navigation a:hover{
                        color:#ccccff;
                        }
        #navigation #search{
                float:right;
                }
                #navigation #search form{
                        margin:0;
                        }
                        #navigation #q{
                                font-size:80%;
                                border-width:1px;
                                font-weight:bold;
                                padding-left:5px;
                                }
                        #navigation .button{
                                font-size:80%;
                                border-width:1px;
                                }
        #navigation .selected{
                border-bottom:3px solid #ffffff;
                }

/* category ********************************************************/
#category{
        margin-top:20px;
        background-color:#ffffff;
        background-image:url(mxna/topRounded.gif);
        background-repeat:no-repeat;
        padding:7px 10px 5px 10px;
        }
        #category a{
                font-size:75%;
                margin-right:10px;
                color:#333366;
                text-decoration:none;
                }
                #category a:hover{
                        text-decoration:underline;
                        }
        #category .selected{
                border-bottom:3px solid #00dd00;
                font-weight:bold;
                }

/* news aggregator *************************************************/
#aggregator{
        background-color:#ffffff;
        padding:5px;
        font-size:100% !important;
        font-size:98%;
        }
        #aggregator .feedCount{
                float:right;
                font-size:70%;
                margin-top:-51px;
                }
        #aggregator .message{
                margin:2px;
                margin-left:26px;
                margin-bottom:15px;
                font-size:90%;
                color:#003366;
                }
        #aggregator .news{
                margin-bottom:20px;
                }
                #aggregator .news .title{
                        margin:0;
                        margin-bottom:10px;
                        background-color:#f3f3f3;
                        padding-top:1px !important;
                        padding:0 5px 2px 23px;
                        font-weight:bold;
                        background-image:url(mxna/newEntryIcon.gif);
                        background-repeat:no-repeat;
                        background-position:2px center;
                        }
                        #aggregator .news .title a{
                                color:#000066;
                                text-decoration:none;
                                font-size:85% !important;
                                font-size:80%;
                                }
                        #aggregator .news .title a:hover{
                                text-decoration:underline;
                                }
                #aggregator .news .creator{
                        font-size:85%;
                        font-weight:normal;
                        float:right;
                        clear:both;
                        margin:-43px 0 0 0 !important;
                        margin-top:-33px;
                        padding-right:5px;
                        }
                        #aggregator .news .creator a{
                                text-decoration:none;
                                color:#888888;
                                }
                                #aggregator .news .creator a:hover{
                                        text-decoration:underline;
                                        }
                        #aggregator .news .creator .name{
                                font-size:70%;
                                display:block;
                                }
                #aggregator .news .floatLeft{
                        margin:0 13px 0 0;
                        float:left;
                        padding:5px;
                        width:auto;
                        }
                #aggregator .news .summary{
                        font-size:88%;
                        margin:3px;
                        margin-top:25px;
                        line-height:160%;
                        }
                #aggregator .news .pubDate{
                        font-size:80%;
                        color:#999999;
                        padding-left:3px;
                        float:left;
                        margin-top:-18px !important;
                        margin-top:-4px;
                        }
                #aggregator .news .related{
                        padding-left:2px;
                        }
                        #aggregator .news .related a{
                                margin-right:10px;
                                color:#999999;
                                font-size:95% !important;
                                font-size:85%;
                                text-decoration:none;
                                }
                                #aggregator .news .related a:hover{
                                        text-decoration:underline;
                                        }
                        #aggregator .news .related .search,
                        #aggregator .news .related .similar{
                                background-image:url(mxna/searchIcon.gif);
                                background-repeat:no-repeat;
                                background-position:left center;
                                height:16px;
                                padding:2px 0 2px 20px;
                                }
                        #aggregator .news .related .permaLink{
                                display:none;
                                }
#aggregator .blog{
        }
        #aggregator .blog{
                margin-bottom:10px;
                }
                #aggregator .blog .title{
                        background-image:url(mxna/newEntryIcon.gif);
                        background-repeat:no-repeat;
                        background-position:2px center;
                        padding-left:26px;
                        display:block;
                        font-size:90%;
                        }
                        #aggregator .blog a{
                                color:#333366;
                                text-decoration:none;
                                }
                                #aggregator .blog a:hover{
                                        text-decoration:underline;
                                        }
                #aggregator .blog dd{
                        margin-left:26px;
                        }
                #aggregator .blog .lastUpdate{
                        display:block;
                        color:#000033;
                        }
                        #aggregator .blog .lastUpdate i{
                                font-style:normal;
                                display:inline;
                                }
#aggregator .categoryCaption{
        display:block;
        background-color:#f3f3f3;
        margin-bottom:10px;
        padding-left:2px;
        }

#aggregator .code{
        display:block;
        background-color:#f6f6f3;
        padding:9px;
        margin:5px 0px 5px 0px;
        color:#000000;
        font-family:'Courier New',Courier;
        }

/* pager ***********************************************************/
#pager{
        font-family:fixedsys,system,tahoma,verdana,arial;
        margin-bottom:10px;
        padding:0 15px 15px 15px;
        background-color:#ffffff;
        background-image:url(mxna/bottomRounded.gif);
        background-repeat:no-repeat;
        background-position:left bottom;
        }
        #pager a{
                margin-right:5px;
                color:#333366;
                }
        #pager .selected{
                font-weight:bold;
                }

/* links ***********************************************************/
#links{
        font-size:80%;
        float:right;
        padding:10px;
        }
        #links a{
                font-size:90%;
                color:#333366;
                text-decoration:none;
                }
                #links a:hover{
                        text-decoration:underline;
                        }
        #links .caption{
                display:inline;
                font-weight:normal;
                }

/* footer **********************************************************/
#footer{
        padding:10px;
        font-size:75%;
        color:#333333;
        }

[/html]

[url=http://www.5do8.com/blueidea/css.css]css点击这里下载




[url=http://www.5do8.com/blueidea/data.mdb]上面的数据库点击这里下载


[b][color=red]简单数据库链接;[/color]
[/b]

:[html]<%
On Error Resume Next
dim db
db="data.mdb"
set conn = Server.CreateObject("ADODB.Connection")
        connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&db&"")
        conn.Open connstr




If Err Then


err.Clear
Set Conn = Nothing
Response.Write "数据库连接出错,请检查连接字串。防止暴库处理。"
Response.End
End If
%>
[/html]

[菜鸟篇 xml+asp+access]做的新闻系统教程

好!

[菜鸟篇 xml+asp+access]做的新闻系统教程

[b][color=red]我的一点xml的看法和注意事项;[/color] 谢谢狼哥的指点[/b]


先认识一下xml,他的什么发展历程呀的,我不说了,单说主要的,呵呵,我的体会:

  xml其实可以说是html的老爹,他的道术高在他的可扩展型
比如:<top>
<left>Lin</left>
</top>更加可视,便于开发和维护,是不是简明了好多?

利用xml的这些标签可以生成xhtml文件,这方面我还不成熟,以后在研究一下。
就是说,用户可以自定义元素,抽个例子:

首先在css上定义:

[html]#footer{
        padding:10px;
        font-size:75%;
        color:#333333;
        }

'在asp文件中这样用:
<div id="footer">
copy; 2004 w3.org.cn    www.blueidea.com
Powered 耕耘村  [www.5do8.com]

</div>
[/html]

反正就这么回事!


首先当然管理员登陆拉,干什么?去添加新闻呀!记住,我的标题上有个xml,呵呵,你存asp文件的时候要这样做:
在第一行开始【当然在code上】添加下面的话或者要出现相似语句:
[html]
<!--#include file="conn.asp"-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Generator" content="BXNA/V0.05a" />
<meta name="author" content="LeXRus" />
<meta name="keywords" content="耕耘村 编的菜鸟新闻[xml+asp+access] by老农" />
<meta name="robots" content="all" />
<title>耕耘村 编的菜鸟新闻[xml+asp+access] by老农</title>
<style type="text/css" title="MXNA">@import "style/css.css";</style>
</head> [/html]

不按照要求可能出现未知错误,

当前生成的地址:http://www.5do8.com/blueidea/

[b][color=red]请在最所有页面上面加上<%Session.CodePage=65001%> 杜绝乱码[/color][/b]

[菜鸟篇 xml+asp+access]做的新闻系统教程

太好了。加分~~~~~这种精神实在感动~~~~~~~~~~~``````

[菜鸟篇 xml+asp+access]做的新闻系统教程

关注,支持,请继续

+U,要一鼓作气

[菜鸟篇 xml+asp+access]做的新闻系统教程

多谢布鲁斯狼的鼓励!
[b][color=red] 这是显示新闻的页面,查找数据,并且显示[/color]
[/b]

先打开记录集,然后查找:SELECT * From news order by id DESC

这里你可以随便选择记录数:像 SELECT top 6* From news order by id DESC选择前6条,而我们前面设置的news表里面有个szd_jibie,可以order by  szd_jibie DESC 显示结果一般<置顶<推荐<归档排序,还可以随机选取n条记录,相关的技术我打算这个问题讲完了细谈。


[html]<%
     SQLStr="SELECT * From news order by id DESC "
       
Set Rs=Server.CreateObject("adodb.recordset")
                Rs.Open SQLStr,Conn,1,3

                %>
[/html]

上面的打开了记录集,先确定是不是有数据,rs.eof[记录结尾]  and rs.bof[记录开始]当这2个值返回真,开始=结尾。没有数据,输出
[code]        <%
If rs.bof and rs.eof Then
response.write "<SCRIPT language=JavaScript>alert('数据查找结果是空);"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end

end if
%> [/code]

当有数据时打印数据:

[html]
<% If Not (Rs.Bof And Rs.Eof) Then %>

               
<%
dim lanmu_id
lanmu_id=rs("szd_lanmu")

        sqla="Select * from lanmu where id="&lanmu_id
                               
set szda=conn.execute(sqla)

do while not szda.eof
                       
                        lanmu=szda("szd_lanmu")

                        %>

<dl>
<dd>

<h5 class="title">
<a target="_blank" href="#"><%=rs("szd_title").value%></a>
</h5>


<small class="pubDate">
<i>Publish date: </i><%=rs("szd_times").value%></small>
<small class="creator">
<i>Posted in </i>
<%=lanmu%>
</small>




<div class="summary">
<%=rs("szd_content").value%>


</div>
<small class="related">

<a class="hits" >点击次数:<%=rs("szd_hits").value%></a>

<a class="similar"></a>


</small>

<%szda.MoveNext
        Loop
        set szda=nothing
        %>

<%
                Rs.MoveNext
     
       RS.Close

end if
Set RS=Nothing
%>

</dd>
</dl>

[/html]
里面有个嵌套查询,请注意。

所有的页面生成源码为[html]<!--#include file="conn0.asp"-->
<%Session.CodePage=65001%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Generator" content="BXNA/V0.05a" />
<meta name="author" content="LeXRus" />
<meta name="keywords" content="耕耘村 编的菜鸟新闻[xml+asp+access] by老农" />
<meta name="description" content="Blueidea XML News Aggregator. Aggregates Your Ideas." />
<meta name="robots" content="all" />
<title>耕耘村 编的菜鸟新闻[xml+asp+access] by老农</title>
<style type="text/css" title="MXNA">@import "style/css.css";</style>

<link rel="alternate stylesheet" type="text/css" title="Blueidea General" href="style/default.css" />
<link rel="alternate stylesheet" type="text/css" title="Plain Text" href="style/plaintext.css" />

</head>
<body>


<div id="bxna">
<div id="header">
<h1 id="title">XML News Aggregator</h1>
<sup id="subtitle">耕耘村 编的菜鸟小新闻系统[xml+asp+access]</sup>
</div>



<p id="category">
<a href="http://www.5do8.com" class="selected">耕耘村首页
                        </a>
<a href="#">管理登陆</a>
<a href="#">管理登陆</a>
<a href="#">管理登陆</a>
<a href="#">管理登陆</a>
<a href="#">管理登陆</a>
<a href="#">管理登陆</a>
<a href="#">管理登陆</a>

</p>



<div id="aggregator">
<h4 class="caption">Aggregated News</h4>
<p class="feedCount">仅做个人研究</p>
<div class="news">


<%
     SQLStr="SELECT * From news order by id DESC "
       
Set Rs=Server.CreateObject("adodb.recordset")
                Rs.Open SQLStr,Conn,1,3

                %>
                <%
                If rs.bof and rs.eof Then
    response.write "<SCRIPT language=JavaScript>alert('数据查找结果是空);"
    response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
    response.end

end if
%>
                <% If Not (Rs.Bof And Rs.Eof) Then %>

               
<%
dim lanmu_id
lanmu_id=rs("szd_lanmu")

        sqla="Select * from lanmu where id="&lanmu_id
                               
set szda=conn.execute(sqla)

do while not szda.eof
                       
                        lanmu=szda("szd_lanmu")

                        %>

<dl>
<dd>

<h5 class="title">
<a target="_blank" href="#"><%=rs("szd_title").value%></a>
</h5>


<small class="pubDate">
<i>Publish date: </i><%=rs("szd_times").value%></small>
<small class="creator">
<i>Posted in </i>
<%=lanmu%>
</small>




<div class="summary">
<%=rs("szd_content").value%>


</div>
<small class="related">

<a class="hits" >点击次数:<%=rs("szd_hits").value%></a>

<a class="similar"></a>


</small>

<%szda.MoveNext
        Loop
        set szda=nothing
        %>

<%
                Rs.MoveNext
     
       RS.Close

end if
Set RS=Nothing
%>

</dd>
</dl>

</div>
<p id="pager">
<strong class="caption">Page:</strong>
<a href="#">1  2  3  4  5  </a>

</p>



<p id="links">
<strong class="caption">Links:</strong>
<a href="http://www.5do8.com" target="_blank">web home</a>
<a href="#" target="_blank">Forum</a>
<a href="http://www.5do8.com/blog" target="_blank">
<acronym title="Macromedia XML News Aggregator">blog</acronym>
</a>
<a href="http://www.5do8.com/links" target="_blank">friend link</a>
</p>

<div id="footer">
<div id="copyright">&copy; 2004 w3.org.cn    www.5do8.com
Powered 耕耘村  [老农]</div></div>
</div>
</div>



</body>
</html>[/html]

这里查看调试结果:http://www.5do8.com/blueidea/index.asp



[菜鸟篇 xml+asp+access]做的新闻系统教程

[b][color=red] 这是页面提交,即新闻数据插入的讲解[/color]
[/b]

  先建表单,填写name名称,这里有个栏目属性,是选择了lanmu表单的szd_lanmu的id号,这个下拉的对应asp文件是:
[code]
<select name="fenlei" >
        <% sqlfen="select * from lanmu order by id asc"
                               
set rsfen=conn.execute(sqlfen)

do while not rsfen.eof
  %>
        <option value=<%=rsfen("id")%>>
<%=rsfen("szd_lanmu")%>
</option>
        <%rsfen.MoveNext
        Loop
        set rsfen=nothing
        %>
      </select>
[/code]

添加数据的时候 有时候出现莫明的错误,经过我的查证,问题出现在提交处理的页面,[color=red]那个asp页面不能存为UFT-8,必须存为default,我用editplus写的,很方便改的[/color]废话不说了,看看处理页面的文件:我用的是rs.addnew插入数据,这个我感觉效率不错,简洁,菜鸟就用它(先用request获取表单数据,然后插入):[html]

<% @LANGUAGE = VBScript %>
<!--#include file="conn0.asp"-->
<%
title=replace(trim(request.form("title")),"'","")
lanmu=request.form("lanmu")
content=replace(trim(request.form("content")),"'","")
jibie=request.form("jibie")

if title="" then
        response.write "<SCRIPT language=JavaScript>alert('title is worry!');"
        response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
        response.end
end if

if content="" then
response.write "<SCRIPT language=JavaScript>alert('content is worry!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end
end if
%>

<%
        set rs=server.createobject("adodb.recordset")
sql="select * from news"
rs.open sql,conn,1,3

rs.addnew
rs("szd_title")=title
rs("szd_content")=content
rs("szd_jibie")=jibie
rs("szd_lanmu")=lanmu

rs.update
rs.close
conn.close

set conn=nothing


%>
<meta http-equiv="refresh" content="2;URL=index.asp">

<div align="center">ok,plese wait 2 min!
</div>

<p>&nbsp;</p>
<div align="center">
  <p><a href="index.asp">ok!</a></p>
  <p><a href="index.asp">to home</a></p>
</div>

[/html]

我还是把insert into 的句子也写出,>麻雀的鸟鸟可以用这个
[code]
<%
exec1="insert into blog(szd_title,szd_lanmu,szd_jibie,szd_content)
values('"+title+"','"+lanmu+"','"+jibie+"','"+content+"')"
conn.execute exec1
conn.close
set conn=nothing%>

[/code]
[url=http://www.5do8.com/blueidea/add.asp]
点击这里查看插入数据的add.asp文件
[b]
强烈建议菜鸟自己动手做,碰见问题就说,或者pm我[/b]

[菜鸟篇 xml+asp+access]做的新闻系统教程

[b][color=red] 这是现在说一下分页的思路[/color]
[/b]
  网上很多的高效分页,其实都是一个思路:
  1.设置每页记录数目pagesize。
  2.获得总数rs.recordcount
  3.用总数除以pagesize,得到所有的页数 Rs.pagecount
  4.获取用户提交的Rs.pageno,乘以pagesize判断有没有记录,然后指针移至指定页的第一条记录
  5.循环显示页数

我简明的说,就这些。当然验证pageno[cint转换为数字]符合条件最关键。

[code]
dim RsCount,ReSQL,pmcount,pageno
pmcount=6'这里我们设置为6,还可以在数据库定义,这里取参。
     SQLStr="SELECT * From news order by id DESC "
Set Rs=Server.CreateObject("adodb.recordset")
Rs.Open SQLStr,Conn,1,1
If rs.eof and rs.bof Then   %>

<%  else
'分页开始了,请注意!!
rcount=rs.recordcount
if pmcount="" or isempty(pmcount) or pmcount<1 then
        pmcount=10
end if
rs.pagesize=pmcount   '设置每页数
mpage=rs.pagecount '得到总页数
pageno=request("pageno")
pageno=CInt(Pageno)


If  pageno = "" Then
pageno=1
End If
If (pageno-Rs.pagecount) > 0 Then
pageno=Rs.pagecount
End If
if pageno < 1 Then
pageno = 1
End If

rs.absolutepage=pageno'将指针移至指定页的第一条记录


j=rs.recordcount
j=j-(pageno-1)*pmcount
i=0



[/code]
[b]
loop的条件:[/b]
[code]<%
Do While Not rs.Eof and i<pmcount %>[/code]

最后的循环显示:[code]<%
        i = i+1
        rs.movenext
        loop
End If

%>[/code]

[b]for循环显示的页数:[/b]
[code]<p id="pager">
<strong class="caption">all:</strong>
All:<%=Rs.recordcount%> Have <%=Rs.pagecount%> pages
To:<%for i=1 to Rs.pagecount %>
<%response.Write("<a href='?pageno="&i&"'>"&i&"</a>&nbsp;") %>
&nbsp<%next%>

</p>[/code]


[b]现在生成的文件完整为 index.asp:[/b][html]<%
dim startime

startime=timer()
%>
<!--#include file="conn0.asp"-->
<%Session.CodePage=65001%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Generator" content="BXNA/V0.05a" />
<meta name="author" content="LeXRus" />
<meta name="keywords" content="耕耘村 编的菜鸟新闻[xml+asp+access] by老农" />
<meta name="robots" content="all" />
<title>耕耘村 编的菜鸟新闻[xml+asp+access] by老农</title>
<style type="text/css" title="MXNA">@import "style/css.css";</style>
</head>
<body>
<div id="bxna">
<div id="header">
<h1 id="title">XML News Aggregator</h1>
<sup id="subtitle">耕耘村 编的菜鸟小新闻系统[xml+asp+access]</sup>
</div>


<p id="category">
<a href="http://www.5do8.com" class="selected">耕耘村首页</a>
<a href="index.asp">该系统首页</a>

<a href="add.asp">添加新闻</a>

</p>

<div id="aggregator">
<h4 class="caption">Aggregated News</h4>
<p class="feedCount">仅做个人研究</p>
<div class="news">


<% conn.execute("update news set szd_hits=szd_hits+1")
dim RsCount,ReSQL,pmcount,pageno
pmcount=pagesize
     SQLStr="SELECT * From news order by id DESC "
Set Rs=Server.CreateObject("adodb.recordset")
                Rs.Open SQLStr,Conn,1,1
If rs.eof and rs.bof Then   %>

<%  else
'分页开始了,老农请注意!!
rcount=rs.recordcount
if pmcount="" or isempty(pmcount) or pmcount<1 then
        pmcount=10
end if
rs.pagesize=pmcount           '设置每页数
mpage=rs.pagecount '得到总页数
pageno=request("pageno")
pageno=CInt(Pageno)


If  pageno = "" Then
pageno=1
End If
If (pageno-Rs.pagecount) > 0 Then
pageno=Rs.pagecount
End If
if pageno < 1 Then
pageno = 1
End If

rs.absolutepage=pageno        '将指针移至指定页的第一条记录


j=rs.recordcount
j=j-(pageno-1)*pmcount
i=0




%>




<%
Do While Not rs.Eof and i<pmcount %>

<dl>
<dd>

<h6 class="title">
<a ><%=rs("szd_title").value%></a>
</h6>


<small class="pubDate">
<i>Publish date: </i><%=rs("szd_times").value%></small>
<small class="creator">
<%
dim lanmu_id
lanmu_id=rs("szd_lanmu")

        sqla="Select * from lanmu where id="&lanmu_id
                               
set szda=conn.execute(sqla)


do while not szda.eof
                       
                        lanmu=szda("szd_lanmu")
                       

                        %>
<i>Posted in </i>
<%=lanmu%>
<%szda.MoveNext

        Loop
       
        set szda=nothing
        %>
</small>




<div class="summary">
<%=rs("szd_content").value%>


</div>
<small class="related">

<a class="hits" >点击次数:<%=rs("szd_hits").value%></a>

<a class="similar"></a>


</small>

<%
        i = i+1
        rs.movenext
        loop
End If

%>
</dd>
</dl>

</div>
<p id="pager">
<strong class="caption">all:</strong>All:<%=Rs.recordcount%> Have <%=Rs.pagecount%> pages
To:<%for i=1 to Rs.pagecount %> <%response.Write("<a href='?pageno="&i&"'>"&i&"</a>&nbsp;") %>&nbsp<%next%>

</p>
<p id="links">
<strong class="caption">Links:</strong>
<a href="http://www.5do8.com" target="_blank">web home</a>
<a href="#" target="_blank">Forum</a>
<a href="http://www.5do8.com/blog" target="_blank">
<acronym title="Macromedia XML News Aggregator">blog</acronym>
</a>
<a href="http://www.5do8.com/links" target="_blank">friend link</a>
</p>

<div id="footer">
<div id="copyright">&copy; www.5do8.com Powered by tillage home
<%
dim endtime

endtime=timer()
%>
  Time out:<%=FormatNumber((endtime-startime)*1000,3)%>
</div></div>
</div>
</div>



</body>
</html>
[/html]


演示在:http://www.5do8.com/blueidea/index.asp

待续ing,下一讲是分类显示新闻和调用讲解。

请教一个问题,关于asp的session

我曾经用asp做过一个系统,每个界面都有一个用户名及权限的判断,把这两个值保存在session变量中,如果session变量中没有值的话,就转到登录界面,我把这个程序放到网上嘛,偶尔有登录过后,session变量就为空了,我把每句代码也检查了一下,对session变量名没有重复,在此等待大家的好消息啦,谢谢

[菜鸟篇 xml+asp+access]做的新闻系统教程

好好看了下流程和步骤,不错,很适合初学者的学习和应用

说几个自己的看法:

1,数据库表名称的注意点:admin和news由于SQL关键字的缘故,尽量少用,若在查询时,尽量用[],即 select * form [news] 。当然推荐改名,比如我喜欢加cn_为前缀,即“cn_news”。

这是03年我写教程时,经典的热心朋友给我指出的,今天我继续指出给你:)

2,楼主说的XML+……,看了你近3/4内容(我想应该差不多了吧),涉及到XML就是这里看到:
  

你的意思是说这个是XML么?

如果这个结构,说是ASP+ACCESS最终生成的XHTML+CSS才适当,当然还要检查你的XHTML、CSS的规范性。

总的感觉,楼主写得比较的详细,无论如何都值得大家静下心来一看。

辛苦了。


[菜鸟篇 XML+asp+access]做的新闻系统教程

   数据表的命名我忘了,谢谢指点。
   狼哥说的确实很对,我现在正在学习xml,计划这个写到最后才全部用xml准确定位,再说了,我的xml概念还不是很明确,学习中,不过,我绝对会完成这个教程的,终极目标是XML+asp+access,哈哈,如果菜鸟看的话,先逐渐会掌握asp和access的,然后在啃xml。

[菜鸟篇 XML+asp+access]做的新闻系统教程

继续:[b][color=red] 今天说如何验证用户添加数据,和用户登陆,加密问题讲解[/color][/b]

  验证用户登陆就是验证他的机器是不是和系统产生的验证一样,一般用session和cookie,今天我只说session的简单操作,以后有空再说cookie,至于基本概念,请查看书籍,我只说怎么用,当用户验证成功的时候,同时写入session:
[code]
Session("szd_admin")="True"
Session("szd_name")=uid
[/code]
当我们要限制页面的时候,就在前面写上
[code]
<%
if Session("szd_admin")="True" Then  
else
Response.Redirect ("login.asp")
End If
%>[/code]当验证seeion不成功的时候,转到登陆页面,
例子为:
[code]<%If Session("szd_admin")="True" Then%>

<a href="LOGOUT.ASP">退出</a>
  <%End If%>
[/code]
这里可以把这个code另存为一个一个单独文件,我们这里存为szd_chk.asp,在限制的页面add.asp最上面加上<!-- #include file="szd_chk.asp"-->就包含了,验证是不是合法用户了。
退出的时候把seeion的参数写为空即可
[code]
<%
Session("szd_admin")=""
Response.Redirect ("index.asp")
%>
[/code]
可以把这个文件另存为logout.asp做一个超级一个链接,就是退出登陆:
[code]
<%If Session("szd_admin")="True" Then%>

<a href="LOGOUT.ASP">退出</a>
  <%End If%>


[/code]

   加密用户密码是这么回事:用户输入密码,表单获取这个password,然后用一个函数把这个password转换成另一个字符串,保存这个字符串到数据库,登陆的时候,比较转化后的密码和数据库是不是一样,判断是不是正确。最上面包含加密函数的文件:
我的加密文件是:md5.asp你可以把里面得算法自己改改,这样算法变了,生成得密码就不一样了
[html]<%
Private Const BITS_TO_A_BYTE_NET=8
Private Const BYTES_TO_A_WORD_NET=4
Private Const BITS_TO_A_WORD_NET=32
Private m_lOnBits_NET(30)
Private m_l2Power_NET(30)
m_lOnBits_NET(0)=CLng(1)
m_lOnBits_NET(1)=CLng(3)
m_lOnBits_NET(2)=CLng(7)
m_lOnBits_NET(3)=CLng(15)
m_lOnBits_NET(4)=CLng(31)
m_lOnBits_NET(5)=CLng(63)
m_lOnBits_NET(6)=CLng(127)
m_lOnBits_NET(7)=CLng(255)
m_lOnBits_NET(8)=CLng(511)
m_lOnBits_NET(9)=CLng(1023)
m_lOnBits_NET(10)=CLng(2047)
m_lOnBits_NET(11)=CLng(4095)
m_lOnBits_NET(12)=CLng(8191)
m_lOnBits_NET(13)=CLng(16383)
m_lOnBits_NET(14)=CLng(32767)
m_lOnBits_NET(15)=CLng(65535)
m_lOnBits_NET(16)=CLng(131071)
m_lOnBits_NET(17)=CLng(262143)
m_lOnBits_NET(18)=CLng(524287)
m_lOnBits_NET(19)=CLng(1048575)
m_lOnBits_NET(20)=CLng(2097151)
m_lOnBits_NET(21)=CLng(4194303)
m_lOnBits_NET(22)=CLng(8388607)
m_lOnBits_NET(23)=CLng(16777215)
m_lOnBits_NET(24)=CLng(33554431)
m_lOnBits_NET(25)=CLng(67108863)
m_lOnBits_NET(26)=CLng(134217727)
m_lOnBits_NET(27)=CLng(268435455)
m_lOnBits_NET(28)=CLng(536870911)
m_lOnBits_NET(29)=CLng(1073741823)
m_lOnBits_NET(30)=CLng(2147483647)

m_l2Power_NET(0)=CLng(1)
m_l2Power_NET(1)=CLng(2)
m_l2Power_NET(2)=CLng(4)
m_l2Power_NET(3)=CLng(8)
m_l2Power_NET(4)=CLng(16)
m_l2Power_NET(5)=CLng(32)
m_l2Power_NET(6)=CLng(64)
m_l2Power_NET(7)=CLng(128)
m_l2Power_NET(8)=CLng(256)
m_l2Power_NET(9)=CLng(512)
m_l2Power_NET(10)=CLng(1024)
m_l2Power_NET(11)=CLng(2048)
m_l2Power_NET(12)=CLng(4096)
m_l2Power_NET(13)=CLng(8192)
m_l2Power_NET(14)=CLng(16384)
m_l2Power_NET(15)=CLng(32768)
m_l2Power_NET(16)=CLng(65536)
m_l2Power_NET(17)=CLng(131072)
m_l2Power_NET(18)=CLng(262144)
m_l2Power_NET(19)=CLng(524288)
m_l2Power_NET(20)=CLng(1048576)
m_l2Power_NET(21)=CLng(2097152)
m_l2Power_NET(22)=CLng(4194304)
m_l2Power_NET(23)=CLng(8388608)
m_l2Power_NET(24)=CLng(16777216)
m_l2Power_NET(25)=CLng(33554432)
m_l2Power_NET(26)=CLng(67108864)
m_l2Power_NET(27)=CLng(134217728)
m_l2Power_NET(28)=CLng(268435456)
m_l2Power_NET(29)=CLng(536870912)
m_l2Power_NET(30)=CLng(1073741824)

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_NET(31-iShiftBits)) Then
    LShift=((lValue And m_lOnBits_NET(31-(iShiftBits+1)))*m_l2Power_NET(iShiftBits)) Or &H80000000
  Else
    LShift=((lValue And m_lOnBits_NET(31-iShiftBits))*m_l2Power_NET(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_NET(iShiftBits)

  If (lValue And &H80000000) Then
    RShift=(RShift Or (&H40000000\m_l2Power_NET(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 F(x,y,z)
  F=(x And y) Or ((Not x) And z)
End Function

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

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

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

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

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

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

Private Sub II(a,b,c,d,x,s,ac)
  a=AddUnsigned(a,AddUnsigned(AddUnsigned(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_NET))\(MODULUS_BITS\BITS_TO_A_BYTE_NET))+1)*(MODULUS_BITS\BITS_TO_A_WORD_NET)
  ReDim lWordArray(lNumberOfWords-1)
  
  lBytePosition=0
  lByteCount=0
  Do Until lByteCount >=lMessageLength
    lWordCount=lByteCount\BYTES_TO_A_WORD_NET
    lBytePosition=(lByteCount Mod BYTES_TO_A_WORD_NET)*BITS_TO_A_BYTE_NET
    lWordArray(lWordCount)=lWordArray(lWordCount) Or LShift(Asc(Mid(sMessage,lByteCount+1,1)),lBytePosition)
    lByteCount=lByteCount+1
  Loop

  lWordCount=lByteCount\BYTES_TO_A_WORD_NET
  lBytePosition=(lByteCount Mod BYTES_TO_A_WORD_NET)*BITS_TO_A_BYTE_NET

  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_NET) And m_lOnBits_NET(BITS_TO_A_BYTE_NET-1)
    WordToHex=WordToHex & Right("0" & Hex(lByte),2)
  Next
End Function

Public Function MD5_NET(sMessage)
  Dim x
  Dim k
  Dim AA
  Dim BB
  Dim CC
  Dim DD
  Dim a
  Dim b
  Dim c
  Dim d
  
  Const S11=7
  Const S12=12
  Const S13=17
  Const S14=22
  Const S21=5
  Const S22=9
  Const S23=14
  Const S24=20
  Const S31=4
  Const S32=11
  Const S33=16
  Const S34=23
  Const S41=6
  Const S42=10
  Const S43=15
  Const S44=21

  x=ConvertToWordArray(sMessage)
  
  a=&H67452301
  b=&HEFCDAB89
  c=&H98BADCFE
  d=&H10325476

  For k=0 To UBound(x) Step 16
    AA=a
    BB=b
    CC=c
    DD=d

    FF a,b,c,d,x(k+0),S11,&HD76AA478
    FF d,a,b,c,x(k+1),S12,&HE8C7B756
    FF c,d,a,b,x(k+2),S13,&H242070DB
    FF b,c,d,a,x(k+3),S14,&HC1BDCEEE
    FF a,b,c,d,x(k+4),S11,&HF57C0FAF
    FF d,a,b,c,x(k+5),S12,&H4787C62A
    FF c,d,a,b,x(k+6),S13,&HA8304613
    FF b,c,d,a,x(k+7),S14,&HFD469501
    FF a,b,c,d,x(k+8),S11,&H698098D8
    FF d,a,b,c,x(k+9),S12,&H8B44F7AF
    FF c,d,a,b,x(k+10),S13,&HFFFF5BB1
    FF b,c,d,a,x(k+11),S14,&H895CD7BE
    FF a,b,c,d,x(k+12),S11,&H6B901122
    FF d,a,b,c,x(k+13),S12,&HFD987193
    FF c,d,a,b,x(k+14),S13,&HA679438E
    FF b,c,d,a,x(k+15),S14,&H49B40821

    GG a,b,c,d,x(k+1),S21,&HF61E2562
    GG d,a,b,c,x(k+6),S22,&HC040B340
    GG c,d,a,b,x(k+11),S23,&H265E5A51
    GG b,c,d,a,x(k+0),S24,&HE9B6C7AA
    GG a,b,c,d,x(k+5),S21,&HD62F105D
    GG d,a,b,c,x(k+10),S22,&H2441453
    GG c,d,a,b,x(k+15),S23,&HD8A1E681
    GG b,c,d,a,x(k+4),S24,&HE7D3FBC8
    GG a,b,c,d,x(k+9),S21,&H21E1CDE6
    GG d,a,b,c,x(k+14),S22,&HC33707D6
    GG c,d,a,b,x(k+3),S23,&HF4D50D87
    GG b,c,d,a,x(k+8),S24,&H455A14ED
    GG a,b,c,d,x(k+13),S21,&HA9E3E905
    GG d,a,b,c,x(k+2),S22,&HFCEFA3F8
    GG c,d,a,b,x(k+7),S23,&H676F02D9
    GG b,c,d,a,x(k+12),S24,&H8D2A4C8A
        
    HH a,b,c,d,x(k+5),S31,&HFFFA3942
    HH d,a,b,c,x(k+8),S32,&H8771F681
    HH c,d,a,b,x(k+11),S33,&H6D9D6122
    HH b,c,d,a,x(k+14),S34,&HFDE5380C
    HH a,b,c,d,x(k+1),S31,&HA4BEEA44
    HH d,a,b,c,x(k+4),S32,&H4BDECFA9
    HH c,d,a,b,x(k+7),S33,&HF6BB4B60
    HH b,c,d,a,x(k+10),S34,&HBEBFBC70
    HH a,b,c,d,x(k+13),S31,&H289B7EC6
    HH d,a,b,c,x(k+0),S32,&HEAA127FA
    HH c,d,a,b,x(k+3),S33,&HD4EF3085
    HH b,c,d,a,x(k+6),S34,&H4881D05
    HH a,b,c,d,x(k+9),S31,&HD9D4D039
    HH d,a,b,c,x(k+12),S32,&HE6DB99E5
    HH c,d,a,b,x(k+15),S33,&H1FA27CF8
    HH b,c,d,a,x(k+2),S34,&HC4AC5665

    II a,b,c,d,x(k+0),S41,&HF4292244
    II d,a,b,c,x(k+7),S42,&H432AFF97
    II c,d,a,b,x(k+14),S43,&HAB9423A7
    II b,c,d,a,x(k+5),S44,&HFC93A039
    II a,b,c,d,x(k+12),S41,&H655B59C3
    II d,a,b,c,x(k+3),S42,&H8F0CCC92
    II c,d,a,b,x(k+10),S43,&HFFEFF47D
    II b,c,d,a,x(k+1),S44,&H85845DD1
    II a,b,c,d,x(k+8),S41,&H6FA87E4F
    II d,a,b,c,x(k+15),S42,&HFE2CE6E0
    II c,d,a,b,x(k+6),S43,&HA3014314
    II b,c,d,a,x(k+13),S44,&H4E0811A1
    II a,b,c,d,x(k+4),S41,&HF7537E82
    II d,a,b,c,x(k+11),S42,&HBD3AF235
    II c,d,a,b,x(k+2),S43,&H2AD7D2BB
    II b,c,d,a,x(k+9),S44,&HEB86D391

    a=AddUnsigned(a,AA)
    b=AddUnsigned(b,BB)
    c=AddUnsigned(c,CC)
    d=AddUnsigned(d,DD)
  Next
  
  MD5_NET=UCase(WordToHex(a) & WordToHex(b) & WordToHex(c) & WordToHex(d))
End Function
%>

[/html]
<!--#include file="md5.asp"-->

先获取用户输入的密码:[code] pwd_net=replace(trim(Request("password")),"'","")[/code]
把它转换为新的验证密码[code] pwd_net=MD5_NET(MD5_NET(pwd_net))[/code]
和数据库里面的比较[code] If rs("szd_password")=pwd_net Then[/code]

这就是加密的部分!

登陆表单不说了,code是[code]
<form name="form" method="post" action="loginresult.asp">
用户:<input name="user" type="text" id="user" size="16" />
密码: <input name="password" type="password"  size="16" />
<input name="Submit" type="submit" class="01"  value="login in" />
</form>
[/code]

处理的文件先取得密码和用户名,转化密码,
循环查找用户名,若不存在,提示错误,结束返回
若用户名正确,验证密码,写入seeion:[code]
If rs("szd_password")=pwd_net Then
Session("szd_admin")="True"
Session("szd_name")=uid
[/code]
验证的整体文件是:
[html]<% @LANGUAGE = VBScript %>
<!--#include file="conn0.asp"-->
<!--#include file="md5.asp"-->
<%
Dim sql,uid,pwd,expTime,date_last
uid=Trim(Request.Form("user"))
uid=replace(uid,"'","")
pwd_net=replace(trim(Request("password")),"'","")
pwd_net=MD5_NET(MD5_NET(pwd_net))

set rs=server.createobject("adodb.recordset")
sql="select * from admin where szd_name='"&uid&"'"
rs.open sql,conn,1,3
If not rs.Eof Then
        If rs("szd_password")=pwd_net Then
                Session("szd_admin")="True"
                Session("szd_name")=uid
                Response.Redirect ("index.asp")
        else         response.write "<SCRIPT language=JavaScript>alert('用户名和密码错误,请勿非法登陆!');"
        response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
        response.end
        
        End If
else
response.write "<SCRIPT language=JavaScript>alert('用户名和密码错误,请勿非法登陆!');"
        response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
        response.end
End If

%>
<meta http-equiv="refresh" content="2;URL=index.asp">

<div align="center">ok,plese wait 2 min!
</div>

<p>&nbsp;</p>
<div align="center">
  <p><a href="index.asp">ok!</a></p>
  <p><a href="index.asp">to home</a></p>
</div>
[/html]

好了,现在这快登陆验证得讲完了,可以这里测试:
http://www.5do8.com/blueidea/login.asp
  明天我们说修改新闻和分类显示,待续ing

[菜鸟篇 XML+asp+access]做的新闻系统教程

[b][color=red] 现在说管理员编辑新闻和删除新闻操作[/color][/b]

这2个操作一般只有管理员有权限,所以在相关的页面上面包含文件:
[code] <!-- #include file="szd_chk.asp"-->[/code]为什么在上一讲李很清楚。
关于这2个操作和插入数据其实没有什么2样,都是sql语句的变化而已。
编辑新闻的关键的sql语句是:
[code]
exec="select * from news where id="&request.form("id")
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,3
'这是一个查找编号id的新闻,并且打开与数据库的连接
[/code]
然后是把数据库里面的数据[color=red]临时[/color]替换为表单修改的结果
:[code]rs("szd_title")=request.form("title")
rs("szd_lanmu")=request.form("lanmu")
rs("szd_content")=request.form("content")

rs("szd_jibie")=request.form("jibie") [/code]
then判断数据的合法性,如果不合法,结束返回,
:[code]
if rs("szd_title")="" then
response.write "<SCRIPT language=JavaScript>alert('title is worry!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end
end if

if rs("szd_content")="" then
response.write "<SCRIPT language=JavaScript>alert('content is worry!!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end
end if

if rs("szd_jibie")="" then
response.write "<SCRIPT language=JavaScript>alert('jibie is worry!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end
end if

if rs("szd_lanmu")="" then
response.write "<SCRIPT language=JavaScript>alert('lanmu is worry!!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end
end if
[/code]

如果合法,更新数据,更新时牵扯到另一个关键的sql语句:
[code]rs.update'更新数据
rs.close‘关闭连接
set rs=nothing’清空保存
conn.close
set conn=nothing‘释放内存
<meta http-equiv="refresh" content="2;URL=index.asp">

<div align="center">mad is  ok, wait a little!
</div>

<p>&nbsp;</p>
<div align="center"><a href="index.asp">click here go home</a></div>

[/code]

然后是删除新闻,这里只用一个关键语句,id是用户提交的id号,这个id是在页面显示的时候链接上的:
[code]
exec="delete * from news where id="&request.querystring("id")
conn.execute exec
<meta http-equiv="refresh" content="2;URL=index.asp">

<div align="center"> delete this data succeed
</div>

<p>&nbsp;</p>
<div align="center">
<a href="index.asp">click here go home</a></div>

[/code]

现在我们可以看到2个操作都有id这个参数,怎么的来的呢?
  在首页循环显示页面的地方,如果是管理员,显示编辑和删除的链接
[code]
<%If Session("szd_admin")="True" Then%>
<a href="del.asp?id=<%=rs("id")%>"
onClick="{if(confirm('are you sure del this data?'))
'这是一个js控制的确认操作的过程,很有用的。相关请查confirm的用法
{return true;}return false;}">delete</a>&nbsp

<a href="edit.asp?id=<%=rs("id")%>">edit</a>
<%End If%>

[/code]

上面的edit.asp文件表单和添加新闻没什么2样,只是sql语句上多了一条查询的条件,查找用户提交的新闻编号:
[code]exec="select * from news where id="&request.querystring("id")
set rs=server.createobject("adodb.recordset")
rs.open exec,conn
[/code]
还有,表单的初始值要变为原先当前的数据库数据,这样利于编辑
[code] 新闻标题:
    <input name="title" type="text" id="title"
value="<%=rs("szd_title").value%>">
   
    新闻内容:<textarea name="content" id="content"
cols=70% rows=8><%=rs("szd_content").value%></textarea>[/code]
关键不要忘了id参数,这是链接提交页面的关键,设置为隐藏
[code] <input name="id" type="hidden" id="id"
value="<%=request.querystring("id")%>"> [/code]

好了,现在好了,整个过程就是这样的,相关的测试在:
http://www.5do8.com/blueidea/
请先登陆,然后可以看见每条新闻最右面有2个链接,删除和添加新闻的链接,你可以试试。
  现在所有文件我打包了,你可以下载研究:http://www.5do8.com/down/blueidea/xmlaspaccess.rar
刚看了一下,所有文件才27k,爽!

明天还要考英语,想起就麻烦呀。  呵呵,待续ing。


[菜鸟篇 XML+asp+access]做的新闻系统教程

[b][color=red]这一节我们专门说一下ubb的用法和实例;[/color] [/b]

现在英语考完了,可以松口气了,哈哈哈,好了,继续说吧!

下面是我的体会,不知在理论上对不对,反正在实际中好用。

页面处理的话,提交的新闻默认支持的是html的格式,这就是说,任何有html标签的东东都会被执行,在一般情况下,这点很糟,因为js也会被执行掉,严重的破坏了可视性。我们必须要对输出进行处理,当然代码的处理最后结果还是在本事上转换为html,注意,这是在数据层传输的,在页面处理的前台,不能让浏览器直接看到html标签,那会被转换掉的,这里就要用ubb代换掉html,浏览器虽然不认识,但是如果我们在后台悄悄的告诉浏览器,这是一个什么标签,怎么转换为html,它还是会接受的。现在关键的技术是在于如何把html转换为ubb,答案是正则,正则就是查找匹配,(\[b\])(.[^\[]*)(\[\/b\]),这是转换加粗的用法,详细的请理论请访问:    http://bbs.blueidea.com/viewthread.php?tid=303249

这里详细讲了正则在ubb的用法,我们这一节主要讲怎么插入,怎么使用,我也不罗嗦了[其实正则我也不是太明白],直接讲思路:
页面添加的时候,为了让用户输入方便,可以用js代码定义一些edit菜单:
[code]<IMG onclick=Cbold() alt=粗体
      src="Images/Ubbpic/bold.gif" border=0>[/code]
意思就是说当用户点击这个图片的时候,发生 onclick=Cbold() 事件:
[code]function Cbold() {
fontbegin="[B]";
fontend="[/B]";
fontchuli();
[/code]
其他的全部相似的,这里包含的js代码是

[html]
var Quote = 0;
var Bold  = 0;
var Italic = 0;
var Underline = 0;
var Code = 0;
var Center = 0;
var Strike = 0;
var Sound = 0;
var Swf = 0;
var Ra = 0;
var Rm = 0;
var Marquee = 0;
var Fly = 0;
var fanzi=0;
var text_enter_url      = "请输入连接网址";
var text_enter_txt      = "请输入连接说明";
var text_enter_image    = "请输入图片网址";
var text_enter_sound    = "请输入声音文件网址";
var text_enter_swf      = "请输入FLASH动画网址";
var text_enter_ra      = "请输入Real音乐网址";
var text_enter_rm      = "请输入Real影片网址";
var text_enter_wmv      = "请输入Media影片网址";
var text_enter_wma      = "请输入Media音乐网址";
var text_enter_mov      = "请输入QuickTime音乐网址";
var text_enter_sw      = "请输入shockwave音乐网址";
var text_enter_email    = "请输入邮件网址";
var error_no_url        = "您必须输入网址";
var error_no_txt        = "您必须连接说明";
var error_no_title      = "您必须输入首页标题";
var error_no_email      = "您必须输入邮件网址";
var error_no_gset       = "必须正确按照各式输入!";
var error_no_gtxt       = "必须输入文字!";
var text_enter_guang1   = "文字的长度、颜色和边界大小";
var text_enter_guang2   = "要产生效果的文字!";
function commentWrite(NewCode) {
document.Post.Content.value+=NewCode;
document.Post.Content.focus();
return;
}
function storeCaret(text) {
        if (text.createTextRange) {
                text.caretPos = document.selection.createRange().duplicate();
        }
        if(event.ctrlKey && window.event.keyCode==13){i++;if (i>1) {alert('帖子正在发出,请耐心等待!');return false;}this.document.form.submit();}
}
function AddText(text) {
        if (document.Post.Content.createTextRange && document.Post.Content.caretPos) {      
                var caretPos = document.Post.Content.caretPos;      
                caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ?
                text + ' ' : text;
        }
        else document.Post.Content.value += text;
        document.Post.Content.focus(caretPos);
}
function inputs(str)
{
AddText(str);
}
function Curl() {
var FoundErrors = '';
var enterURL   = prompt(text_enter_url, "http://");
var enterTxT   = prompt(text_enter_txt, enterURL);
if (!enterURL)    {
FoundErrors += "\n" + error_no_url;
}
if (!enterTxT)    {
FoundErrors += "\n" + error_no_txt;
}
if (FoundErrors)  {
alert("错误!"+FoundErrors);
return;
}
var ToAdd = "[URL="+enterURL+"]"+enterTxT+"[/URL]";
document.Post.Content.value+=ToAdd;
document.Post.Content.focus();
}
function Cimage() {
var FoundErrors = '';
var enterURL   = prompt(text_enter_image, "http://");
if (!enterURL) {
FoundErrors += "\n" + error_no_url;
}
if (FoundErrors) {
alert("错误!"+FoundErrors);
return;
}
var ToAdd = "[IMG]"+enterURL+"[/IMG]";
document.Post.Content.value+=ToAdd;
document.Post.Content.focus();
}
function Cemail() {
var emailAddress = prompt(text_enter_email,"");
if (!emailAddress) { alert(error_no_email); return; }
var ToAdd = "[EMAIL]"+emailAddress+"[/EMAIL]";
commentWrite(ToAdd);
}
function Ccode() {
if (Code == 0) {
ToAdd = "{code2}";
document.form.code.value = " 代码 ";
Code = 0;
}
commentWrite(ToAdd);
}
function Cquote() {
fontbegin="[QUOTE]";
fontend="[/QUOTE]";
fontchuli();
}
function Cbold() {
fontbegin="[B]";
fontend="[/B]";
fontchuli();
}
function Citalic() {
fontbegin="[I]";
fontend="[/I]";
fontchuli();
}
function Cunder() {
fontbegin="[U]";
fontend="[/U]";
fontchuli();
}
function Ccenter() {
fontbegin="[center]";
fontend="[/center]";
fontchuli();
}
function Cstrike() {
fontbegin="[strike]";
fontend="[/strike]";
fontchuli();
}
function Csound() {
var FoundErrors = '';
var enterURL   = prompt(text_enter_sound, "http://");
if (!enterURL) {
FoundErrors += "\n" + error_no_url;
}
if (FoundErrors) {
alert("错误!"+FoundErrors);
return;
}
var ToAdd = "[SOUND]"+enterURL+"[/SOUND]";
document.Post.Content.value+=ToAdd;
document.Post.Content.focus();
}

function Cswf() {
var FoundErrors = '';
var enterURL   = prompt(text_enter_swf, "http://");
if (!enterURL) {
FoundErrors += "\n" + error_no_url;
}
if (FoundErrors) {
alert("错误!"+FoundErrors);
return;
}
var ToAdd = "[FLASH]"+enterURL+"[/FLASH]";
document.Post.Content.value+=ToAdd;
document.Post.Content.focus();
}
function Cra() {
var FoundErrors = '';
var enterURL   = prompt(text_enter_ra, "http://");
if (!enterURL) {
FoundErrors += "\n" + error_no_url;
}
if (FoundErrors) {
alert("错误!"+FoundErrors);
return;
}
var ToAdd = "[RA]"+enterURL+"[/RA]";
document.Post.Content.value+=ToAdd;
document.Post.Content.focus();
}
function Crm() {
var FoundErrors = '';
var enterURL   = prompt(text_enter_rm, "http://");
if (!enterURL) {
FoundErrors += "\n" + error_no_url;
}
if (FoundErrors) {
alert("错误!"+FoundErrors);
return;
}
var ToAdd = "[RM=500,350]"+enterURL+"[/RM]";
document.Post.Content.value+=ToAdd;
document.Post.Content.focus();
}
function Cwmv() {
var FoundErrors = '';
var enterURL   = prompt(text_enter_wmv, "http://");
if (!enterURL) {
FoundErrors += "\n" + error_no_url;
}
if (FoundErrors) {
alert("错误!"+FoundErrors);
return;
}
var ToAdd = "[MP=500,350]"+enterURL+"[/MP]";
document.Post.Content.value+=ToAdd;
document.Post.Content.focus();
}

function Cfanzi() {
fontbegin="[xray]";
fontend="[/xray]";
fontchuli();
}

function Cwma() {
var FoundErrors = '';
var enterURL   = prompt(text_enter_wma, "http://");
if (!enterURL) {
FoundErrors += "\n" + error_no_url;
}
if (FoundErrors) {
alert("错误!"+FoundErrors);
return;
}
var ToAdd = "[wma]"+enterURL+"[/wma]";
document.Post.Content.value+=ToAdd;
document.Post.Content.focus();
}
function Cmov() {
var FoundErrors = '';
var enterURL   = prompt(text_enter_mov, "http://");
if (!enterURL) {
FoundErrors += "\n" + error_no_url;
}
if (FoundErrors) {
alert("错误!"+FoundErrors);
return;
}
var ToAdd = "[QT=500,350]"+enterURL+"[/QT]";
document.Post.Content.value+=ToAdd;
document.Post.Content.focus();
}
function Cdir() {
var FoundErrors = '';
var enterURL   = prompt(text_enter_sw, "http://");
if (!enterURL) {
FoundErrors += "\n" + error_no_url;
}
if (FoundErrors) {
alert("错误!"+FoundErrors);
return;
}
var ToAdd = "[DIR=500,350]"+enterURL+"[/DIR]";
document.Post.Content.value+=ToAdd;
document.Post.Content.focus();
}
function Cmarquee() {
fontbegin="[move]";
fontend="[/move]";
fontchuli();
}
function Cfly() {
fontbegin="[fly]";
fontend="[/fly]";
fontchuli();
}

function paste(text) {
        if (opener.document.Post.Content.createTextRange && opener.document.Post.Content.caretPos) {      
                var caretPos = opener.document.Post.Content.caretPos;      
                caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ?
                text + ' ' : text;
        }
        else opener.document.Post.Content.value += text;
        opener.document.Post.Content.focus(caretPos);
}

function showsize(size){
fontbegin="[size="+size+"]";
fontend="[/size]";
fontchuli();
}

function showfont(font){
fontbegin="[face="+font+"]";
fontend="[/face]";
fontchuli();
}

function showcolor(color){
fontbegin="[color="+color+"]";
fontend="[/color]";
fontchuli();
}

function fontchuli(){
if ((document.selection)&&(document.selection.type == "Text")) {
var range = document.selection.createRange();
var ch_text=range.text;
range.text = fontbegin + ch_text + fontend;
}
else {
document.Post.Content.value=fontbegin+document.Post.Content.value+fontend;
document.Post.Content.focus();
}
}

function Cguang() {
var FoundErrors = '';
var enterSET   = prompt(text_enter_guang1, "255,red,2");
var enterTxT   = prompt(text_enter_guang2, "文字");
if (!enterSET)    {
FoundErrors += "\n" + error_no_gset;
}
if (!enterTxT)    {
FoundErrors += "\n" + error_no_gtxt;
}
if (FoundErrors)  {
alert("错误!"+FoundErrors);
return;
}
var ToAdd = "[glow="+enterSET+"]"+enterTxT+"[/glow]";
document.Post.Content.value+=ToAdd;
document.Post.Content.focus();
}

function Cying() {
var FoundErrors = '';
var enterSET   = prompt(text_enter_guang1, "255,blue,1");
var enterTxT   = prompt(text_enter_guang2, "文字");
if (!enterSET)    {
FoundErrors += "\n" + error_no_gset;
}
if (!enterTxT)    {
FoundErrors += "\n" + error_no_gtxt;
}
if (FoundErrors)  {
alert("错误!"+FoundErrors);
return;
}
var ToAdd = "[SHADOW="+enterSET+"]"+enterTxT+"[/SHADOW]";
document.Post.Content.value+=ToAdd;
document.Post.Content.focus();
}

ie = (document.all)? true:false
if (ie){
function ctlent(eventobject){if(event.ctrlKey && window.event.keyCode==13){this.document.Post.submit();}}
}
function DoTitle(addTitle) {
var revisedTitle;
var currentTitle = document.Post.subject.value;
revisedTitle = currentTitle+addTitle;
document.Post.subject.value=revisedTitle;
document.Post.subject.focus();
return; }

function insertsmilie(smilieface){

        document.Post.Content.value+=smilieface;
}

[/html]


这个页面包含到添加信息的表单前面,
[code]Function HTMLEncode(Str)
if not isnull(Str) then
Str = replace(Str, ">", "&gt;")
Str = replace(Str, "<", "&lt;")
Str = Replace(Str, CHR(32), "&nbsp;")
Str = Replace(Str, CHR(9), "&nbsp;")
Str = Replace(Str, CHR(34), "&quot;")
Str = Replace(Str, CHR(39), "&#39;")
Str = Replace(Str, CHR(10) & CHR(10), "</P><P> ")
Str = Replace(Str, CHR(10), "<BR> ")
HTMLEncode = Str
end if
End Function
[/code]

而在页面输入信息的内容写为:
[html] <TABLE>
          <TBODY>
            <TR>
              <TD vAlign=top>
                  <TABLE class=Tborder border=0 align=center cellPadding=5 cellSpacing=1>
                  <TBODY>
                  
                    <TR>
                      <TD height=2>内 容::</TD>
     
                    </TR>
                    <TR>
                      <TD> <P><font>
                          </font></P>
                      <TD  colSpan=2><IMG onclick=Cbold() alt=粗体
      src="Images/Ubbpic/bold.gif" border=0><IMG onclick=Citalic() alt=斜体 src="Images/Ubbpic/italicize.gif" border=0><IMG onclick=Cunder() alt=下划线
      src="Images/Ubbpic/underline.gif" border=0><IMG
      onclick=Ccenter() alt=居中 src="Images/Ubbpic/center.gif" border=0><IMG onclick=Curl() alt=超级连接
      src="Images/Ubbpic/url1.gif" border=0><IMG src="Images/Ubbpic/email1.gif" alt=Email连接 width="23" height="22" border=0 onclick=Cemail()><IMG onclick=Cimage() alt=图片 src="Images/Ubbpic/image.gif" border=0><IMG onclick=Cswf() alt=Flash图片
      src="Images/Ubbpic/swf.gif" border=0><IMG onclick=Cdir() alt=Shockwave文件 src="Images/Ubbpic/Shockwave.gif"
      border=0><IMG onclick=Crm() alt=realplay视频文件
      src="Images/Ubbpic/rm.gif" border=0><IMG onclick=Cwmv() alt="Media Player视频文件" src="Images/Ubbpic/mp.gif"
      border=0><IMG onclick=Cmov() alt=QuickTime视频文件
      src="Images/Ubbpic/qt.gif" border=0><IMG onclick=Cquote() alt=引用 src="Images/Ubbpic/quote1.gif" border=0><IMG
      onclick=Cfly() alt=飞行字 src="Images/Ubbpic/fly.gif"
      border=0><IMG onclick=Cmarquee() alt=移动字
      src="Images/Ubbpic/move.gif" border=0><IMG onclick=Cguang() alt=发光字 src="Images/Ubbpic/glow.gif" border=0><IMG
      onclick=Cying() alt=阴影字 src="Images/Ubbpic/shadow.gif" border=0> <BR>
                        字体:
                        <SELECT onchange="if(this.options[this.selectedIndex].value!=''){showfont(this.options[this.selectedIndex].value);this.options[0].selected=true;}else {this.selectedIndex=0;}"
      name=font>
                          <OPTION value=宋体 selected>宋体</OPTION>
                          <OPTION
        value=楷体_GB2312>楷体</OPTION>
                          <OPTION value=新宋体>新宋体</OPTION>
                          <OPTION
        value=黑体>黑体</OPTION>
                          <OPTION value=隶书>隶书</OPTION>
                          <OPTION
        value="Andale Mono">Andale Mono</OPTION>
                          <OPTION
        value=Arial>Arial</OPTION>
                          <OPTION value="Arial Black">Arial Black</OPTION>
                          <OPTION value="Book Antiqua">Book Antiqua</OPTION>
                          <OPTION value="Century Gothic">Century Gothic</OPTION>
                          <OPTION
        value="Comic Sans MS">Comic Sans MS</OPTION>
                          <OPTION
        value="Courier New">Courier New</OPTION>
                          <OPTION
        value=Georgia>Georgia</OPTION>
                          <OPTION value=Impact>Impact</OPTION>
                          <OPTION value=Tahoma>Tahoma</OPTION>
                          <OPTION
        value="Times New Roman">Times New Roman</OPTION>
                          <OPTION
        value="Trebuchet MS">Trebuchet MS</OPTION>
                          <OPTION
        value="Script MT Bold">Script MT Bold</OPTION>
                          <OPTION
        value=Stencil>Stencil</OPTION>
                          <OPTION value=Verdana>Verdana</OPTION>
                          <OPTION value="Lucida Console">Lucida Console</OPTION>
                        </SELECT> &nbsp;&nbsp;&nbsp;&nbsp; 字体大小
                        <SELECT
      onchange="if(this.options[this.selectedIndex].value!=''){showsize(this.options[this.selectedIndex].value);this.options[0].selected=true;}else {this.selectedIndex=0;}"
      name=size>
                          <OPTION value=1>1</OPTION>
                          <OPTION value=2>2</OPTION>
                          <OPTION
        value=3 selected>3</OPTION>
                          <OPTION value=4>4</OPTION>
                        </SELECT> &nbsp;&nbsp;&nbsp;<FONT face=宋体 color=#333333>颜色:</FONT>
                        <SELECT
      onchange="if(this.options[this.selectedIndex].value!=''){showcolor(this.options[this.selectedIndex].value);this.options[0].selected=true;}else {this.selectedIndex=0;}"
      name=color>
                          <OPTION style="COLOR: #f0f8ff; BACKGROUND-COLOR: #f0f8ff"
        value=#F0F8FF>#F0F8FF</OPTION>
                          <OPTION
        style="COLOR: #faebd7; BACKGROUND-COLOR: #faebd7"
        value=#FAEBD7>#FAEBD7</OPTION>
                          <OPTION
        style="COLOR: #00ffff; BACKGROUND-COLOR: #00ffff"
        value=#00FFFF>#00FFFF</OPTION>
                          <OPTION
        style="COLOR: #7fffd4; BACKGROUND-COLOR: #7fffd4"
        value=#7FFFD4>#7FFFD4</OPTION>
                          <OPTION
        style="COLOR: #f0ffff; BACKGROUND-COLOR: #f0ffff"
        value=#F0FFFF>#F0FFFF</OPTION>
                          <OPTION
        style="COLOR: #f5f5dc; BACKGROUND-COLOR: #f5f5dc"
        value=#F5F5DC>#F5F5DC</OPTION>
                          <OPTION
        style="COLOR: #ffe4c4; BACKGROUND-COLOR: #ffe4c4"
        value=#FFE4C4>#FFE4C4</OPTION>
                          <OPTION
        style="COLOR: #000000; BACKGROUND-COLOR: #000000"
        value=#000000>#000000</OPTION>
                          <OPTION
        style="COLOR: #ffebcd; BACKGROUND-COLOR: #ffebcd"
        value=#FFEBCD>#FFEBCD</OPTION>
                          <OPTION
        style="COLOR: #0000ff; BACKGROUND-COLOR: #0000ff"
        value=#0000FF>#0000FF</OPTION>
                          <OPTION
        style="COLOR: #8a2be2; BACKGROUND-COLOR: #8a2be2"
        value=#8A2BE2>#8A2BE2</OPTION>
                          <OPTION
        style="COLOR: #a52a2a; BACKGROUND-COLOR: #a52a2a"
        value=#A52A2A>#A52A2A</OPTION>
                          <OPTION
        style="COLOR: #deb887; BACKGROUND-COLOR: #deb887"
        value=#DEB887>#DEB887</OPTION>
                          <OPTION
        style="COLOR: #5f9ea0; BACKGROUND-COLOR: #5f9ea0"
        value=#5F9EA0>#5F9EA0</OPTION>
                          <OPTION
        style="COLOR: #7fff00; BACKGROUND-COLOR: #7fff00"
        value=#7FFF00>#7FFF00</OPTION>
                          <OPTION
        style="COLOR: #d2691e; BACKGROUND-COLOR: #d2691e"
        value=#D2691E>#D2691E</OPTION>
                          <OPTION
        style="COLOR: #ff7f50; BACKGROUND-COLOR: #ff7f50"
        value=#FF7F50>#FF7F50</OPTION>
                          <OPTION
        style="COLOR: #6495ed; BACKGROUND-COLOR: #6495ed" value=#6495ED
        selected>#6495ED</OPTION>
                          <OPTION
        style="COLOR: #fff8dc; BACKGROUND-COLOR: #fff8dc"
        value=#FFF8DC>#FFF8DC</OPTION>
                          <OPTION
        style="COLOR: #dc143c; BACKGROUND-COLOR: #dc143c"
        value=#DC143C>#DC143C</OPTION>
                          <OPTION
        style="COLOR: #00ffff; BACKGROUND-COLOR: #00ffff"
        value=#00FFFF>#00FFFF</OPTION>
                          <OPTION
        style="COLOR: #00008b; BACKGROUND-COLOR: #00008b"
        value=#00008B>#00008B</OPTION>
                          <OPTION
        style="COLOR: #008b8b; BACKGROUND-COLOR: #008b8b"
        value=#008B8B>#008B8B</OPTION>
                          <OPTION
        style="COLOR: #b8860b; BACKGROUND-COLOR: #b8860b"
        value=#B8860B>#B8860B</OPTION>
                          <OPTION
        style="COLOR: #a9a9a9; BACKGROUND-COLOR: #a9a9a9"
        value=#A9A9A9>#A9A9A9</OPTION>
                          <OPTION
        style="COLOR: #006400; BACKGROUND-COLOR: #006400"
        value=#006400>#006400</OPTION>
                          <OPTION
        style="COLOR: #bdb76b; BACKGROUND-COLOR: #bdb76b"
        value=#BDB76B>#BDB76B</OPTION>
                          <OPTION
        style="COLOR: #8b008b; BACKGROUND-COLOR: #8b008b"
        value=#8B008B>#8B008B</OPTION>
                          <OPTION
        style="COLOR: #556b2f; BACKGROUND-COLOR: #556b2f"
        value=#556B2F>#556B2F</OPTION>
                          <OPTION
        style="COLOR: #ff8c00; BACKGROUND-COLOR: #ff8c00"