说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

关于cookies的问题, 请教各位了. 很急!!!!!!

编辑:说三道四文库 发布时间:2018-07-19 07:59
HTML文档下载 WORD文档下载 PDF文档下载
在用户登录时把用户的基本信息如:用户名,密码, 真实姓名,所在板块等信息保存在cookies中, 当注销这次登录(清空所有cookies)后再重新登录时问题出现了, 有时能正常登录(正确写入所有信息到cookies中), 但有却不能把信息写入cookies中, 只能写入部份, 如有时能把用户名写入, 但有时却不能,读出用户名的cookies是空的 这是何原因.
郁闷, 为何没人回应??????
客户端禁用了COOKIE
不是禁用了cookie , 我第一次登录能成功, 注销后再登录有时要登录几次才成功,就是因为写cookie时出了问题
代码有没有问题呢?
代码没问题,只是同时写了几个cookies, 如:
登录后
response.cookies("username")="abc"
response.cookies("pass")="????"
response.cookies("truename")="????"
response.cookies("manager")="????"
注销时:
response.cookies("username")=""
response.cookies("pass")=""
response.cookies("truename")=""
response.cookies("manager")=""

这段代码没有问题,肯定是其他的代码出了问题,把整个登录页面的代码贴出来看看。
set rs=server.createobject("adodb.recordset")
sql="select * from User where UserName='" & UserName & "' and password='" &password &"'"
rs.open sql,conn,1,1
'如果有此用户就进入系统
if not rs.eof and not rs.bof then

response.cookies("name")=rs("name")
response.cookies("id")=cstr(rs("autoID1"))
response.cookies("username")=rs("UserName")
response.cookies("dept")=rs("UserDept")
response.cookies("level")=rs("UserLevel")

response.cookies("workrep")=rs("workrep")
response.cookies("workrep1")=rs("workrep1")

response.cookies("user")=rs("user")
response.cookies("user1")=rs("user1")

response.cookies("auditing")=rs("auditing")
response.cookies("workthings")=rs("workthings")
response.cookies("workthings1")=rs("workthings1")
response.cookies("info")=rs("info")
conn.close
set conn=nothing
response.write "<script language='javascript'>" & vbcrlf
response.write "window.open('sendgo.asp','DO','toolbar=no, status=no,menubar=no,resizable=yes, height='+(screen.height-50)+',width='+screen.width+',top=0,left=0');"&vbcrlf
'Response.write "window.opener=null;window.close();" & vbcrlf
response.write "</script>"
response.end
end if
end if
%>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link rel="stylesheet" href="css/css.css" type="text/css">
<meta http-equiv="pragma" content="no-cache">
<script language="JavaScript">
<!--
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
// -->
</script>
</head>
<body bgcolor="#000063" topmargin="0" leftmargin="0">

<div align="center">
  <center>
<table border="0" height="80">
<tr><td height="80"></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="771">
  <tr>
   <td><img src="images/spacer.gif" width="95" height="1" border="0"></td>
   <td><img src="images/spacer.gif" width="294" height="1" border="0"></td>
   <td><img src="images/spacer.gif" width="2" height="1" border="0"></td>
   <td><img src="images/spacer.gif" width="324" height="1" border="0"></td>
   <td><img src="images/spacer.gif" width="56" height="1" border="0"></td>
   <td><img src="images/spacer.gif" width="1" height="1" border="0"></td>
  </tr>

  <tr>
   <td colspan="2" bgcolor="#000063"> </td>
   <td rowspan="7"><img name="fm_r1_c3" src="images/fm_r1_c3.jpg" width="2" height="398" border="0"></td>
   <td colspan="2" bgcolor="#000063"> </td>
   <td><img src="images/spacer.gif" width="1" height="33" border="0"></td>
  </tr>
  <tr>
   <td colspan="2"><img name="fm_r2_c1" src="images/fm_r2_c1.jpg" width="389" height="1" border="0"></td>
   <td colspan="2"><img name="fm_r2_c4" src="images/fm_r2_c4.jpg" width="380" height="1" border="0"></td>
   <td><img src="images/spacer.gif" width="1" height="1" border="0"></td>
  </tr>
  <tr>
   <td rowspan="2" bgcolor="#000063"> </td>
        <td rowspan="2"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="294" height="156">
            <param name=movie value="images/index.swf">
            <param name=quality value=high>
            <embed src="images/index.swf" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="294" height="156">
            </embed> 
          </object></td>
   <td bgcolor="#000063">
    <form method="POST" action="default.asp" name="form1">
      <p align="center"><font color="#FFFFFF">用户名:</font><input type="text" name="Doc_UserName" size="11" style="BACKGROUND: white; BORDER-BOTTOM: RGB(255,255,255) 1px solid; BORDER-LEFT: rgb(255,255,255) 1px solid; BORDER-RIGHT: rgb(255,255,255) 1px solid; BORDER-TOP: rgb(255,255,255) 1px solid; COLOR: #000044; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; FONT-SIZE: 12px; FONT-WEIGHT: normal"><font color="#FFFFFF"><br>
      <br>
      密&nbsp; 码:</font><input type="password" name="password" size="11" style="BACKGROUND: white; BORDER-BOTTOM: RGB(255,255,255) 1px solid; BORDER-LEFT: rgb(255,255,255) 1px solid; BORDER-RIGHT: rgb(255,255,255) 1px solid; BORDER-TOP: rgb(255,255,255) 1px solid; COLOR: #000044; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; FONT-SIZE: 12px; FONT-WEIGHT: normal"></p>
      <p align="center"><input type="submit" value="登录" name="submit" style="height:22"></p>
    </form>
   </td>
   <td rowspan="5"><img name="fm_r3_c5" src="images/fm_r3_c5.jpg" width="56" height="364" border="0"></td>
   <td><img src="images/spacer.gif" width="1" height="130" border="0"></td>
  </tr>
  <tr>
   <td rowspan="4" valign="middle">
    <p align="center"><img name="fm_r4_c4" src="images/fm_r4_c4.jpg" width="324" height="234" border="0"></p>
   </td>
   <td><img src="images/spacer.gif" width="1" height="26" border="0"></td>
  </tr>
  <tr>
   <td colspan="2"><img name="fm_r5_c1" src="images/fm_r5_c1.jpg" width="389" height="2" border="0"></td>
   <td><img src="images/spacer.gif" width="1" height="2" border="0"></td>
  </tr>
  <tr>
   <td colspan="2" bgcolor="#000063"> </td>
   <td><img src="images/spacer.gif" width="1" height="37" border="0"></td>
  </tr>
  <tr>
   <td colspan="2"><img name="fm_r7_c1" src="images/fm_r7_c1.jpg" width="389" height="169" border="0"></td>
   <td><img src="images/spacer.gif" width="1" height="169" border="0"></td>
  </tr>
</table>
  </center>
</div>
</body>
</html>
up
set rs=server.createobject("adodb.recordset")
sql="select * from User where UserName='" & UserName & "' and password='" &password &"'"
rs.open sql,conn,1,1
'如果有此用户就进入系统
if not rs.eof and not rs.bof then
'你先在这里输出各个值看看是否为空
response.write rs("name")
response.write cstr(rs("autoID1"))
…………………………………………
end if
当然不会为空了,不然我第一次登录也不会成功
和你的cookies设置得有效时间有没有关系;
还有就是你的 rs 用完了还没有关掉
rs.Close()
set rs=server.createobject("adodb.recordset")
sql="select * from User where UserName='" & UserName & "' and password='" &password &"'"
rs.open sql,conn,1,1
'如果有此用户就进入系统
if not rs.eof and not rs.bof then

response.cookies("name")=rs("name")
response.cookies("id")=cstr(rs("autoID1"))
response.cookies("username")=rs("UserName")
response.cookies("dept")=rs("UserDept")
response.cookies("level")=rs("UserLevel")

response.cookies("workrep")=rs("workrep")
response.cookies("workrep1")=rs("workrep1")

response.cookies("user")=rs("user")
response.cookies("user1")=rs("user1")

response.cookies("auditing")=rs("auditing")
response.cookies("workthings")=rs("workthings")
response.cookies("workthings1")=rs("workthings1")
response.cookies("info")=rs("info")

         rs.Close()    ?/////////////try ?
         conn.close
set conn=nothing
response.write "<script language='javascript'>" & vbcrlf
response.write "window.open('sendgo.asp','DO','toolbar=no, status=no,menubar=no,resizable=yes, height='+(screen.height-50)+',width='+screen.width+',top=0,left=0');"&vbcrlf
'Response.write "window.opener=null;window.close();" & vbcrlf
response.write "</script>"
response.end
end if
end if

应该不是没关掉rs的原因吧
可能是因为一个页面内的cookies项太多了的原因, 上面贴出的内容中我去掉了几个cookies项, 我重新删除掉几个即少写几个cookies的信息后就行了.
一个页面内最多可以写多少个cookies呢?
浏览器一共只能处理最多300个cookie
每一个cookie必须限制在4KB以内。当一个Cookie超过这个限制时,浏览器会算自动截去超出的部分。
因些,那查看一个你电脑上的有多少个cookie了。

hengxin54(火星)所说的rs.close()也是很关键的
如果rs.close()没有的话,再次调用时出错。默认情况下当超出脚本运行时间后。rs会自动关闭的。rs应晚打开,早关闭!


up
继续讨论一下这个问题
是不是PWS
对COOKIE的支持不好
用IIS
不是PWS, 我用的win2000 server
又没人来看了???
人都说了,是rs.close,你关闭了吗?
rs.Close()
set rs=nothiong
如果不关闭, 我的页面一样不会出错, 根本就不是这个原因.
因为我后面没有调用到这个记录集
还有没有可以继续讨论的必要呢?
算了, 准备结贴
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘