帮忙解释这段ASP代码 我乃新手菜菜

来源:百度知道 编辑:UC知道 时间:2024/07/08 20:11:57
此代码 数据库连接没问题 admin是表名 username password 为登陆代码
<%
username=replace(request.form("username"),"'","''") 此行是传递过来的值给username变量赋值,但不知道'","''"这后面引号是做什么的
password=replace(request.form("password"),"'","''")
sql="select * from admin where(username='"&username&"' and password='"&password&"')" 这条件查询
set rs=server.createobject("adodb.recordset")定义记录集
rs.open sql,conn,1,1 打开符合查询记录
if not rs.eof then 这里为什么要判断记录指针不是在最后
rs.close
conn.close
session("check")="checked" 这里不懂这为什么
response.Redirect "index.asp" 意思指向登陆页面
else
session("check")="" 不知道是不是check变量为空
response.write ("对不起,密码错误") 输出提示
end if
%>
希望能给我详细的解释下 呵呵 越生动越好 本人是超级新手
每个后台页面都加上了if not session("check")="checked&

1、username=replace(request.form("username"),"'","''")
这个语句中request.form("username")是一个整体,是得到前一个页面提交的username变量。 然后用到了replace函数,
replace函数的用法:它有三个参数,可以将一个字符串中的某个字符用另一个字符替换,例如:Replace("XXpXXp", "p", "Y"),得到的结果为XXYXXY
所以这个的含义是将username中的单引号替换为两个单引号
2、if not rs.eof then 这里为什么要判断记录指针的位置(eof-end of file),如果rs指针移动到了eof(rs中记录顺序为 bof,1,2,3,……,n,eof)即在末尾(若有数据,则rs指针应该指向第一个数据,即指向1,现在rs直接直到了eof,可见此时从数据库查询的结果中没有数据),则关闭连接。
3、session是会话变量。可以随意设置session变量的变量名和值。
在你的例子中rs移动到了eof,证明在数据库中没有该用户,此时设置session("check")="checked" 。这样,使用这个用户名和密码的人,就不能进入所有asp中包含if not session("check")="checked" then
response.Redirect "login.asp" 语句的页面。
保证了数据库后台的安全。这里实际上实现了身份验证的功能

if not rs.eof then 这里为什么要判断记录指针不是在最后
记录指针在最后的话,就为空记录,你可以理解成如果记录不为空的话,那么。。。
session("check")="checked" 这里不懂这为什么
把session的值设置成为checke