Usuário com melhor resposta
Sessão

Pergunta
-
Ola pessoa tenho um projecto em asp.net C#,tenho a parte publica e a privada e quero que o usuário quando fazer o login,a minha sessão tem que receber o id do usuário da BD(SqlServer) da tabela (Usuario) e quando comentar algo ele faz o insert do mesmo id do Usuario logado...
Respostas
-
Malta obrigado pela ajuda...
Consegui resolver o problema..
using System.Data.SqlClient; public partial class Default : System.Web.UI.Page { conexao conexao = new conexao(); SqlDataReader leitura; SqlCommand comando = new SqlCommand(); protected void Page_Load(object sender, EventArgs e) { } protected void iniciarlBtn_Click(object sender, EventArgs e) { InciarLogin(); } public void InciarLogin() { String consulta = "select idUsuarios from Usuarios where nomeUsuario = @nomeUsuario and senha = @senha"; comando.CommandType = System.Data.CommandType.Text; comando.Parameters.AddWithValue("@nomeUsuario", Txtnomelg.Text); comando.Parameters.AddWithValue("@senha", Txtsenhalg.Text); comando.Connection = conexao.Conectar(); leitura = comando.ExecuteReader(); if (leitura.Read()) { Session["logar"] = Txtnomelg.Text; Session["logar"] = leitura.GetValue(0).ToString(); Response.Redirect("/Administrativa/admistrativaPrincipal.aspx"); } else { Response.Redirect("ErroLogin.aspx"); } conexao.Conectar().Close(); } } }
Depois é só colocar uma label nas paginas privada que vais fazer o insert, a label é para receber o valor da sessão que trais o id do usuário.
lblUsuario.Text = Session["logar"].ToString();
danilo marques
- Marcado como Resposta Danilo Marques(Iniciante Programador) segunda-feira, 10 de dezembro de 2012 02:09
Todas as Respostas
-
Aqui você aprenderá tudo o que é necessário para fazer o que deseja: http://www.asp.net/web-forms
Rafael Santos
Observações:
1. Selecione a opção "Habilitar o Live Alerts por Padrão" nas suas configurações para que possa acompanhar em tempo real as atividades relacionadas a sua Thread;
2. Não abandone sua Thread. Ao perguntar, fique atento às respostas; ao encontrar uma solução, compartilhe;
3. As pessoas que dedicam seu tempo na busca por soluções para você não ganham nada em troca. Valorize-as e em forma de agradecimento pontue as respostas corretas.
"Quem disse que não escrevo poesias? A diferença é que as minhas começam com using System;" -
-
No evento Click do Botão de login você pode usar o seguinte...
protected void btnLogin_Click(object sender, EventArgs e) { //função logar if (//se a função logar retornar verdadeiro) { //cria um Session e atribui a ela //o nome de usuario que foi digitado //no textbox txtUsuario na tela de login Session["login"] = txtUsuario.Text; } else { //se a função logar retornar falso //exibe o erro em uma label lblErro.Text = "Usuario não Encontrado"; } }
-
meu valeu pela ajuda o meu objectivo é...
tenho a parte publica e a privada e quero que o usuário quando fazer o login,a minha sessão tem que receber o id do usuário da BD(SqlServer) da tabela (Usuario) e quando comentar algo ele faz o insert do mesmo id do Usuario logado... -
Eu já criei uma sessão só que ñ faz o que eu quero....
Publica
protected void Page_Load(object sender, EventArgs e)
{
Session["logar"] = null;
// Session.Timeout = 1;
if (Response.Cookies["valido"] == null)
{
nomeLBtn.Text = Response.Cookies["valido"].Value;
senhaLBtn.Text = Response.Cookies["valido"].Value;
}
}public
/* método para o botão login */
void InciarLogin()
{
comando.CommandText = "select nome,senha from Administrador where nome = @nome and senha = @senha";
comando.CommandType = System.Data.CommandType.Text;
comando.Parameters.AddWithValue("@nome", nomeLBtn.Text);
comando.Parameters.AddWithValue("@senha", senhaLBtn.Text);
comando.Connection = conexao.Conectar();
/*comando.ExecuteReader();*/
leitura = comando.ExecuteReader();if (leitura.Read())
{
Session.Add("logar", "sim");
Response.Redirect("administrador.aspx");
}
else
{
Response.Redirect("Errodelogin.aspx");
}Privada
protected void Page_Load(object sender, EventArgs e)
{
if (Session["logar"] == null)
{
Response.Redirect("Default.aspx");
} -
É o seguinte Danilo, como você tá usando Session não vejo a necessidade de você usar cookie,
pra passar o nome do usuario logado na Session, vc pode usar o método que te passei
protected void Page_Load(object sender, EventArgs e) { } public /* método para o botão login */ void InciarLogin() { comando.CommandText = "select nome,senha from Administrador where nome = @nome and senha = @senha"; comando.CommandType = System.Data.CommandType.Text; comando.Parameters.AddWithValue("@nome", nomeLBtn.Text); comando.Parameters.AddWithValue("@senha", senhaLBtn.Text); comando.Connection = conexao.Conectar(); /*comando.ExecuteReader();*/ leitura = comando.ExecuteReader(); if (leitura.Read()) { Session["logar"] = nomeLBtn.Text; Response.Redirect("administrador.aspx"); } else { Response.Redirect("Errodelogin.aspx"); } Privada protected void Page_Load(object sender, EventArgs e) { if (Session["logar"] == null) { Response.Redirect("Default.aspx"); }
no evento load da sua página de comentários, você pode armazenar o valor em uma string, em um textbox ou label e na hora que for executado o metodo de insersao do comentário vc passa o valor, por exemplo...
txtUsuario.Text = Convert.ToString(Session["login"]); //caso você queira inserir o nome no db. Ou...
private void buscaId() { SqlCommand cmd2 = new SqlCommand(); cmd.CommandType = CommandType.Text; cmd.Connection = con; //buca o id do nome de usuario armazenado na sessão, mas o nome não pode ter outro igual caso contrário trará qualquer resultado cmd.CommandText = @"SELECT id from usuarios where nome =" + (Session["logar"]) + ""; object idUuario= cmd.ExecuteScalar(); //armazena o id buscado no db na variavel idUser int idUser = Convert.ToInt32(idUsuario); cmd.Transaction = tn; cmd.ExecuteNonQuery(); }
ai é só salvar o idUser no db
- Editado Evandro Oliveira Novais sexta-feira, 17 de agosto de 2012 00:40 código corrigido
-
-
-
Exemplo: <asp:Label ID="Label" runat="server" Text="Comentario"></asp:Label> <asp:TextBox ID="comentarioTxt" runat="server"></asp:TextBox><br /> asp:Button ID="guardarBtn" runat="server" Text="Guardar" /> protected void guardarBtn_Click(object sender, EventArgs e) { guardar(); } public void guardar() { comando.CommandText = "insert into Comentariovalues (@descComentario,@idUsuario)"; comando.CommandType = System.Data.CommandType.Text; comando.Parameters.AddWithValue("@descComentario", comentarioTxt.Text ); //O que uso aqui para inserir O valor da sessão do Usuario logado.... comando.Connection = conexao.Conectar(); comando.ExecuteNonQuery(); conexao.Conectar().Close(); }
-
Então Danilo,
Se você quer armazenar o id do Usuário logado na sua tabela comentários, você tem que ter um campo tipo idUsuario nesta tabela, com chave estrangeira para tabela usuários. Quando você for fazer logon vai deixar seu código da seguinte forma.
//variável que recebe o id do Usuario
int idUser = 0;
private void buscaId() { SqlConnection com = new SqlConnection("string de conexão") SqlCommand cmd = new SqlCommand(); cmd.CommandType = CommandType.Text; cmd.Connection = con; //busca o id do nome de usuario logado na sessão. cmd.CommandText = @"SELECT id from usuarios where nome =" + (Session["logar"]) + ""; object idUuario= cmd.ExecuteScalar(); //armazena o id buscado na variavel idUser idUser = Convert.ToInt32(idUsuario); cmd.Transaction = tn; cmd.ExecuteNonQuery(); }
ai no metodo usado para gravar vc faz a seguinte mudança
protected void guardarBtn_Click(object sender, EventArgs e) { guardar(); } public void guardar() { comando.CommandText = "insert into Comentariovalues (descComentario,idUsuario)Values(@descComentario,@idUsuario)"; comando.CommandType = System.Data.CommandType.Text; comando.Parameters.AddWithValue("@descComentario", comentarioTxt.Text ); comando.Parameters.AddWithValue("@idUsuario", Convert.ToInt32(idUser)); comando.Connection = conexao.Conectar(); comando.ExecuteNonQuery(); conexao.Conectar().Close(); }
- Editado Evandro Oliveira Novais sexta-feira, 17 de agosto de 2012 12:05 complementar código
-
Acho que o Evandro Oliveira Novais já respondeu a sua pergunta.
Maaaas eu queria fazer um comentário: é melhor usar os profiles do Membership :)
Terei prazer em tentar te ajudar :)
Sou só uma little padawan que tem sorte de andar com jedis, mas farei o possível por quem precisar :)
Se quiser: mayumisatox@gmail.com ou @MayogaX -
Evandro Oliveira Novais valeu,vou já testar depois tido uma resposta muito obrigado pela ajuda que estas a me dar só uma pequena duvida este código fica em que pagina e em que evento
//variável que recebe o id do Usuario
int idUser = 0;
private void buscaId() { SqlConnection com = new SqlConnection("string de conexão") SqlCommand cmd = new SqlCommand(); cmd.CommandType = CommandType.Text; cmd.Connection = con; //busca o id do nome de usuario logado na sessão. cmd.CommandText = @"SELECT id from usuarios where nome =" + (Session["logar"]) + ""; object idUuario= cmd.ExecuteScalar(); //armazena o id buscado na variavel idUser idUser = Convert.ToInt32(idUsuario); cmd.Transaction = tn; cmd.ExecuteNonQuery(); }
danilo marques
-
Priscila Mayumi Obrigado pela disponibilidade e com certeza que irei precisar de ti...
danilo marques
-
Danilo, não esquece de marcar as respostas úteis aí.
Rafael Santos
Observações:
1. Selecione a opção "Habilitar o Live Alerts por Padrão" nas suas configurações para que possa acompanhar em tempo real as atividades relacionadas a sua Thread;
2. Não abandone sua Thread. Ao perguntar, fique atento às respostas; ao encontrar uma solução, compartilhe;
3. As pessoas que dedicam seu tempo na busca por soluções para você não ganham nada em troca. Valorize-as e em forma de agradecimento pontue as respostas corretas.
"Quem disse que não escrevo poesias? A diferença é que as minhas começam com using System;" -
-
Evandro Oliveira Novais não consegui executar alterei algumas coisas no codigo mesmo assim esta a dar erro....
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; namespace testeSessao { public partial class Pricipal : System.Web.UI.Page { conexao conexao = new conexao(); SqlCommand comando = new SqlCommand(); private int idUser; protected void Page_Load(object sender, EventArgs e) { if (Session["logar"] == null) { Response.Redirect("Erro.aspx"); } else { Label2.Text = "USUARIO Valido"; } } private void buscaId() { // SqlConnection com = new SqlConnection("string de conexão") // SqlCommand cmd = new SqlCommand(); // comando.CommandType = CommandType.Text; // cmd.Connection= con; // comando.Connection = conexao.Conectar(); //busca o id do nome de usuario logado na sessão. comando.CommandText = @"SELECT idUsuario from TestUsuario where nome =" + (Session["logar"]) + ""; comando.CommandType = System.Data.CommandType.Text; object idUsuario= comando.ExecuteScalar(); //armazena o id buscado na variavel idUser idUser = Convert.ToInt32(idUsuario); comando.Connection = conexao.Conectar(); comando.ExecuteNonQuery(); } protected void Button1_Click(object sender, EventArgs e) { Session.Abandon(); Response.Redirect("login.aspx"); } protected void guardarBtn_Click(object sender, EventArgs e) { buscaId(); guardar(); } public void guardar() { comando.CommandText = "insert into TestComentario values (@descComentario,@idUsuario)"; comando.CommandType = System.Data.CommandType.Text; comando.Parameters.AddWithValue("@descComentario", comentarioTxt.Text); comando.Parameters.AddWithValue("@idUsuario", Convert.ToInt32(idUser)); comando.Connection = conexao.Conectar(); comando.ExecuteNonQuery(); conexao.Conectar().Close(); } } }
danilo marques
- Editado Danilo Marques(Iniciante Programador) sexta-feira, 17 de agosto de 2012 16:29
-
Que linha que tá acusando erro?
E vc executou asism mesmo com os comentários?
Aliais, essa primeira linha
conexao conexao = new conexao();
Ela não está errada? Desse jeito sugere que você tem uma classe chamada Conexao. Pode ser nela o erro e não no código que vc postou o/
Terei prazer em tentar te ajudar :)
Sou só uma little padawan que tem sorte de andar com jedis, mas farei o possível por quem precisar :)
Se quiser: mayumisatox@gmail.com ou @MayogaX- Editado Priscila Mayumi Sato sexta-feira, 17 de agosto de 2012 16:23 Percebi um novo problema no código dele
-
Prinscila Mayumi Esta a dar o seguinte erro...
Line 63: comando.CommandText = @"SELECT idUsuario from TestUsuario where nome =" + (Session["logar"]) + ""; Line 64: comando.CommandType = System.Data.CommandType.Text; Line 65: object idUsuario= comando.ExecuteScalar(); Line 66: Line 67: //armazena o id buscado na variavel idUserdanilo marques
-
se nome for um campo do tipo texto, sua query está errada. Deverá ficar assim:
comando.CommandText = @"SELECT idUsuario from TestUsuario where nome ='" + (Session["logar"]) + "'";
Rafael Santos
Observações:
1. Selecione a opção "Habilitar o Live Alerts por Padrão" nas suas configurações para que possa acompanhar em tempo real as atividades relacionadas a sua Thread;
2. Não abandone sua Thread. Ao perguntar, fique atento às respostas; ao encontrar uma solução, compartilhe;
3. As pessoas que dedicam seu tempo na busca por soluções para você não ganham nada em troca. Valorize-as e em forma de agradecimento pontue as respostas corretas.
"Quem disse que não escrevo poesias? A diferença é que as minhas começam com using System;"- Editado Rafa Santos sexta-feira, 17 de agosto de 2012 16:40
-
Prinscila Mayumi Esta a dar o seguinte erro...
Line 63: comando.CommandText = @"SELECT idUsuario from TestUsuario where nome =" + (Session["logar"]) + ""; Line 64: comando.CommandType = System.Data.CommandType.Text; Line 65: object idUsuario= comando.ExecuteScalar(); Line 66: Line 67: //armazena o id buscado na variavel idUser
danilo marques
Terei prazer em tentar te ajudar :)
Sou só uma little padawan que tem sorte de andar com jedis, mas farei o possível por quem precisar :)
Se quiser: mayumisatox@gmail.com ou @MayogaX -
Prinscila Mayumi Esta a dar o seguinte erro...
Line 63: comando.CommandText = @"SELECT idUsuario from TestUsuario where nome =" + (Session["logar"]) + ""; Line 64: comando.CommandType = System.Data.CommandType.Text; Line 65: object idUsuario= comando.ExecuteScalar(); Line 66: Line 67: //armazena o id buscado na variavel idUser
danilo marques
Esse problema é porque o retorno é int. Eu trocaria o object por int.
Terei prazer em tentar te ajudar :)
Sou só uma little padawan que tem sorte de andar com jedis, mas farei o possível por quem precisar :)
Se quiser: mayumisatox@gmail.com ou @MayogaXSession["logar"].ToString() na sua query.
Rafael Santos
Observações:
1. Selecione a opção "Habilitar o Live Alerts por Padrão" nas suas configurações para que possa acompanhar em tempo real as atividades relacionadas a sua Thread;
2. Não abandone sua Thread. Ao perguntar, fique atento às respostas; ao encontrar uma solução, compartilhe;
3. As pessoas que dedicam seu tempo na busca por soluções para você não ganham nada em troca. Valorize-as e em forma de agradecimento pontue as respostas corretas.
"Quem disse que não escrevo poesias? A diferença é que as minhas começam com using System;" -
Prinscila Mayumi Esta a dar o seguinte erro...
Line 63: comando.CommandText = @"SELECT idUsuario from TestUsuario where nome =" + (Session["logar"]) + ""; Line 64: comando.CommandType = System.Data.CommandType.Text; Line 65: object idUsuario= comando.ExecuteScalar(); Line 66: Line 67: //armazena o id buscado na variavel idUser
danilo marques
Esse problema é porque o retorno é int. Eu trocaria o object por int.
Terei prazer em tentar te ajudar :)
hiii agora a MayogaX falando eu lembrei de uma coisa q também pode estar dando erro. Você precisa converter a saída da sua Session. Coloque:
Sou só uma little padawan que tem sorte de andar com jedis, mas farei o possível por quem precisar :)
Se quiser: mayumisatox@gmail.com ou @MayogaXSession["logar"].ToString() na sua query.
Rafael Santos
Observações:
1. Selecione a opção "Habilitar o Live Alerts por Padrão" nas suas configurações para que possa acompanhar em tempo real as atividades relacionadas a sua Thread;
2. Não abandone sua Thread. Ao perguntar, fique atento às respostas; ao encontrar uma solução, compartilhe;
3. As pessoas que dedicam seu tempo na busca por soluções para você não ganham nada em troca. Valorize-as e em forma de agradecimento pontue as respostas corretas.
"Quem disse que não escrevo poesias? A diferença é que as minhas começam com using System;"Vish, verdade, Rafa.
Se não ele vai querer passar um object e tal.
Testa aí cara e nos avisa o que deu o/
Terei prazer em tentar te ajudar :)
Sou só uma little padawan que tem sorte de andar com jedis, mas farei o possível por quem precisar :)
Se quiser: mayumisatox@gmail.com ou @MayogaX -
-
Vc teria que usar conversor do tipo TryParse com um parâmetro out para recuperar o valor convertido em inteiro. Mas pra que complicar, não é?! Não estamos falando de um sistema que lança foguetes, então troque seu ExecuteScalar por um ExecuteReader.
DataReader reader = comando.ExecuteReader(CommandBehavior.CloseConnection);
Rafael Santos
Observações:
1. Selecione a opção "Habilitar o Live Alerts por Padrão" nas suas configurações para que possa acompanhar em tempo real as atividades relacionadas a sua Thread;
2. Não abandone sua Thread. Ao perguntar, fique atento às respostas; ao encontrar uma solução, compartilhe;
3. As pessoas que dedicam seu tempo na busca por soluções para você não ganham nada em troca. Valorize-as e em forma de agradecimento pontue as respostas corretas.
"Quem disse que não escrevo poesias? A diferença é que as minhas começam com using System;"
- Editado Rafa Santos sexta-feira, 17 de agosto de 2012 17:35
-
Cara você tem que adaptar o exemplo a sua realidade, no nome da sua tabela é TesteUsuario? a descrição do id do Usuario na sua tabela é idUsuario? a descrição do nome do usuario na sua tabela é nome?, você tem que deixar os nomes iguais aos dos seus campos, caso contrário não vai funcionar.
outra coisa o tipo Object serve pra vários tipos de campos.
- Editado Evandro Oliveira Novais sexta-feira, 17 de agosto de 2012 18:43
-
-
Assim funciona um ExecuteReader:
private static void CreateCommand(string queryString, string connectionString) { using (SqlConnection connection = new SqlConnection( connectionString)) { connection.Open(); SqlCommand command = new SqlCommand(queryString, connection); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { Console.WriteLine(String.Format("{0}", reader[0])); } } }
mais dúvida, procure no google pelo site do Macoratti que é em portugues qualquer coisa sobre ExecuteReader.
Rafael Santos
Observações:
1. Selecione a opção "Habilitar o Live Alerts por Padrão" nas suas configurações para que possa acompanhar em tempo real as atividades relacionadas a sua Thread;
2. Não abandone sua Thread. Ao perguntar, fique atento às respostas; ao encontrar uma solução, compartilhe;
3. As pessoas que dedicam seu tempo na busca por soluções para você não ganham nada em troca. Valorize-as e em forma de agradecimento pontue as respostas corretas.
"Quem disse que não escrevo poesias? A diferença é que as minhas começam com using System;" -
Evandro Oliveira Novais quanto a isto esta tudo bem...
Mesmo assim não estou a consegui executar....danilo marques
-
Evandro Oliveira Novais quanto a isto esta tudo bem...
Mesmo assim não estou a consegui executar....
danilo marques
veja
http://webmaicon.wordpress.com/2009/01/15/criando-uma-simples-classe-session-em-aspnet-c/
http://social.msdn.microsoft.com/Forums/pt/aspnetpt/thread/e6ff2d5e-5d6c-4d13-8702-4758b518ab98
Não esqueça de usar o componente </> na barra para posta seu código. Microsoft MCPD,MCTS,MCC
-
-
Malta obrigado pela ajuda...
Consegui resolver o problema..
using System.Data.SqlClient; public partial class Default : System.Web.UI.Page { conexao conexao = new conexao(); SqlDataReader leitura; SqlCommand comando = new SqlCommand(); protected void Page_Load(object sender, EventArgs e) { } protected void iniciarlBtn_Click(object sender, EventArgs e) { InciarLogin(); } public void InciarLogin() { String consulta = "select idUsuarios from Usuarios where nomeUsuario = @nomeUsuario and senha = @senha"; comando.CommandType = System.Data.CommandType.Text; comando.Parameters.AddWithValue("@nomeUsuario", Txtnomelg.Text); comando.Parameters.AddWithValue("@senha", Txtsenhalg.Text); comando.Connection = conexao.Conectar(); leitura = comando.ExecuteReader(); if (leitura.Read()) { Session["logar"] = Txtnomelg.Text; Session["logar"] = leitura.GetValue(0).ToString(); Response.Redirect("/Administrativa/admistrativaPrincipal.aspx"); } else { Response.Redirect("ErroLogin.aspx"); } conexao.Conectar().Close(); } } }
Depois é só colocar uma label nas paginas privada que vais fazer o insert, a label é para receber o valor da sessão que trais o id do usuário.
lblUsuario.Text = Session["logar"].ToString();
danilo marques
- Marcado como Resposta Danilo Marques(Iniciante Programador) segunda-feira, 10 de dezembro de 2012 02:09