小妹以前一般用session暂存用户信息,没用过cookie,所以对此几乎一窍不通,但最近正在把asp版改为asp.net的,其中有用户在某段时间内(比如一个月)自动登录的功能,session肯定是不能用了,原asp版是用cookie实现的,折腾了一上午未果,不知从何下手,烦哪位大虾指点一二。(代码比较长,劳烦大家了:)具体说来,登陆界面是这样的(asp):
<!--#include file="conn.asp"-->
<!--#include file="chkuser.asp"-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>论坛登陆</title>
<link href="FORUM.CSS" rel="stylesheet" type="text/css">
</head>
<body>
<!--#include file="top.asp"-->
<table cellpadding=0 cellspacing=0 border=0 width="100%"  align=center>
<form action="chklogin.asp" method="post" ID="Form1"> 
    <tr >    
        <td>
        <table width="100%"  border=1 borderColor=#0099cc cellPadding=6 cellSpacing=0 ID="Table3">
          <tr height=30 bgColor=#99ccff> 
            <td valign=middle colspan=2 align=center>
              <b>请输入您的用户名、密码登陆</b></td>
          </tr>
          <tr height=30> 
            <td width="30%" valign=middle >请输入您的用户名</td>
            <td  valign=middle><INPUT name=username type=text> 
              &nbsp; <a href="reg.asp">没有注册?</a></td>
          </tr>
          <tr height=30> 
            <td  valign=middle>请输入您的密码</td>
            <td valign=middle><INPUT name=password type=password> 
              &nbsp; <a href="lostpass.asp">忘记密码?</a></td>
          </tr>
  <tr>
<td  valign=top width=30%><b>Cookie 选项</b><BR> 请选择你的 Cookie 保存时间,下次访问可以方便输入。</td>
 <td  valign=middle>
                <input type="radio" name="CookieDate" value="0" checked>不保存,关闭浏览器就失效<br>
                <input type="radio" name="CookieDate" value="1">保存一天<br>
                <input type="radio" name="CookieDate" value="2">保存一月<br>
                <input type="radio" name="CookieDate" value="3">保存一年<br>
                </td></tr>
          <input type=hidden name=comeurl value="<%=Request.ServerVariables("HTTP_REFERER")%>">
          <tr height=30> 
            <td  valign=middle colspan=2 align=center><input type=submit name="submit" value="登 陆"></td>
          </tr>
        </table></td>
        </tr>
</form>
</table>
<!--#include file="footer.asp"-->而登陆后转入的页面(form action="chklogin.asp)即chklogin.asp是这样的:
<!--#include file="conn.asp"-->
<!--#include file="inc/char.asp"-->
<!--#include file="chkuser.asp"-->
<!--#include file="md5.asp"-->
<html>
<head>
<%
dim rs
dim sql
dim UserIP
dim username
dim userclass
dim password
dim article sub chkuser()
UserIP=Request.ServerVariables("REMOTE_ADDR")
if request("username")="" then
errmsg=errmsg+"<br>"+"<li>请输入您的用户名。"
founderr=true
else
username=trim(replace(request("username"),"'",""))
end if
if request("password")="" then
errmsg=errmsg+"<br>"+"<li>请输入您的密码。"
founderr=true
else
password=md5(trim(replace(request("password"),"'","")))
end if
'判断更新cookies目录
cookies_path_s=split(Request.ServerVariables("PATH_INFO"),"/")
cookies_path_d=ubound(cookies_path_s)
cookies_path="/"
for i=1 to cookies_path_d-1
if not (cookies_path_s(i)="upload" or cookies_path_s(i)="admin") then  cookies_path=cookies_path&cookies_path_s(i)&"/"
next
if cookiepath<>cookies_path then
cookiepath=cookies_path
conn.execute("update config set cookiepath='"&cookiepath&"'")
end if usercookies=request("CookieDate")
if chkuserlogin(username,password,usercookies,1)=false then
errmsg=errmsg+"<br>"+"<li>您的用户名并不存在,或者您的密码错误。"
founderr=true
end if
end sub sub activeuser()
dim membername,memberword,memberclass
membername=request.cookies("rmsk")("username")
memberword=request.cookies("rmsk")("password")
memberclass=request.cookies("rmsk")("userclass")
'statuserid=replace(Request.ServerVariables("REMOTE_HOST"),".","")
end sub

call chkuser()
if founderr then
call writeHead()
call error()
else
call success()
end if
sub success()
%>
<%if instr(request("comeurl"),"regPost.asp")>0 or instr(request("comeurl"),"login.asp")>0 or instr(request("comeurl"),"chklogin.asp")>0 or trim(request("comeurl"))="" then%>
<meta HTTP-EQUIV=REFRESH CONTENT='4; URL=index.asp'>
<%comeurl="index.asp"%>
<%else%>
<meta HTTP-EQUIV=REFRESH CONTENT='4; URL=<%=request("comeurl")%>'>
<%comeurl=request("comeurl")%>
<%end if%>
<%call writeHead()%>
<table cellpadding=0 cellspacing=0 border=0 width=100%  align=center>
  <tr>
     <td>
      <table width="100%"  border=1 borderColor=#0099cc cellPadding=6 cellSpacing=0 ID="Table3">
     <tr bgColor=#99ccff height=30>
      <td ><b>状态:您已经登录成功</b></td>
    </tr>
     <tr><td ><br><ul><li><a href="<%=comeurl%>">进入讨论区</a></li></ul></td></tr>
  </table>   
  </td>
</tr>
</table>
<%
end sub
%>
<%sub writeHead() %>
<title>登陆</title>
<link href="FORUM.CSS" rel="stylesheet" type="text/css">
<style>
TABLE {BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 1px; }
TD {BORDER-RIGHT: 0px; BORDER-TOP: 0px;  }
</style>
</head>
<body>
<!--#include file="top.asp"-->
<%end sub%>
<!-- #include file="footer.asp" -->我的主要问题集中于cookie,就是在.net中它应该在哪里声明,如何声明,声明完后如何向它写入保存修改信息等,然后在别的页面如何调用(比如在某页面顶端显示“欢迎您,某某”)……非常感谢!
如果能详细说一下上述两个页面如何改版(只是cookie方面的,其他的我自己能搞定)更好!!

解决方案 »

  1.   

    补充一点:那两个网页的代码我也没太看懂,不知能否顺便简单解释一下。
    我用浏览器打不开,只好研究代码,光看代码还是不行,不形象,而且以前很少接触asp,所以看不懂。
      

  2.   

    可是Session不是浏览器一关闭就没用了吗?我想把用户信息保存一个月啊
      

  3.   

    ASP.NET里面可以用COOKIES啊,直接去读取就行了。
    写:Response.Cookies.Add("key",value);
    读:Request.Cookies["key"].Value;
      

  4.   

    谁能给我一个自动登录的例子,比如csdn里面的两周内不用登录(虽然我至今也没有成功用过这一功能),谢啦:)
      

  5.   

    http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfSystemWebHttpResponseClassCookiesTopic.asp
      

  6.   

    你问错版面了。
    cookies在写前可以设置它的有效日期,比如动网什么的代码里就有了。仔细看看。
      

  7.   

    谨慎使用,稍有不慎就变成一个安全漏洞。可以提供一思路:
    cookie存放帐号和加密的值,每次权限验证时从cookie里读出来判断:加密(账号)==加密值注意,你的加密函数千万不要泄露,否则就是新的漏洞请在加密上多考虑一下,是不是有更好的方法