小妹以前一般用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>
<a href="reg.asp">没有注册?</a></td>
</tr>
<tr height=30>
<td valign=middle>请输入您的密码</td>
<td valign=middle><INPUT name=password type=password>
<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方面的,其他的我自己能搞定)更好!!
<!--#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>
<a href="reg.asp">没有注册?</a></td>
</tr>
<tr height=30>
<td valign=middle>请输入您的密码</td>
<td valign=middle><INPUT name=password type=password>
<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方面的,其他的我自己能搞定)更好!!
解决方案 »
- 我vs2012的“同步类视图”功能 没用
- 哪里有好用的asp.net 用户找回密码代码
- C# Soket通信如何获取网页动态信息(如何执行Ajax)
- ?号挂值,数据丢失····
- C#中winsock的问题
- 请问rose的最新版本号
- 新建工程,拖入RichTextBox,运行,出错!
- 创建word对象时,拒绝访问,怎么解决?
- 连载3:《用C#实现数据结构与算法》--翻译Michael McMillan写的《Data Structures and Algorithms Using C#》
- 请问C#中如何隐藏其中一个tabpage页
- 求教,如何采用。NET技术把一个EXE文件包装成B/S服务方式。
- 请问一个关于Access数据库链接的问题
我用浏览器打不开,只好研究代码,光看代码还是不行,不形象,而且以前很少接触asp,所以看不懂。
写:Response.Cookies.Add("key",value);
读:Request.Cookies["key"].Value;
cookies在写前可以设置它的有效日期,比如动网什么的代码里就有了。仔细看看。
cookie存放帐号和加密的值,每次权限验证时从cookie里读出来判断:加密(账号)==加密值注意,你的加密函数千万不要泄露,否则就是新的漏洞请在加密上多考虑一下,是不是有更好的方法