第六章 管理员登陆页的制作
第六章 管理员登陆页的制作 admin_loing.aspx管理员登陆页
操作步骤:
1、首先打首页index.aspx文件,在合当的地方添加一个链接到本页的文字或图片链接。
2、创建并打开一个新admin_loing.aspx,插入表单,切换到代码视图,给表单添加runat="server"属性:
<form id="form1" method="POST" runat="server" >
</form>
3、在表单内按以下截图页面样式插入表格和文本域:

用户名和密码文本域代码清单:
用户名:<input name="AdminName" type="text" id="AdminName" runat="server" >
密 码:<input name="AdminPws" type="text" id="AdminPws" runat="server" >
登陆按扭:<asp:button ID="Button1" runat="server" Text="登陆" OnClick="sub_ling" />
上面代码不外乎是普通的HTML标签加上runat="server" 属性,使其成为HTML服务器控件;登陆按扭用的是Button控件,因为要用到它来触发事件。
3、切换到代码视图,把ResponseEncoding="gb2312"删除掉。否则数据集就不能筛出结果了。
4、插入数据集
因为DW MX的ASP.NET服务器行为中没有登陆用户行为,我们只能用数据集和手工改写一些代码来实现这个功能了。不用担心,代码不多。
启动数据集,设置如下:

点击“高级..”按扭,切换到高级数据集模式。我们看到了由DW MX生成的部分SQL语句:

这是不够的,我们还必须添加多一个条件,即密码字段。只有用户名和密码条件都匹配时,才能让数据集筛出结果。
点击参数“+”,弹出“编辑参数”对话框,填写名称为“@AdminPws”,类型选择“WChar”,如下图:

单击“建立”弹出“生成值”对话框,名称为AdminPws,源选择“表单变量”,默认值为“0”。如下图:

单击“确定”保存设置,一直回到主数据集对话框。修改SQL语句,修改结果如下图所示:

好了,单击“确定”保存工作成果。
5、切换到数据“绑定”面板,把“用户名”AdminName字段绑定于页面,插入页面任何地方均可,因为我们只用它来检查数据集是否筛出记录,然后判断该字段动态变量是否为空,不为空的话就赋值给session并同时转向index.aspx页。
切换到代码视图,找到刚才绑定的字段,如下:
<%# DataSet1.FieldValue("AdminName", Container) %>
把它改成调用StrAdmin自定义函数:
<%#StrAdmin(DataSet1.FieldValue("AdminName", Container)) %>
当管理员输错用户名或密码,登陆不成功,给出错误提示信息,用Label控件实现:
<asp:label ID="Label1" runat="server" Text="对不起!用户名或密码错误!"></asp:label>
该控件可以放在表单内的任何位置。
在页的<HTML>标签上面添加页面加载时触发事件和响应登陆按扭的事件代码,以及判断数据集字段值是否为空的函
数:
<script runat="server">
function StrAdmin(ParName as string) as string''''自定义一个名为“StrAdmin”的函数
if ParName<>nothing then''''当动态变量不为空时
session("MM_Username")=ParName''''把管理员用户名赋值给session变量
response.Redirect("index.aspx")''''登陆成功后转到留言本首页
end if
end function
Sub Page_Load(Src As Object, E As EventArgs)
Label1.Visible="False"''''初始化Label控件不显示
End Sub
Sub sub_ling(Src As Object, E As EventArgs)
Label1.Visible="True"''''单击按扭触发该事件,显出错信息,但是当管理员登陆成功后
''''已由response.Redirect("index.aspx")转向首页
End Sub
</script>
然后打开数据库表admin,添加管理员用户名和密码:

当然,你可以添加多个管理员。有关于留言本的管理员用户名和密码修改的页面本教程不再介绍,不外乎是简单的插入、更新操作,看到后面几章后你就会自己动手做一个这样的页面了。
测试一下,用户登陆成功后就转到index.aspx,否则给出错信息。
下面来进一步完善页面,当管理员登陆成功后,不可以再进行登陆了,所以必须把整个登陆表单元素隐藏起来。这个功能用Panel控件来实现。
选中表格,如下图:

切换到源代码视图,表可标签被选中,在其上下各添加:
<asp:Panel id="Panel1" runat="server" > 刚才选中的表格标签及服务器控件代码...
</asp:Panel>
除了隐藏表格,还应该给出提示信息,提示管理员他已经登陆,用Label控件显示:
<asp:label ID="Label2" runat="server" Text="你已经登陆了!<a href=''''index.aspx''''>请返回首页</a>"></asp:label>
此控件可以放在表单内任何地方。
在Page_Load方法块内初始化Panel和Label控件是否呈现出来:
if not session("MM_Username") is nothing''''当session变量不为空时
Panel1.Visible="False"''''控件被隐藏
Label2.Visible="true"''''初始化Label控件不显示
else
Label2.Visible="false"''''未登陆Labe2控件不显示
End if
添加在Sub Page_Load(Src As Object, E As EventArgs)这句代码的下面,如下(加粗部分):
Sub Page_Load(Src As Object, E As EventArgs)
if not session("MM_Username") is nothing''''当session变量不为空时
Panel1.Visible="False"''''控件被隐藏
Label2.Visible="true"''''初始化Label控件不显示
else
Label2.Visible="false"''''未登陆Labe2控件不显示
End if
Label1.Visible="False"''''页面加载时初始化Labe1控件不显示
End Sub
管理员登陆页已经制作完毕。
由于考虑DW MX数据集的方便性,所以我没有采用手写代码,同时也易于初学者操作。实际上本页面仍然存在执行效率的问题,因为页面被请求即执行数据集查询命令,这是须要时间的。比较好的方法是应该在按下“登陆”按扭后才执行记录查询。好在这不是论坛,管理员也不是经常登陆吧,所以这里就不再深入地介绍手写方法了。
- 最新评论
