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


    

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

[asp]cookie应用实例

前几天就打算写个cookie的实例,已经做好了好几天了,就是没有写上来,不写上来感觉有点浪费,哈哈,现在贴上来,关于理论的东西,咱就不废话了,哈哈哈。直接进入实例:
[b]<form name="Login" action="loginaction.asp" method="post">


用户名称
<input name="User"  type="text"  id="User" size="23" maxlength="20">
用户密码:<input name="Password"  type="password" id="Password" size="23" maxlength="20">
     Cookie选项:<select name=CookieDate>
<option selected value=0>不保存</option>
<option value=1>保存一天</option>
<option value=2>保存一月</option>
<option value=3>保存一年</option>
</select>

              <input   type="submit" name="Submit" value=" 确认 "> &nbsp; <input name="reset" type="reset"  id="reset" value=" 清除 ">

</form>
[/b]
这是登陆页面,数据库设计字段【szd_user】用户名【szd_password】密码【szd_lasttime】最后一次登陆时间【szd_cookie】cookie保存的时间【szd_jibie】用户的级别
登陆处理的页面
当验证成功的时候[code]
rs("szd_last_time")=now()
rs("szd_cookie")=cookiedate

        rs.update
        jibie=rs("szd_jibie")
call SaveCookie_5do8()
sub SaveCookie_5do8()
Response.Cookies("5do8")("User")=user
Response.Cookies("5do8")("Password") = PassWord
Response.Cookies("5do8")("CookieDate") = CookieDate
select case CookieDate
case 0
'not save
case 1
Response.Cookies("5do8").Expires=Date+1
case 2
Response.Cookies("5do8").Expires=Date+31
case 3
        Response.Cookies("5do8").Expires=Date+365
        end select
end sub
[/code]
这是关键,保存了cookie。


保存结束。 验证用户是不是登陆的时候,可以专门写一个function,容易调用嘛。
[code]
'**************************************************
'函数名:CheckUserLogined
'作  用:检查用户是否登录
'参  数:无
'返回值:True ----已经登录
'        False ---没有登录
'**************************************************
function CheckUserLogined()
dim Logined,Password,rsLogin,sqlLogin
Logined=True
User=Request.Cookies("5do8")("User")
Password=Request.Cookies("5do8")("Password")
'上面是获取cookie
        if User="" then
Logined=False
end if
if Password="" then
Logined=False
        end if
        if User="" then
Logined=False
jibie=9999
        end if
if Logined=True then
user=replace(trim(user),"'","")
password=replace(trim(password),"'","")
               
set rsLogin=server.createobject("adodb.recordset")

sqlLogin="select * from  admin where szd_user ='" & user & "' and szd_password ='" & password &"'"
rsLogin.open sqlLogin,Conn,1,1
        if rsLogin.bof and rsLogin.eof then
Logined=False
        else
        if password<>rsLogin("szd_password") then
        Logined=False
end if
User=rsLogin("szd_user")
                       
       
if rsLogin("szd_cookie")=1 then
ValidDays=rsLogin("szd_session")
elseif rsLogin("szd_cookie")=2 then
ValidDays=rsLogin("szd_session")*30
elseif rsLogin("szd_cookie")=3 then
ValidDays=rsLogin("szd_session")*365
end if
ValidDays=ValidDays-DateDiff("D",
        rsLogin("szd_last_time"),now())
end if
rsLogin.close
set rsLogin=nothing
end if
CheckUserLogined=Logined
end function

'**************************************************
'函数名:jibie
'作  用:检查用户级别
'参  数:LevelNum-----要检查的级别值
'返回值:级别名称
'**************************************************
function jibieok(jibie)
select case jibie
case 9999
jibie="游客"
        case 1
jibie="普通村名"
        case 2
jibie="勤劳村民"
        case 3
jibie="高级村民"
        case 4
jibie="老农"
        end select
end function
[/code]
这里有必要搞一个sub显示用户登录表单。
[html]
'==================================================
'过程名:ShowUserLogin
'作  用:显示用户登录表单
'参  数:无
'==================================================
sub ShowUserLogin()
        dim strLogin
        if CheckUserLogined()=False then
            strLogin="<table align='center' width='100%' border='0' cellspacing='0' cellpadding='0'>"
                strLogin=strLogin &  "<form action='loginaction.asp' method='post' name='UserLogin' onSubmit='return CheckForm();'>"
        strLogin=strLogin & "<tr><td height='25' align='right'>用户名:<td height='25'><input name='User' type='text' id='User' size='16' maxlength='20'></td>"
        strLogin=strLogin & "<td height='25' align='right'>密码:</td><td height='25'><input name='Password' type='password' id='Password' size='16' maxlength='20'></td>"
        strLogin=strLogin & "<td height='25' align='right'>cookie保存:</td><td height='25'><select name=CookieDate><option selected value=0>不 保 存</option><option value=1>保 存 一 天</option>"
                strLogin=strLogin & "<option value=2>保 存 一 月</option><option value=3>保 存 一 年</option></select></td>"
                strLogin=strLogin & "<td height='30' colspan='2'><input name='Login' type='submit' id='Login' value=' 登 录 '> <input name='Reset' type='reset' id='Reset' value=' 清 除 '>"
        strLogin=strLogin & "<hr size='1' color='#Cccccc'><a href='User_Reg.asp' target='_blank'>新用户注册</a>&nbsp;<font color='#666666'>|</font>&nbsp;<a href='User_GetPassword.asp'>忘记密码?</a></td>"     
        strLogin=strLogin & "</tr></form></table>"
                response.write strLogin
%>
<script language=javascript>
        function CheckForm()
        {
                if(document.UserLogin.User.value=="")
                {
                        alert("请输入用户名!");
                        document.UserLogin.User.focus();
                        return false;
                }
                if(document.UserLogin.Password.value == "")
                {
                        alert("请输入密码!");
                        document.UserLogin.Password.focus();
                        return false;
                }
        }
</script>
<%

        Else
                response.write "&nbsp;&nbsp;&nbsp;<font color='#666666'>欢迎</font><font color=#000080>" &Request.Cookies("5do8")("User")& "</b></font><font color='#666666'>,</font>"

end if       
                        if ValidDays>0 then
                                response.write " <b><font color=blue>" & ValidDays & "<a href='logout.asp'>退出</a></font>"
                                if ValidDays<=10 then
                                end if
                else        response.write " <b><font color=red>" & ValidDays & "<a href='logout.asp'>退出</a></font>"
       
                end if
       

end sub
%>[/html]
哈哈哈,现在好了,只需要在你的cookie页面上加上
[code]
<!--#include file="function.asp"-->
<% call ShowUserLogin() %>
[/code]
就可以了。seesion比cookie还容易,详细见我的xhtml+asp+access教程。

在这里测试:[url=http://www.5do8.com/cookie]http://www.5do8.com/cookie/
打包下载这个讲解:http://www.5do8.com/cookie/szd.rar

退出的时候只要清空cookie就好了:
[code]
<%
<%
        Response.Cookies("5do8")("User")=""
        Response.Cookies("5do8")("Password")=""
        Response.Cookies("5do8")("5do8")=""

dim ComeUrl
ComeUrl=trim(request("ComeUrl"))
if ComeUrl="" then
ComeUrl=Request.ServerVariables("HTTP_REFERER")
if ComeUrl="" then ComeUrl="index.asp" end if
end if
Response.Redirect ComeUrl
%>
[/code]

登陆用户名和密码都是00

-----------------------------------------
8.25号老农修正:保存cookie的时候,原先是session的值,放在数据库里面,取出,写入默认值,这样一般用不到,通用的为:
[code] sub SaveCookie_tvillage()
        Response.Cookies("tvillage")("User")=user
        Response.Cookies("tvillage")("Password") = PassWord
        Response.Cookies("tvillage")("jibie") = jibie
        Response.Cookies("tvillage")("CookieDate") = CookieDate
        select case CookieDate
                case 0
                        'not save
                case 1
                           Response.Cookies("tvillage").Expires=Date+1
                case 2
                        Response.Cookies("tvillage").Expires=Date+31
                case 3
                        Response.Cookies("tvillage").Expires=Date+365
        end select
end sub
[/code]

不错,支持原创。

真不错,继续努力,这种无私精神值得我们学习~~~~`楼主好样的~~~~

if rsLogin("szd_cookie")=1 then
ValidDays=rsLogin("szd_session")
elseif rsLogin("szd_cookie")=2 then
ValidDays=rsLogin("szd_session")*30
elseif rsLogin("szd_cookie")=3 then
ValidDays=rsLogin("szd_session")*365
end if

问楼主:这里的szd_session字段你在文中没有提及哦。具体有什么作用?获得的validDays变量有什么用途?它的值是什么?

5do8
不错!
很棒
我转载一下 嘿嘿

看不懂啊 郁闷

建议修改一下,比如这样
Cookie选项:<select name="CookieDate">
<option selected value=0>不保存</option>
<option value="1">保存一天</option>
<option value="30">保存一月</option>
<option value="365">保存一年</option>
</select>

Response.Cookies("5do8").Expires = Date + Request("CookieDate")

还可以




Copyright © 1999-2000 LSLNET.COM. All rights reserved. 蓝森林网站 版权所有。 E-mail : webmaster@lslnet.com