Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 关于课程的教学?_C#_Asp.net_Html - Fatal编程技术网

C# 关于课程的教学?

C# 关于课程的教学?,c#,asp.net,html,C#,Asp.net,Html,有人能教我如何使用会话吗?我有一个登录页面,它引用名为User的mysql db表,其中包括UserID=变量号、用户名和密码。我希望能够将userid存储在会话中,这样当他登录时,我可以在用户配置文件中调用它 这是怎么做到的?任何相关的编码和具体编码的位置都会很有帮助,因为我根本就不去捡它。它是放在codebhind.cs文件中还是放在aspx页面的html中?或者两者兼而有之,如何做到?会话如何跨多个内部页面工作登录后,您可以浏览多个与您自己的配置文件相关的页面 using Syst

有人能教我如何使用会话吗?我有一个登录页面,它引用名为User的mysql db表,其中包括UserID=变量号、用户名和密码。我希望能够将userid存储在会话中,这样当他登录时,我可以在用户配置文件中调用它

这是怎么做到的?任何相关的编码和具体编码的位置都会很有帮助,因为我根本就不去捡它。它是放在codebhind.cs文件中还是放在aspx页面的html中?或者两者兼而有之,如何做到?会话如何跨多个内部页面工作登录后,您可以浏览多个与您自己的配置文件相关的页面

    using System.Data.Odbc; 
    partial class login : System.Web.UI.Page 
    {        
    protected void   Login1_Authenticate(object sender, System.Web.UI.WebControls.AuthenticateEventArgs e)     
    {         
    OdbcConnection cn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=mydb; User=root;Password=;");         
cn.Open();
         OdbcCommand cmd = new OdbcCommand("Select * from login where username=? and password=?", cn);          
    //Add parameters to get the username and password            
    cmd.Parameters.Add("@username", OdbcType.VarChar);   
      cmd.Parameters["@username"].Value = this.Login1.UserName;

        cmd.Parameters.Add("@password", OdbcType.VarChar);  
       cmd.Parameters["@password"].Value = this.Login1.Password;  

        OdbcDataReader dr = default(OdbcDataReader);        
 // Initialise a reader to read the rows from the login table.   

  // If row exists, the login is successful        
    dr = cmd.ExecuteReader();        
  if (dr.HasRows) 
{             
e.Authenticated = true;             
// Event Authenticate is true       
    }    
  } 
}
基本上,为page类中的每个变量指定一个属性,例如

private int SelectedYear
{
    get 
    { 
        object obj = Session["SelectedYear"];
        if (obj != null)
        {
            return int.Parse(obj.ToString()); 
        }
        else
        {
            return 0;
        }
    }
    set { Session["SelectedYear"] = value; }
}

在C语言中,将变量存储在会话变量中:

Session["usrID"]="myUserName";
string usrName = Convert.ToString(Session["usrID"]);
稍后,要检索会话变量,请执行以下操作:

Session["usrID"]="myUserName";
string usrName = Convert.ToString(Session["usrID"]);

如果你需要一些用户管理的东西,你应该找一个会员资格提供者

要获取用户信息,可以使用

Membership.GetUser()
如果您只想使用会话来存储变量,那么可以轻松地使用

Session["name"] = value;
var value = Session["name"];

与其他人一样,End

应该在何时调用代码来设置会话变量值

您可以在Login\u Authenticate方法中执行此操作。它是您第一次检索ID的位置


或者,您可以在Global.asax文件的Session\u Start事件中执行此操作。然后,您将始终在每个页面上都有可用的值。

请记住,会话集合是可变的,因此您的用户ID值可能会在会话中期被删除。您应该始终提供回退,以便在删除值时重新填充这些值。如何操作?如果会话如此易变,您会建议什么其他选项?如果会话[UserID]==null…那么再次查找前面提到的ID,检查UserID是否为null,如果为null,则检索它。您应该能够使用用户。您可以将标识符存储在User.Identity.Name中,该标识符将在整个验证会话中保持不变。omg它不能这么简单吗?但是,尽管用户登录时输入的只是用户名和密码,但mysql表的userid部分没有被引用?我将编辑我的帖子,并包含登录代码。它是一个asp登录控件,已更改为从MySQL运行。难道您没有从SELECT*from登录中获取用户ID吗?