注册 登录
编程论坛 ASP技术论坛

求助:无法使用登录系统

月夜NO风 发布于 2008-07-04 12:29, 2615 次点击
本人按照书中所写,完全抄搬代码,但是还是出错,请各位帮我看看吧!
1.下面是LOGIN,当按提交后,转到另一个ASP验证用户名等。

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<% Response.Buffer=True %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.
<html xmlns="http://www.
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>供应商登录系统</title>
</head>
<body>

<form name="Form1" method="post" action="loginOK.asp">
<%
dlm=Request.Cookies("Userdlm")
%>
<center>
<p>登录名:<input type="text" name='txtDLM' VALUE=<% =dlm%> ></p>
<p>密 &nbsp; &nbsp;码:  <input type="password" name="pasKL"></p>
<p>  <input type="submit" name="btnOK" value="提交">&nbsp;&nbsp;
   <input type="reset" name="btnESC" value="重写"></p>
</center>
</form>
</body>
</html>

2.以下ASP是验证用户名和密码的,如果改了RESPONSE.REDIRECT的文件,就可以跳到这个文件,
但是就不会验证,就是输入什么都直接跳转!我不知道是什么原因,连接数据库出问题了?
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
dlm=Trim(Request.Form("txtDLM"))
kl=Trim(Request.Form("pasKL"))
If dlm="" and kl="" Then
Response.Redirect("login.asp")
End if
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.
<html xmlns="http://www.
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>供应商登录系统</title>
</head>

<body>
<!--#include virtual="/adovbs.inc"-->
<%
Dim cn1,rs1,sql1
Set cn1=Server.CreateObject("ADODB.Connection")
Set rs1=Server.CreateObject("ADODB.Recordset")
cn1.ConnectionString="FILE NAME=E:\SQL\DBTEST2LinkS.UDL"
sql1="select * from userinfo where dlm='"&dlm& "'and paskl='"&k1&"'"
cn1.Open
rs1.Open sql1,cn1
If rs1.EOF Then
rs1.Close
cn1.Close
Set cn1=Nothing
Response.Redirect "login.asp"
Else
rs1.Close
cn1.Close
Set cn1=Nothing
Response.Cookies("userdlm")=dlm
Response.Redirect "wel.html"
End If
%>
</body>
</html>
28 回复
#2
月夜NO风2008-07-04 15:51
为何ASP不能判断用户名和密码呢?
#3
dhdhzzw2008-07-04 16:21
<form name="Form1" method="post" action="loginOK.asp">
<%
dlm=Request.Cookies("Userdlm")
%>
<center>
<p>登录名:<input type="text" name='txtDLM' VALUE=<% =dlm%> ></p>
<p>密    码:  <input type="password" name="pasKL"></p>
<p>  <input type="submit" name="btnOK" value="提交">  
   <input type="reset" name="btnESC" value="重写"></p>
</center>
</form>
直接提交的,哪有判断〉?

加上onSubmit='return CheckForm();
..........function CheckForm()
dlm=Trim(Request.Form("txtDLM"))
kl=Trim(Request.Form("pasKL"))
If dlm="" and kl="" Then
Response.Redirect("login.asp")
End if
.............
#4
月夜NO风2008-07-04 16:46
书上说,LOGIN.ASP是直接提交到LOGINOK.ASP,由LOGINOK.ASP(就是第二个ASP)验证并决定转到哪个页面,正解就WEL.HTML,错就重新回到LOGIN.ASP啊。
那应该如何做啊?
#5
dhdhzzw2008-07-04 17:14
If dlm="" and kl="" Then
Response.Redirect("login.asp")

///////改为
If dlm="" or  kl="" Then
Response.Redirect("login.asp")
#6
月夜NO风2008-07-05 08:14
[bo][un]dhdhzzw[/un] 在 2008-7-4 17:14 的发言:[/bo]

If dlm="" and kl="" Then
Response.Redirect("login.asp")

///////改为
If dlm="" or  kl="" Then
Response.Redirect("login.asp")

这样好像只是用户名或密码为空时返回登录页吧,这样是好点。
不过会不会还是不能验证输入的用户名和密码是否和我SQL中的数据库一样呢?
#7
月夜NO风2008-07-05 09:56
还有就是在页面中如何判断用户是已经登录的?否则就跳转回LOGIN.ASP
#8
yyl9992008-07-05 10:25
登录成功后,建立application("nowuser")=username.

再在每个页面开始时输入以下:

                        '判断用户是否已经登录,如未登录,则跳转到登录页面
        if application("nowuser")="" then
        response.Redirect "login.asp"
    end if
#9
月夜NO风2008-07-05 14:09
谢谢楼上的朋友,我会慢慢看一下APPLICATION的了。
#10
multiple19022008-07-05 17:10
貌似做登录还不需要Application吧?
#11
月夜NO风2008-07-05 17:34
我也不清楚,版主教教我吧。
#12
multiple19022008-07-05 17:56
貌似没什么难的呀。

如果你不存储登录信息,那么每个操作用户都要输入用户名与密码之类。
那如果不需要用户每次都输入(就像你上论坛一样),需要存储什么信息?都是文本的吗?存到哪里(Session)?……

写程序的思路就是这样。
#13
月夜NO风2008-07-06 11:36
是要像BBS一样,但是我不知道怎么写好.哎...
#14
月夜NO风2008-07-07 20:21
有没有人给点代码看下啊............
#15
月夜NO风2008-07-08 15:15
已经解决,在LOGINOK.ASP中加入:<% session("dlm")="txtDLM" %>
在要判断的页面中加入:
<% dlm=Trim(Request.Form("txtDLM")) %>
<% if session("dlm")=""   then %>
  <% Response.Redirect("login.asp") %>
   <% else %>
   <% Response.Write("Welcome to XX!")  %>
   <% end if  %>
就是这样!哈哈,不知道为什么不用这么多<% %>就会出错!
#16
月夜NO风2008-07-09 09:26
但是新的问题又来了,就是登录名如果错的,再直接打开那个页面还是可以用的~
晕死!
#17
月夜NO风2008-07-10 11:23
我想这样:
<% dlm=Trim(Request.Form("txtDLM")) %>
<%
if session("dlm")!="txtDLM"   
  then
  Response.Redirect("login.asp")
   else
   Response.Write("Welcome to Source Pro Industries Ltd.!")
   end if  
%>   
但是提示我缺少 THEN,但是我明明有THEN了。。。。。。。
#18
月夜NO风2008-07-10 15:29
怎么没人理我了呢~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#19
月夜NO风2008-07-11 08:51
我想在最后一个页面加入"SESSION 不等于 SQL里不正确的值" then response.redirct "login.asp",但就是中文的那个我不知道怎么写都会出错。
有人会吗?
#20
dhdhzzw2008-07-11 09:10
[bo][un]月夜NO风[/un] 在 2008-7-10 11:23 的发言:[/bo]

我想这样:

   
但是提示我缺少 THEN,但是我明明有THEN了。。。。。。。


!=改成 <>

if session("dlm")<>"txtDLM"   then
  Response.Redirect("login.asp")
else
=========
你这里的判断根本就不全。。要判断用户名和密码是否和数据库的相等。。。。。。。
#21
月夜NO风2008-07-11 17:33
不全吗?

if session("dlm")<>"txtDLM"    这里就是如果登录名不等于登录名,不是吗?
然后则返回登录页面,其实我是不知道如果登录名一样可以做什么,就写了
response.write ,难道不可以这样?那我应该怎么做好?
#22
dhdhzzw2008-07-11 17:55
如果一样那就不用再重复登录了,直接
  <% Response.Write("Welcome to XX!")  %>
或者输出这个人的相关信息//。
#23
月夜NO风2008-07-12 09:02
是啊,我也是这样想的啊,但是你说我的IF不完整,我又不明白了。。。。。。。
到底怎么了呢?最重要的我就是想“如果登录名不等于数据库中的值”,这句我不会写代码。。。。。。。。。。。
#24
月夜NO风2008-07-14 08:09
顶上去。。。。。。。。达人帮帮我。
#25
dhdhzzw2008-07-14 09:17
[bo][un]月夜NO风[/un] 在 2008-7-12 09:02 的发言:[/bo]

是啊,我也是这样想的啊,但是你说我的IF不完整,我又不明白了。。。。。。。
到底怎么了呢?最重要的我就是想“如果登录名不等于数据库中的值”,这句我不会写代码。。。。。。。。。。。



登录名不等于数据库的值


sql1="select * from userinfo where 用户名='"&dlm& "'and 密码='"&k1&"'"   ///写的汉语,你把它改为你数据库字段名就可以了
cn1.Open
rs1.Open sql1,cn1
If rs1.EOF Then   //// 如果不相等
response.write("用户名或密码错误")
response.redirect (login.asp)
else
response.write("欢迎!!")
#26
月夜NO风2008-07-15 11:56
如果我需要在直接进入其他页面里也加入判断当前用户名是否正确应该怎么做?
就像论坛一样,我没有登录,但是我得到了地址,直接点网址进入论坛,论坛也会发现我没有登录,应该是用了COOKIES的吧.
这个可以用SESSION做到么?
#27
hmhz2008-07-15 12:44
session保存用户名要在登陆成功后把用户名写入session
而不是登陆的时候无论用户名正不正确都写入session的
#28
dhdhzzw2008-07-15 13:12
建议楼主,先找个论坛源码看看再说。。。。。
#29
月夜NO风2008-07-15 14:17
其实我好像有的......不过看不太明白.呵呵
1