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

Alguem Poderia Me Dar Um Luz


Guest Marcel

Pergunta

Bom pessoal, fiz um sistema de login e senha, e preciso fazer o eskema de "eskeceu a senha" se alguém poder me dar um luz de como começar? bem pessoal não estou pedingo codigo pronto e sim como começar a fazer entendi.

Tipo para poder enviar a senha que o usuario eskeceu, o usuario teria que digitar o nome e o email que se cadastrou para poder confirmar, e se for confirmado o nome e email ai sim envia a senha para o email, se não for confirmado dar erro. entendi?

Link para o comentário
Compartilhar em outros sites

22 respostass a esta questão

Posts Recomendados

  • 0

Isso mesmo, tu pede para ele digitar o e-mail e algum dado que confirme que é ele, tipo nome de usuário, como tu falou. Depois de ele digitar, tu verifica se o e-mail cadastrado está no banco de dados e se ele corresponde ao nome de usuário confirmado. Se corresponder, tu envia a senha para o e-mail, só não mostra a senha na tela, porque daí qualquer um pode recuperar a senha sabendo o e-mail e o nome de usuário do cara.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Marcel

cara fiz um exemplo q busca o e-mail digitado pelo usuário no banco e se existir ele irá mandar um e-mail para o mesmo.

Abaixo vai o exemplo.

---------------------------------------------------------------

<%

email = Request.Form("email")

If email = "" Then

mensagem = "Erro campo vazio"

end if

Set conn = Server.CreateObject("ADODB.Connection")

strconn = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../banco.mdb")

Set sen = Server.CreateObject("ADODB.Recordset")

strsen = "Select * From usuario where email = '"& email &"'"

sen.open strsen, conn

If not sen.EOF then

nome = sen("nome")

senha = sen("senha")

usuario = sen("usuario")

email = sen("email")

Set Mail = Server.CreateObject("Persits.MailSender")

'Servidor de Envio de Mensagens

Mail.Host = "smtp.seusite.com.br"

'Quem envia a mensagem

Mail.From = "contatos@seusite.com.br"

Mail.FromName = "Site.com.br"'

'Quem irá receber a mensagem

Mail.AddAddress sen("email"), sen("nome")

'Assunto da Mensagem

Mail.Subject = "Recuperação de Senha"

'Corpo da Mensagem

Mail.IsHTML = True

Mail.Body = "<html><body topmargin='0' leftmargin='0'>" & body & "</body></html>"

'Verifica se ouve erro

On Error Resume Next ' catch errors

'Enviando a Mensagem

Mail.Send

'Pega o erro mostra sua descrisão

If Err <> 0 Then

erro = 1

mensagem = Err.Description

else

mensagem = "E-mail enviado com Sucesso."

End If

Else

sen.close

Set sen = Nothing

mensagem = "E-Mail não Cadastrado"

End If

Response.Write mensagem

%>

---------------------------------------------------------------

Obs: Este código é só o de envio da mensagem e verificação do email.

T+

Link para o comentário
Compartilhar em outros sites

  • 0

assim, eu já sei como fazer, mas não estou entendendo como fazer para pegar a senha do banco de dados e mandar para o email digitado entendi ??? só esse é o problema se alguém pode me ajudar?

Link para o comentário
Compartilhar em outros sites

  • 0

Malcel

no código q postei na msg anterior já faz isso:

senha = sen("senha")

para inserir ela no corpo da msg enviada no e-mail é só chama a variavel senha.

Ex:

<%

body = "<font color=""#ff0000"">"& senha

%>

colocando essa linha antes do Mail.Body a senha já aparecerá no corpo da msg..

T+

Link para o comentário
Compartilhar em outros sites

  • 0

car eu tentei usar o seu exemplo e deu erro na seguinte linha:

sen.open strsen, conn

aonde que eu poderia estar errando?

eu criei um banco de dados access com os mesmos dados do seu exemplo,na mesma ordem,tudo certinho.

o formulário envia perfeitamente para o banco mais eu to tendo problemas nessa linha.

eu apenas mudei essa linha

strconn = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../banco.mdb")

para

strconn = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("banco.mdb")

por que a página esta no mesmo diretório.

Link para o comentário
Compartilhar em outros sites

  • 0

Fernando,

Ae cara o erro é que eu esqueci de colocar a linha para abrir o banco, substitui ae:

de

Set conn = Server.CreateObject("ADODB.Connection")

strconn = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../banco.mdb")

para

Set conn = Server.CreateObject("ADODB.Connection")

strconn = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../banco.mdb")

conn.open strconn

Caso não foi isso poste a descrição do erro:

T+

Link para o comentário
Compartilhar em outros sites

  • 0

no código do nosso amigo caicai.

particularmente eu acho nescessario num sistema de login, a verificação do username e do e-mail(no minimo) para o user recuperar a senha. B)

na linha que recupera os dados do formulario. coloque isso

username = Request.Form("username")

na linha que verifica os dados no bd troque por essa:

strsen = "Select * From usuario where username = '"& username &"' AND email = '"& email &"'"

assim o cód do caicai vai verificar o username e e-mail, se os dois constarem no mesmo campo ele envia a senha para o e-mail cadastrado.

espero ter ajudado. :rolleyes:

Link para o comentário
Compartilhar em outros sites

  • 0

cara quele era o erro mesmo agora esta dando erro na linha:

Set Mail = Server.CreateObject("Persits.MailSender")

abaixo segue o código todo para você poder ver aonde estou errando

<html>

<head>

<title>teste</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body>

<%

email = Request.Form("email")

If email = "" Then

mensagem = "Erro campo vazio"

end if

Set conn = Server.CreateObject("ADODB.Connection")

strconn = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db/banco.mdb")

conn.open strconn

Set sen = Server.CreateObject("ADODB.Recordset")

strsen = "Select * From usuario where email = '"& email &"'"

sen.open strsen, conn

If not sen.EOF then

nome = sen("nome")

senha = sen("senha")

usuario = sen("usuario")

email = sen("email")

Set Mail = Server.CreateObject("Persits.MailSender")

'Servidor de Envio de Mensagens

Mail.Host = "smtp.rio.terra.com.br"

'Quem envia a mensagem

Mail.From = "firmino.figueira@terra.com.br"

Mail.FromName = "Fernando"'

'Quem irá receber a mensagem

Mail.AddAddress sen("email"), sen("nome")

'Assunto da Mensagem

Mail.Subject = "Recuperação de Senha"

'Corpo da Mensagem

Mail.IsHTML = True

Mail.Body = "<html><body topmargin='0' leftmargin='0'>" & body & "</body></html>"

'Verifica se ouve erro

On Error Resume Next ' catch errors

'Enviando a Mensagem

Mail.Send

'Pega o erro mostra sua descrisão

If Err <> 0 Then

erro = 1

mensagem = Err.Description

else

mensagem = "E-mail enviado com Sucesso."

End If

Else

sen.close

Set sen = Nothing

mensagem = "E-Mail não Cadastrado"

End If

Response.Write mensagem

%>

<%

body = "<font color=""#ff0000"">"& senha

%>

</body>

</html>

Link para o comentário
Compartilhar em outros sites

  • 0

Fernando,

É capas de você não ter instalado o ASPEMAIL caso for isso faz o download no site www.aspemail.com é gratuito.

Outra coisa q observei a linha:

body = "<font color=""#ff0000"">"& senha

ela tem q estar antes da linha:

Mail.Body = "<html><body topmargin='0' leftmargin='0'>" & body & "</body></html>"

Assim:

body = "<font color=""#ff0000"">"& senha

Mail.Body = "<html><body topmargin='0' leftmargin='0'>" & body & "</body></html>"

T+

Link para o comentário
Compartilhar em outros sites

  • 0

-No lugar do aspmail tu pode usar o CDONTS... que é do proprio windows (mas tem que configurar)

-podemos imaginar que o mesmo usuario pode ter se cadastrado mais de uma vez, até com o mesmo codinome e email, assim a pesquisa do sql somente mostraria a primeira ocorrencia destes dados no cadastro, o que não necessariamente quer dizer que seja o codigo do cadastro no qual ele está interessado... Isso poderia fazê-lo receber uma senha que não corresponde, por exemplo, ao codigo de usuario referente aos seus posts do forum...Para evitar isso tem-se que impedir que um email e codinome que já esteja cadastrado seja aceito num novo cadastro. (neste caso, lhe reenvie a senha)

Link para o comentário
Compartilhar em outros sites

  • 0

Amigo Caicai

eu fiz a modificação do body como você falou,mais realmente eu percebi que o problema deve ser por eu não ter o aspemail na minha máquina local.O q eu fiz foi colocar no servidor aonde hospedo a minha página,e apareceu uma msg estranha que nunca tinha visto antes ,eu acho que não é mensagem de erro do código,mais....

a msg é:

554 : Recipient address rejected: Relay access denied

você poderia dar uma olhada?

o endereço é:

http://www.fernando.pessoal.nom.br/teste/e...recuperando.htm

testa com a conta de e-mail:

framos@ibmecrj.br

Link para o comentário
Compartilhar em outros sites

  • 0

Caicai

eu mudei a conta de e-mail que iria receber que no caso era framos@ibmecrj.br,para uma outra conta de e-mail e erro ainda persiste.

no caso seria dificil eu modificar a conta de envio de e-mails por que aquela é umas das contas que eu tenho de e-mail,a outra é do ig e o ig não possui SMTP ou não disponibilza só da para mandar pelo webmail.

você poderia me ajudar,você tem alguma conta que eu pudesse testar?

Link para o comentário
Compartilhar em outros sites

  • 0

cai cai

eu usei a sua conta de e-mail,e criei uma conta de e-mail no bol e configueri no bol mesmo para poder usar pop e smtp e a mensagem que deu la no meu servidor quando tento usar.

550 Command failed. Mailbox is unavailable.

cara você não sabe como fazer esse lance de esqueci senha com o CDONTS?

Link para o comentário
Compartilhar em outros sites

  • 0

Fernando ae vai em Cdonts.

<%

Else

Set Conn = Server.CreateObject("ADODB.Connection")

Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=banco.mdb"

sql = "SELECT Email, Password FROM Usuarios WHERE Email = '"&email&"'"

Set RS = Conn.Execute(sql)

If RS.EOF Then

Response.write "<p><br><br><br><center>Email Inválido!</center>"

Else

password = RS("password")

Call SendPW(email, password)

Response.Write "<p><br><br><br><center>Senha enviada!</center>"

RS.Close

Conn.Close

Set RS = Nothing

Set Conn = Nothing

End If

End If

Sub SendPW(email, password)

Set cdoMail = Server.CreateObject("CDONTS.NewMail")

cdoMail.From = "webmaster@seudominio.com.br"

cdoMail.To = email

cdoMail.Subject = "Lembrete de senha."

cdoMail.Body = password & vbcrlf & vbcrlf & vbcrlf _

& "*** Mensagem Automatica ***"

cdoMail.Send

Set cdoMail = Nothing

End Sub

%>

T+ cara

Link para o comentário
Compartilhar em outros sites

  • 0

Tu tens de usar uma conta que seja do provedor onde o site está, pois provavelmente o programa do servidor de emails deve estar validando a origem das contas, para evitar que seja usado por usuários não habilitados ou para spam...

Tente usar como "cdoMail.From=" a conta "nome_da_conta@fernando.pessoal.nom.br" que o servidor deve aceitar e enviar...

Lucky

Link para o comentário
Compartilhar em outros sites

  • 0

cai cai

eu usei o seu exemplo mais estou com algumas dúvidas.

-qual o smtp que envia o e-mail?

- ecomo eu faria para ele recuperar a senha?

-e no código o usuário teria que colocar a senha tb?

abaixo segue o recuperando.htm aonde esta o form para colocar o e-mail e senha e o recuperando.asp aonde esta o código do cdonts.

recuperando.htm

<html>

<head>

<title>Untitled Document</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body>

coloque sua senha e e-mail

<form name="form1" method="post" action="recuperando.asp">

<p>

<input name="email" type="text" id="email">

</p>

<p>

<input name="senha" type="text" id="senha">

</p>

<p align="center">

<input name="enviar" type="submit" id="enviar" value="enviar">

</p>

</form>

</body>

</html>

recuperando.asp

<html>

<head>

<title>teste</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body>

<%

Set Conn = Server.CreateObject("ADODB.Connection")

Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Fernando\scripts\esqueci senha\db\banco.mdb"

sql = "SELECT email, senha FROM usuario WHERE email = '"&email&"'"

Set RS = Conn.Execute(sql)

If RS.EOF Then

Response.write "<p><br><br><br><center>Email Inválido!</center>"

Else

senha = RS("senha")

Call SendPW(email, senha)

Response.Write "<p><br><br><br><center>Senha enviada!</center>"

RS.Close

Conn.Close

Set RS = Nothing

Set Conn = Nothing

End If

Sub SendPW(email, senha)

Set cdoMail = Server.CreateObject("CDONTS.NewMail")

cdoMail.From = "firmino.figueira@terra.com.br"

cdoMail.To = email

cdoMail.Subject = "Lembrete de senha."

cdoMail.Body = senha & vbcrlf & vbcrlf & vbcrlf _

& "*** Mensagem Automatica ***"

cdoMail.Send

Set cdoMail = Nothing

End Sub

%>

</body>

</html>

tente me ajudar,eu queria que no recuperando.htm o usuário colocasse o usuario(que foi cadastrado la no cadastro e que vai para o banco de dados de nome banco.mdb na tabela usuario com o campo usuario) e fosse mandado a senha q ele esqueceu para o e-mail que ele cadastrou,e aparecesse uma msg " a sua senha foi enviada para o seu e-mail cadastrado."

espero que tenha entendido.

Link para o comentário
Compartilhar em outros sites

  • 0

fernando beleza

cara o cdonts pega o smtp direto com o servidor ou seja você terá q usa o seu e-mail como o amigo Lucky falou.

Para recuperar a senha segue o código pronto abaixo junto com o campo usuario em vez do email no recuperando.htm.

----------------------------------------------------------------

Recuperando.htm

'<html>

<head>

<title>Untitled Document</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body>

coloque sua senha e e-mail

<form name="form1" method="post" action="recuperando.asp">

<p>

<input name="usuario" type="text" value="">

</p>

<p align="center">

<input name="enviar" type="submit" id="enviar" value="enviar">

</p>

</form>

</body>

</html>

----------------------------

Recuperando.asp

<html>

<head>

<title>teste</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body>

<%

Set Conn = Server.CreateObject("ADODB.Connection")

Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Fernando\scripts\esqueci senha\db\banco.mdb"

user = Request.Form("usuario")

sql = "SELECT * FROM usuario WHERE usuario = '"&user&"'"

Set RS = Conn.Execute(sql)

If RS.EOF Then

Response.write "<p><br><br><br><center>Usuário Inválido!</center>"

Else

senha = RS("senha")

email = RS("email")

Call SendPW(email, senha)

Response.Write "<p><br><br><br><centerSua Senha foi enviada para o e-mail cadastrado!</center>"

RS.Close

Conn.Close

Set RS = Nothing

Set Conn = Nothing

End If

Sub SendPW(email, senha)

Set cdoMail = Server.CreateObject("CDONTS.NewMail")

cdoMail.From = "firmino.figueira@terra.com.br"

cdoMail.To = email

cdoMail.Subject = "Lembrete de senha."

cdoMail.Body = senha & vbcrlf & vbcrlf & vbcrlf _

& "*** Mensagem Automatica ***"

cdoMail.Send

Set cdoMail = Nothing

End Sub

%>

</body>

</html>

-------------------------

cara acho q é isso... qualquer coisa posta ae.

T+

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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...