我的网页上有一个超链接,如果用户登录则链接应该正常工作,如果不是,则应该提示错误消息,指示用户未登录。我已经尝试了很多但是它没有工作正如我所料。我认为会话代码不起作用。请帮我解决问题。
这是我的登录按钮代码:
protected void Button2_Click(object sender, EventArgs e)
{
MySqlConnection connection = new MySqlConnection("server=localhost; database=e-learningsystem; uid=root; password=123;port=3307;");
connection.Open();
try
{
MySqlCommand cmd = new MySqlCommand("SELECT Password FROM student WHERE UserName='" + TextBox2.Text + "'", connection);
// string password;
password = Convert.ToString(cmd.ExecuteScalar());
MySqlDataReader dr = cmd.ExecuteReader();
if ((TextBox1.Text == password) && (dr.HasRows))
{
Response.Redirect("1stTymStuCategorySelection.aspx");
while (dr.Read())
{
UserInfo ui = new UserInfo(dr["UserName"].ToString(), dr["Password"].ToString(), dr["Name"].ToString());
Session["loggedUser"] = ui;
}
connection.Close();
}
else
{
Response.Write(@"<script language='javascript'>alert('INVALID Username and Password, Try Again!')</script>");
// Session.Clear();
}
}
catch (Exception ex)
{
}
TextBox2.Text = "";
TextBox1.Text = "";
}
这是我的userInfo类代码:
public class UserInfo
{
private string _UserName;
private string _Password;
private string _Name;
public UserInfo(string UserName, string Password, string Name)
{
_UserName = UserName;
_Password = Password;
_Name = Name;
}
public string UserName
{
get { return _UserName; }
}
public string Password
{
get { return _Password; }
}
public string Name
{
get { return _Name; }
set { _Name = value; }
}
}
这是完成链接超链接选择的地方:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["loggedUser"] != null)
{
HyperLink1.NavigateUrl = "Year1Sem1Sub1.aspx";
}
else
{
HyperLink1.Visible = false;
}
}
答案 0 :(得分:0)
您的问题是您在设置Session
值之前重定向到另一个页面,因此Session
始终为null
。
这段代码就是问题:
if ((TextBox1.Text == password) && (dr.HasRows))
{
Response.Redirect("1stTymStuCategorySelection.aspx");
在代码逻辑中进一步向下移动Response.Redirect
(即在设置Session
值后)。