Session 变量的问题
第一次写 ASP程序,遇到一个很奇怪的问题.
//JavaScript 简单的用户验证程序.
if(Request.ServerVariables("REQUEST_METHOD")=="POST")
{
var conn=Server.CreateObject("ADODB.Connection");
conn.open("DBQ="+Server.mappath("Dkp.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)}");
var username=Request.Form("uid");
var userpwd=Request.Form("psw");
// 查询该用户的权限
var strsql="select priority from tblMember where name=\'"+username+"\' and Memberpsw=\'"+userpwd+ "\'";
var sqlresult=conn.Execute(strsql);
if( sqlresult.bof==true &&sqlresult.eof==true )
{
// 帐号或 口令不对 返回登陆页面
Response.Redirect("default.asp?message=帐号和口令不对,请重新输入");
}
//设置 当前用户的 uid和 权限
////////////////////////////////////////////////
// 下面这两个Session变量遇到了奇怪的问题
//Session("uname")= username;
Session("upriority")=sqlresult("priority");
}
原意是想 在Session中存储当前用户的名字和权限代码.名字是一个字符串, 权限代码是一个整数.但是
Session("uname")= username; 这行代码直接导致这个页面发生500内部服务器错, 后面的代码没有问题在本页面内可以正确使用Session("upriority")
但是在另外一个页面内下面的代码
var pid= Session("upriority");
if(pid==1)
{
uclass="管理员";
}
if(pid==7)
{
uclass=" 普通成员";
}
Response.Write("hello !"+Session("uname")+"你的权限是"+pid);
存储Session("uname")时居然可以正确的得到用户名(上一个页面中的//Session("uname")= username;已经注释掉了). 而var pid= Session("upriority"); 缺导致一个错误
ADO.Field 错误 8004axxxx 对象不存在
我想后一个错误是不是因为语句Session("upriority")=sqlresult("priority"); 存储下来的只是RecordSet对象的一个引用,结果换了一个页面之后该引用成为一个空引用了.
请各位ASP前辈指导.