我有一个问题。
我正在为我的下一个项目学习经典ASP。我目前是.NET开发人员,在该项目上使用ASP.NET不是我的客户端的要求。
我有一个登录页面脚本。
Default.asp的
<form method="post" action="ASP/aspLogin.asp">
form code here...
<input type="submit" class="Button Is_Default" value="Login"></input>
</form>
现在,我在测试ASP / aspLogin.asp页面中的内容如下:
ASP / aspLogin.asp
<%@ Language="VBScript" %>
<%
Dim strUsername
Dim strPassword
strUsername = Request.Form("txtUsername")
strPassword = Request.Form("txtPassword")
If strUsername <> "" And strPassword <> "" Then
Response.Redirect("Index.asp")
End If
%>
当我运行上面的脚本时,浏览器只是将我重定向到ASP / aspLogin.asp。我想将用户重定向到他各自的主页。
我的目标是我希望我的ASP / aspLogin.asp文件处理我的表单而不是将进程放在Default.asp页面之上。我是否知道我是否遗漏了一些内容,或者还有一些事情需要考虑来创建我需要的代码。资源也将受到赞赏。
答案 0 :(得分:3)
如果你有用户登录和退出,那么我会使用会话变量(我确定你在.net中遇到过),所以就像这样。
If strUsername <> "" And strPassword <> "" Then
Session("Username") = strUsername
Response.Redirect("Index.asp")
End If
然后,您可以向index.asp和任何其他页面添加逻辑,以根据Session(“Username”)的值显示数据。
此代码演示了这个概念。显然,您需要确保不重复用户名。在实践中,我建议使用数据库查询来检索用户记录的主键值,该值对应于用户名和密码
编辑。
所以你基本上试图用经典ASP模拟.net。要记住两件事。 Classic没有代码支持,而.net webform只能发布给自己(对于从Classic转移到.net的人来说真的很令人沮丧)
可能你最好的选择是让你的表单页面发布到自己并将你的处理代码放在Default.asp的顶部,逻辑只有在提交表单时触发它,即
<%@ Language="VBScript" %>
<%
Dim strUsername
Dim strPassword
strUsername = Request.Form("txtUsername")
strPassword = Request.Form("txtPassword")
If strUsername <> "" And strPassword <> "" Then
'Your processing code
Response.Redirect("Index.asp")
End If
%>
<html>
<body>
<form method="post">
form code here...
<input type="submit" class="Button Is_Default" value="Login"></input>
</form>
</body></html>
此方法的扩展名是使用asplogin.asp作为include。 (你需要从asplogin.asp的顶部删除<%@ Language="VBScript" %>
,因为它会成为页面的中间部分,你已经在default.asp中声明了你的声明。 Default.asp就像这样。
<%@ Language="VBScript" %>
<!--#include file="ASP/aspLogin.asp"-->
<html>
<body>
<form method="post">
form code here...
<input type="submit" class="Button Is_Default" value="Login"></input>
</form>
</body></html>
这与您在Classic
中获得代码隐藏的距离非常接近