2016-03-23 8 views
0

Ich habe Cookies namens Empid, die die ID des Mitarbeiters speichert, die ich verwenden werde. Aber wenn ich versuche, den Wert eines beliebigen Cookies zu erhalten, wird sein Wert automatisch auf null gesetzt, und dieser Code stammt aus einer partiellen Klasse, die von der Seite geerbt wird. Was passiert, wenn ich will, um eine Klasse erstellen, die alle die Datenbank bezogenen Code enthält und es in everyCookies automatisch leer

protected void Page_Load(object sender, EventArgs e) 
{ 
    using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["MyDbConn"].ToString())) 
    { 

     using (SqlCommand cmd = new SqlCommand()) 
     { 
      try 
      { 

       cn.Open(); 
       SqlDataReader conReader; 
       conReader = null; 
       mycomment.Text = Response.Cookies["empid"].Value; 
       // cmd.CommandText = "Select * from comments where c_from = " + Response.Cookies["cid"] + " and c_to = "+ Response.Cookies["empid"].ToString(); 
       cmd.Connection = cn; 
       mycomment.Text = cmd.CommandText; 
       cmd.CommandType = CommandType.Text; 
       conReader = cmd.ExecuteReader(); 

       while (conReader.Read()) 
       { 
        mycomment.Text += conReader[3].ToString(); 

       } 

      } 

      catch (Exception ex) 
      { 
       Console.Write(ex); 
      } 
      finally 
      { 
       cn.Close(); 
      } 

     } 
    } 
} 

Antwort

0

Sie bekommen Plätzchen aus dem Response Objekt verwenden möchten - die die ausgehenden Cookies, nicht das Objekt Request Welches ist die Menge der Cookies, die vom Client kommen?

Ändern Sie es zu mycomment.Text = this.Request.Cookies["empid"].Value.

Ich sehe auch, dass Sie SQL-Befehle bilden, indem Sie String Concatenation ohne jegliche Sanitation verwenden. TUN SIE DIES NICHT. Verwenden Sie stattdessen Parameter:

cmd.CommandText = "SELECT * FROM comments WHERE c_from = @from AND c_to = @to"; 
cmd.Parameters.AddWithValue("@from", this.Request.Cookies["cid"].Value); 
cmd.Parameters.AddWithValue("@to" , this.Request.Cookies["empid"].Value);