0

我的网页中有一个超链接,如果用户登录,该链接应该可以工作,如果没有,它应该提示一条错误消息,指示用户未登录。我尝试了很多,但它没有按我预期的那样工作. 我认为会话代码不起作用。请帮我找出问题所在。

这是我的登录按钮代码:

    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;
        } 
    }
4

1 回答 1

0

您的问题是您在设置Session值之前重定向到另一个页面,因此Session总是null.

这段代码是问题所在:

if ((TextBox1.Text == password) && (dr.HasRows))
{
    Response.Redirect("1stTymStuCategorySelection.aspx");

在代码逻辑中将其进一步向下移动Response.Redirect(即在您设置Session值之后)。

于 2013-08-01T02:41:49.960 回答