Ir para conteúdo
Fórum Script Brasil
  • 0

Alterar Senha


mestre fyoda

Pergunta

Esta acontecendo o seguinte , quando o usuario ele altera a sua senha acaba alterando todas as senhas no banco de dados .

alguém poderia me passar o codigo corrigido com a explicação do que foi feito .

<!--#include file="restrito.asp"-->
<!--#include file="conectar.asp"-->
<% AbreConexao
If Request.Form("enviado") = "sim" Then
senha = Replace(Request.Form("senha"), "'", "/")
nova_senha = Replace(Request.Form("nova_senha"), "'", "/")
confirma_nova_senha = Replace(Request.Form("confirma_nova_senha"), "'", "/")

Set RS = Conexao.Execute("SELECT * FROM usuarios WHERE senha = '"&senha&"'")
If  RS.EOF Then
Response.Write "Senha Atual incorreta!<BR><a href=alterar.asp>Voltar</a>"
Else
If nova_senha = confirma_nova_senha Then
Conexao.Execute("UPDATE usuarios SET  senha = '"&nova_senha&"'")
Response.Write "Dados alterados"
Else
Response.Write "Erro na Confirmação da Nova Senha"

End If
End IF
Else
Set dados = Conexao.Execute("SELECT * FROM usuarios WHERE login = '"&Session("login")&"'")%>
<form method="POST" action="alterar_senha.asp">
<input type="hidden" name="enviado" value="sim">
Senha Atual: <input type="text" name="senha"  size="20"><BR>
Nova Senha: <input type="password" name="nova_senha" size="20"><BR>
Redigite a Nova Senha: <input type="password" name="confirma_nova_senha" size="20"><BR>

<input type="submit" value="Alterar">
</form>
<% End If
FechaConexao %>

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

olá carinha

peguei apenas uma parte do seu codigo:

Set RS = Conexao.Execute("SELECT * FROM usuarios WHERE senha = '"&senha&"'")

If  RS.EOF Then

Response.Write "Senha Atual incorreta!<BR><a href=alterar.asp>Voltar</a>"

Else

If nova_senha = confirma_nova_senha Then

Conexao.Execute("UPDATE usuarios SET  senha = '"&nova_senha&"'")

Response.Write "Dados alterados"

tá vendo a linha em vermelho?

Traduzindo ela:

- ATUALIZE a tabela usuarios COLOCANDO no campo SENHA = '"&NOVA_SENHA&"'

veja, você esta dizendo que é para COLOCAR SENHA = NOVA SENHA.. mas não tá dizendo ONDE deve acontecer isso. não ta dizendo em qual USUARIO é pra isso acontecer!

Por isso, todas as senhas do banco são alteradas.

O correto, seria mais ou menos assim:

Conexao.Execute("UPDATE usuarios SET  senha = '"&nova_senha&"' WHERE login = '"&Session("login")&"'")

Veja como ficou..

Eu adicionei a parte que está em azul.

Assim, traduzindo, ficou:

- ATUALIZE a tabela usuarios COLOCANDO no campo SENHA = '"&NOVA_SENHA&"' ONDE login = '"&session("login")&"'

Entendeu?

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Valeu dark , você esta correto , mas agora esta acontecendo o seguinte , caso você digite alguma senha que esta no banco de dados ele troca .

Ai eu acrescentei login = '"&login&"' na linha 31 . Mas agora ele sempre da que a Senha Atual esta incorreta .

porque ?

<!--#include file="restrito.asp"-->
<!--#include file="conectar.asp"-->
<% AbreConexao
If Request.Form("enviado") = "sim" Then
senha = Replace(Request.Form("senha"), "'", "/")
nova_senha = Replace(Request.Form("nova_senha"), "'", "/")
confirma_nova_senha = Replace(Request.Form("confirma_nova_senha"), "'", "/")

Set RS = Conexao.Execute("SELECT * FROM usuarios WHERE login = '"&login&"' AND senha = '"&senha&"'")
If not RS.EOF Then
Response.Write "Senha Atual incorreta!<BR><a href=alterar.asp>Voltar</a>"
Else

If  nova_senha = "" Then
Response.Write " O Campo Nova Senha não está preenchido !<BR><a href=alterar.asp>Voltar</a>"
Else

If  confirma_nova_senha = ""  Then
Response.Write "O Campo Redigite a Nova Senha não está preenchido!<BR><a href=alterar.asp>Voltar</a>"
Else

If nova_senha = confirma_nova_senha Then
Conexao.Execute("UPDATE usuarios SET  senha = '"&nova_senha&"' WHERE login = '"&Session("login")&"'")
Response.Write "Dados alterados"
Else
Response.Write "Erro na Confirmação da Nova Senha"

End If
End IF
End If
End IF

Else
Set dados = Conexao.Execute("SELECT * FROM usuarios WHERE login = '"&Session("login")&"'")%>

AQUI VAI O FORMULARIO 
....
....
<% End If
FechaConexao %> 

Link para o comentário
Compartilhar em outros sites

  • 0

Eu teria uma solução diferente para vc:

não sei como é seu sistema, mas creio que seja assim: "o carinha tah numa tela onde tem uma opção que chama um form para mudar senha, certo?"

quando o cara se autentica, para acessar o seu painel de controle, crie uma sessão "LOGIN", aí não será necessário que no asp haja verificação, NOVAMENTE, de login e senha, como você coloca no seu script, somente se um "WHERE login = session("login")", MAS ANTES do cara poder acessar o form que faz a mudança da senha no BD, faz um javascript que TESTE SE a senha (creio que você exija do user que ele digite a senha atual para depois poder digitar a nova certo?) entrada é a mesma que está no BD.

Para isso, cria um input type hidden que seja um recorset do bd com a senha atual , bota um name digamos "atual bd", depois cria um type text, com name = atual, e no momento de enviar o form, (que chamará o asp que modifica a senha no bd), chame uma função javascript que verifique se "atual bd" = "atual", se for, chama o ASP, senão, alerta que a senha atual está incorreta.

Isso só peca numa coisa, SEGURANÇA, pois vai ter a senha num campo hidden, se ver o codigo fonte a senha estará lá... mas por outro lado, c você está trabalhando com sessoes, basta colocar um "if" no topo da página verificando c o carinha c autenticou...

Outra solução, mas com toda a verificação no asp, seria você tb criar uma sessão da senha, eutilizar a condição verifica-se se o request.form do "atual" fosse = a session("senha") ai segue o baile e modifica... senão, exibe o rstante da página asp, que contenha novamente o form de mudança de senha...

Espero ter ajudado

Link para o comentário
Compartilhar em outros sites

  • 0

mestre fyoda

não entendi o que você falou ali.. que acrescentou login..

foi o que eu havia postado, não:?

então, o que você quer fazer?

o modo que mostrei não funcionou?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...