asp.net 党员管理系统之管理员和学员登录权限的区分
问题:哪个系部管理员登录便跳到哪个系部的管理页面,普通用户登录便跳到普通用户的页面?
- 注:1 思路和3 代码分析只针对基础差的,有一定的知识积累的可以直接看2 代码
1 思路
1.1 建表与拉下拉框(可不看)
- 使用两张表
- 1张存放学生的注册信息(起名为xueshengbiao),1张存放老师的账号(起名为teacher),老师的账号不能自己注册,只能管理员从后台数据库中手动添加.
- 前端放两个下拉框控件(DropDownList),一个下拉框给ip为DropDownList1,然后编辑项(ListLtem),两个项,分别给value值和text值,一个的value、text值分别为:xuesheng 、学生;另一个的value、text分别:teacher 、系部(这个下拉框的作用是:为了区分登录者的身份,明白到底是学生登录还是系部的教师登录).
- 一个下拉框控件,id为DropDownList2,4个编辑项,项的value、text分别为:1(xinxi 信息系)、2(jingcha 警察系)、3(falv 法律系)、4(sijian 司法鉴定系)(这个下拉框的作用:区分是登录者是属于哪个系部的).
1.2 教师和学生登录区分
- 在后台事件中首先我获取下拉框ip为DropDownList2的value值,看用户选择的是学生还是系部(如下图1-2-1),如果选择的是学生的话我便会获得的value值为xuesheng,选择的是系部的话,我获得value值就为teacher.我这时写了一个if判断,如果value值为xuesheng,我就从xueshengbiao表中判断用户输入的账号和密码是否与表存在的账号密码一致;如果value值为teacher的话,我就从表名为teacher的表中判断用户输入的账号和密码是否和表存在的账号密码一致.
1-2-1图 - 为了更好的解释如何区分系部管理员,这里我把获得value值为xuesheng的if断定取名为
第一层if
;获得value值为teacher的判断取名为第一层else
- 过渡句
- 以上是区分第一层区分,区分了普通用户和系部管理了;第二层区分是区分每个系的管理员的登录,实现不同系的人员登录,便跳到不同系的页面上.下面讲述如何实现这个区别的详细思路.
1.3不同系的教师登录的区分
- 在数据库的teacher表(用来存放系部管理员的账号)设定的是三个项:账号,密码,系部;
- 假如我获取了ip为DropDownList1的value值为teatcher,也就是我选择的是系部,进入到if判断条件里面,这时我用查询语句,查询教师表中三个项分别和用户输入的值对比,如果存在的话,我写的语句会让我拿到一个值1,不存在的话我会拿到一个值0;
- 这时我又定一个判断语句,如果值为0,
- 便有个弹框告诉用户密码或账号输入错误或系部的选择错误;
- 如果值为1
- 就会进入到if里面,在里面的我做了一个字符串拼接,拼接之前我们要知道:教师在登录页面选择的管理系肯定是自己的管理系(不然的话获得的值就是0了),知道了这个我是这样拼接的;
- 首先我先获取id为DropDownList1 的value值,然后加上页面的后缀名(.aspx),用一个参数abc接受,这样我的abc就是一个地址了,最后我起各个系的系名和他们的id为DropDownList1的value值一样便可。
2 代码
2.1 前端代码
<`asp:DropDownList` ID="DropDownList1" runat="server">
<asp:ListItem Value="xinxi" Text="信息系"></asp:ListItem>
<asp:ListItem Value="jingcha" Text="警察系"></asp:ListItem>
<asp:ListItem Value="falv" Text="法律系"></asp:ListItem>
<asp:ListItem Value="sijian" Text="司法鉴定系"></asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="DropDownList2" runat="server">
<asp:ListItem Value="xuesheng" Text="学生"></asp:ListItem>
<asp:ListItem Value="teacher" Text="系部"></asp:ListItem>
</asp:DropDownList>
标注
<asp:DropDownList ><!--下拉框和里面的项-->
<asp:ListItem ></asp:ListItem>
</asp:DropDownList>
- 下拉框和里面的项
2.2 后端代码
protected void denglu_Click(object sender, EventArgs e)
{
// 打开数据库
String str = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|Database.mdf; Integrated Security=True";
SqlConnection Sqlconn = new SqlConnection(str);
Sqlconn.Open();
string bb = DropDownList2.SelectedValue;
//学生页面
if (bb == "xuesheng")
{
//语句
String cmd = "select count(*) from xueshengbiao where xuehao = N'" + xuehao.Text.ToString() + "' and password = N'" + mima.Text.ToString() + "'";
SqlCommand Sqlcmd = new SqlCommand(cmd, Sqlconn);
int aa = Convert.ToInt16(Sqlcmd.ExecuteScalar());
if (aa > 0)
{
Session["xuehao"] = xuehao.Text.ToString();
Sqlconn.Close();
Response.Redirect("zhuye.aspx");
}
else
{
Response.Write("<script>alert('学号或密码错误或系部选择错误')</script>");
}
}
//系部页面
else if(bb == "teacher")
{
String cmd = "select count(*) from teacher where id = N'" + xuehao.Text.ToString() + "' and password = N'" + mima.Text.ToString() + "' and xibu = N'"+ DropDownList1.SelectedItem.Text.ToString() +"'";
SqlCommand Sqlcmd = new SqlCommand(cmd, Sqlconn);
int aa = Convert.ToInt16(Sqlcmd.ExecuteScalar());
if (aa > 0)
{
string dd = DropDownList1.SelectedValue;
string abc = dd + "." + "aspx";
//System.Console.WriteLine(abc);
Session["id"] = xuehao.Text.ToString();
Sqlconn.Close();
Response.Redirect(abc);
}
else
{
Response.Write("<script>alert('账号或密码错误或系部选择错误')</script>");
}
}
}
标注
string bb = DropDownList2.SelectedValue;
- 取ip为DropDownList2的下拉框的value值
String cmd = "select count(*) from xueshengbiao where xuehao = N'" + xuehao.Text.ToString() + "' and password = N'" + mima.Text.ToString() + "'";
SqlCommand Sqlcmd = new SqlCommand(cmd, Sqlconn);
int aa = Convert.ToInt16(Sqlcmd.ExecuteScalar());
- 查询条件存在aa为1,否则为0
Response.Redirect("");
- 页面跳转
DropDownList1.SelectedItem.Text.ToString()
- 获取ip为DropDownList1的下拉框的text值并转为str类型
string abc = dd + "." + "aspx";
- 字符串拼接
Response.Write("<script>alert('内容')</script>");
- 弹框
3 代码分析
3.1前端代码分析
- 前端的主要是用拉两个下拉框控件(asp:DropDownList),然后每个下拉框给个id,再给里面的每个项加value值和text值,如下:
<asp:DropDownList ID="DropDownList1" runat="server">
<asp:ListItem Value="xinxi" Text="信息系"></asp:ListItem>
<asp:ListItem Value="jingcha" Text="警察系"></asp:ListItem>
<asp:ListItem Value="falv" Text="法律系"></asp:ListItem>
<asp:ListItem Value="sijian" Text="司法鉴定系"></asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="DropDownList2" runat="server">
<asp:ListItem Value="xuesheng" Text="学生"></asp:ListItem>
<asp:ListItem Value="teacher" Text="系部"></asp:ListItem>
</asp:DropDownList>
3.2 后端代码分析
主要讲解如何区分不同页面
string bb = DropDownList2.SelectedValue;
- 整体意思为获取ip为DropDownList2控件的项的value值
- ip为DropDownList2有两个项,value值分别是:“xuesheng”和“teacher”,text值是:“学生”和“系部”,
- 当用户在登录页面选择的是学生时,参数bb就会获得value值**“xuesheng”**;
- 当选择的是系部时,bb就的值就是:“teacher”;
3.2.1学生的区分
if (bb == "xuesheng")
{
}
- if判断语句,意为:如果**bb等于“xuesheng”**便执行{}里面的内容,下面是对里面内容的分析
String cmd = "select count(*) from xueshengbiao where xuehao = N'" + xuehao.Text.ToString() + "' and password = N'" + mima.Text.ToString() + "'";
SqlCommand Sqlcmd = new SqlCommand(cmd, Sqlconn);
int aa = Convert.ToInt16(Sqlcmd.ExecuteScalar());
-
这段代码整个意思是:查询数据库中名字为xueshengbiao的表,如果满足该
xuehao = N'" + xuehao.Text.ToString() + "' and password = N'" + mima.Text.ToString() + "'";
(xuehao等于xuehao.Text.ToString() 同时password等于mima.Text.ToString() )语句的话,aa就返回值1,不符合条件的话,aa就返回值0 -
(
xuehao
和password
是名字为xueshengbiao表中的两个项,而xuehao.Text.ToString()
和mima.Text.ToString()
中的xuehao和mima是登录页面的账号和密码的文本框的id值,如下图,而mima.text.tostring的意思是:text是取文本框的内容,tostring是把内容转成str类型)
-
select是数据库的查询语句
-
from xueshengbiao from后面是数据库里面的表的名
-
where 后面接的是条件
if (aa > 0)
{
Session["xuehao"] = xuehao.Text.ToString();
Sqlconn.Close();
Response.Redirect("zhuye.aspx");
}
else
{
Response.Write("<script>alert('学号或密码错误或系部选择错误')</script>");
}
- 当aa为0时,
- 执行
Response.Write("<script>alert('学号或密码错误或系部选择错误')</script>");
这个语句,语句的意思是:有个弹框,弹框内容是–>学号或密码错误或系部选择错误. - 当aa是1时,
- 会执行a>0的语句,主要看这句:
Response.Redirect("zhuye.aspx");
,意思是:跳转到页面zhuye.aspx
3.2.2 系部页面的区分
else if(bb == "teacher")
{
String cmd = "select count(*) from teacher where id = N'" + xuehao.Text.ToString() + "' and password = N'" + mima.Text.ToString() + "' and xibu = N'"+ DropDownList1.SelectedItem.Text.ToString() +"'";
SqlCommand Sqlcmd = new SqlCommand(cmd, Sqlconn);
int aa = Convert.ToInt16(Sqlcmd.ExecuteScalar());
if (aa > 0)
{
string dd = DropDownList1.SelectedValue;
string abc = dd + "." + "aspx";
//System.Console.WriteLine(abc);
Session["id"] = xuehao.Text.ToString();
Sqlconn.Close();
Response.Redirect(abc);
}
else
{
Response.Write("<script>alert('账号或密码错误或系部选择错误')</script>");
}
}
}
- 当bb等于**“teacher”**时就会执行里面的内容
- 里面有个if判断语句,当a>0就会进入执行里面的语句,当a=0是就会执行else里的
Response.Write("<script>alert('账号或密码错误或系部选择错误')</script>");
这个语句,这个是个弹框,内容为:账号或密码错误或系部选择错误. - a的值为0还是1使是由
String cmd = "select count(*) from teacher where id = N'" + xuehao.Text.ToString() + "' and password = N'" + mima.Text.ToString() + "' and xibu = N'"+ DropDownList1.SelectedItem.Text.ToString() +"'";
这句决定的 - select 是数据库查询语句
- from teacher from后面是表名
- where 后面的
id = N" + xuehao.Text.ToString() + "' and password = N'" + mima.Text.ToString() + "' and xibu = N'"+ DropDownList1.SelectedItem.Text.ToString() +"'"
就是条件,意思为:id等于xuehao.Text.ToString()加password等于mima.Text.ToString()加xibu等于 DropDownList1.SelectedItem.Text.ToString(),这个条件符合的话,a就是1,否则a就是0 - id,password,xibu是表teacher里面的项,也就是这个项里面的值和户名填的值一样的话,a就为1
xuehao.Text.ToString() ,mima.Text.ToString(),DropDownList1.SelectedItem.Text.ToString()
这三个分别是:获取ip为xuehao的控件的text(文本)值转为str(tostring就是这个作用);获取ip为mima的控件的text值转str;获取ip为DropDownList1的控件的text值转str;- 这三个值分别对应账号,密码,和系部的选择,图片如下图的红色空
- 三个框对应的ip为xuehao,mima,DropDownList
- 当a>0时会执行以下的代码
string dd = DropDownList1.SelectedValue;
string abc = dd + "." + "aspx";
//System.Console.WriteLine(abc);
Session["id"] = xuehao.Text.ToString();
Sqlconn.Close();
Response.Redirect(abc);
- 整体意思是字符串拼接,拼接成要跳转的页面
string dd = DropDownList1.SelectedValue;
的意思是取ip为DropDownList1的Value值,赋值个bb(也就是说bb就是对应的value值),这个控件有四个Value值,如下图,下图的Value值分别对应的是:xinxi,jingcha,falv,sijian
-string abc = dd + "." + "aspx";
这句话的意思是每个每个value值后加上“.aspx”,用abc来承接新的字符Response.Redirect(abc);
这句话就是跳转页面了,注意:页面起名是要和value值对应,这样就能实现不同系的跳转了。
3.2.3 解疑
- 是不是教师账号对,就能实现去到各个系的页面?
- 不是的,我们定了条件如下
String cmd = "select count(*) from teacher where id = N'" + xuehao.Text.ToString() + "' and password = N'" + mima.Text.ToString() + "' and xibu = N'"+
- 也就是说,账号,密码,和系部都对,才能aa等于1,才会进行页面的跳转,可以结合3.3.2的内容了解。
- 所以一个教师要登录多个页面的话,“teacher”表就要有多条同个账号密码,不同的系部才能实现.