daya 0 Denunciar post Postado Maio 2, 2008 Olá! estou fazendo uma página para troca de senha de um webmail. Sendo que o usuario ja esteja logado no email como poderei fazer pra ele poder mudar de senha. tenho a uma página html com o formulario: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title><roundcube:object name="pagetitle" /></title> <roundcube:include file="/includes/links.html" /> <link rel="stylesheet" type="text/css" href="/settings.css" /> </head> <body> <roundcube:include file="/includes/taskbar.html" /> <roundcube:include file="/includes/header.html" /> <roundcube:include file="/includes/settingstabs.html" /> <div id="userprefs-box"> <div id="userprefs-title"><roundcube:label name="managepasswd" /></div> <br></br><br><br><br><br><br><br> <table cellpadding=5 cellspacing=1> <form target="dinges" action="trocasenha.php" method="POST"> <tr><td class=list align=right>Nova senha:</td> <td class=list><input type=password name=newpwd id=newpwd size=32 /></td> </tr> <tr><td class=list align=right>Confirma nova senha:</td><td class=list><input type=password name=conpwd id=conpwd size=32></td></tr> <tr><td class=listtitle colspan=2 align=right><input type=submit target="_blank" value="Trocar senha"></td></tr> </form> <table> </div> <br> <roundcube:include file="/includes/settingscripts.html" /> <iframe name="dinges" src="skins/default/templates/blank.htm" scrolling="no" frameborder="0" allowtransparency="1"></iframe> </body> </html> e preciso de uma outra que chame o banco e faça as alterações, mas não tenho ideia de como posso fazer isto, se alguém puder me ajudar!!!!! Desde já obrigada. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Maio 2, 2008 daya você tem conhecimento sobre a base de dados de seu webmail ? ou seja, conhece o campo que armazena a senha ? Compartilhar este post Link para o post Compartilhar em outros sites
daya 0 Denunciar post Postado Maio 2, 2008 Sim, tenho conhecimento da base de dados e sei o campo que contem a senha Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Maio 2, 2008 Certo, vamos lá então ? posta aqui pra mim o nome do campo que armazena a senha e o nome de sua tabela. Verifique se esta senha é criptografada em MD5 também, se for me avise. aguardo. Compartilhar este post Link para o post Compartilhar em outros sites
daya 0 Denunciar post Postado Maio 2, 2008 armazena a senha= password tabela=users e a senha eh criptografada em MD5. armazena a senha= password tabela=users e a senha eh criptografada em MD5. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Maio 2, 2008 Certinho, vou fazer aqui e te passar, o resto é com você, vou colocar em maiúsculo o que for preciso para você alterar. Aguarde... Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
daya 0 Denunciar post Postado Maio 2, 2008 ok! vou aguadar então... obrigada! Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Maio 2, 2008 Então daya, aqui estou hehe, vou ter que te explicar algumas coisinhas antes, lá vai o código [Está Modificado]. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title><roundcube:object name="pagetitle" /></title> <roundcube:include file="/includes/links.html" /> <link rel="stylesheet" type="text/css" href="/settings.css" /> </head> <body> <roundcube:include file="/includes/taskbar.html" /> <roundcube:include file="/includes/header.html" /> <roundcube:include file="/includes/settingstabs.html" /> <div id="userprefs-box"> <div id="userprefs-title"><roundcube:label name="managepasswd" /></div> <br></br><br><br><br><br><br><br> <table cellpadding=5 cellspacing=1> <form name="trcar_senha" action="" method="POST"> <tr><td class=list align=right>Nova senha:</td> <td class=list><input type="password" name="newpwd" id="newpwd" size="32" /></td> </tr> <tr><td class=list align=right>Confirma nova senha:</td><td class=list><input type=password name=conpwd id=conpwd size=32></td></tr> <tr><td class=listtitle colspan=2 align=right><input type="submit" value="Trocar senha" name="trocar"></td></tr> </form> <table> </div> <br> <roundcube:include file="/includes/settingscripts.html" /> <iframe name="dinges" src="skins/default/templates/blank.htm" scrolling="no" frameborder="0" allowtransparency="1"></iframe> </body> </html> <?php define('HOST','localhost'); define('USUARIO','USUARIO O DB AQUI !'); define('SENHA','SENHA DO USUÁRIO DO DB AQUI !'); define('DB','NOME DO DB AQUI !'); define('ERRO','Erro ao se conectar com a base de dados'); $con=mysql_connect(HOST,USUARIO,SENHA)or die(ERRO. mysql_error($con)); if($_SERVER['REQUEST_METHOD']=='POST'){ if(isset($_POST['trocar'])){ (($_POST['newpwd']) != ($_POST['conpwd'])) ? (print('As senhas não coinsidem.')) : md5($_POST['newpwd']); $trocar_s=mysql_query("UPDATE user SET password='{$_POST['newpwd']}' WHERE CAMPO_ID='ID DO USUÁRIO'")or die(mysql_error()); } } ?> Vamos a explicação: Note que na query de atualização, no WHERE eu coloquei em maiúculo pra você ver que ali terá que ser o campo que armazena o ID referente ao usuário, onde tem ID DO USUÁRIO é pra você pegar o ID do usuário e colocar ali, sabe como pegar o ID do usuário não sabe ? terá que pega-lo via GET ou POST de algum outro link que leva a página de trocar a senha. se tiver dúvidas posta ai. Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
daya 0 Denunciar post Postado Maio 2, 2008 Alaerte muito obrigada pela ajuda.... mas fiz como você disse só que não acontece nada ele retorna novamente a pagina mas sem mudar a senha. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Maio 2, 2008 Poste aqui como você fez. Compartilhar este post Link para o post Compartilhar em outros sites
daya 0 Denunciar post Postado Maio 2, 2008 trocasenha.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title><roundcube:object name="pagetitle" /></title> <roundcube:include file="/includes/links.html" /> <link rel="stylesheet" type="text/css" href="/settings.css" /> </head> <body> <roundcube:include file="/includes/taskbar.html" /> <roundcube:include file="/includes/header.html" /> <roundcube:include file="/includes/settingstabs.html" /> <roundcube:include file="/templates/passwd.html" /> <?php $OUTPUT= $_POST["OUTPUT"]; define('HOST','localhost'); define('USUARIO','root'); define('SENHA','secury.s3cur1'); define('DB',' mailscanner'); define('ERRO','Erro ao se conectar com a base de dados'); $con=mysql_connect(HOST,USUARIO,SENHA)or die(ERRO. mysql_error($con)); if($_SERVER['REQUEST_METHOD']=='POST'){ if(isset($_POST['trocar'])){ (($_POST['newpwd']) != ($_POST['conpwd'])) ? (print('As senhas não coinsidem.')) : md5($_POST['newpwd']); $trocasenha=mysql_query("UPDATE user SET password='{$_POST['newpwd']}' WHERE password='$OUTPUT'")or die(mysql_error()); } } ?> <roundcube:include file="/includes/settingscripts.html" /> <iframe name="dinges" src="skins/default/templates/blank.htm" scrolling="no" frameborder="0" allowtransparency="1"></iframe> </body> </html> Compartilhar este post Link para o post Compartilhar em outros sites
daya 0 Denunciar post Postado Maio 2, 2008 e se fosse possivel, poderia comentar o codigo que você m enviou é que não entendo muito...heheheheh...obrigada.... Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Maio 2, 2008 Ainda está errado daya, WHERE password não... tem quer ser o ID referente ao usuário que está trocando a senha... e para isso você precisa pegá-lo no DB através da sessão autenticada do usuário, quando você faz login no sistema, pe através de cookie ou session ? enquanto ao código, eu te explico depois. Compartilhar este post Link para o post Compartilhar em outros sites
daya 0 Denunciar post Postado Maio 2, 2008 sim eu ja havia arrumado isso mas o problema continua Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Maio 2, 2008 Vamos por outro metodo então daya, adicionei mais um campo no qual o usuário deverá informar a antiga senha. CODE <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title><roundcube:object name="pagetitle" /></title> <roundcube:include file="/includes/links.html" /> <link rel="stylesheet" type="text/css" href="/settings.css" /> </head> <body> <roundcube:include file="/includes/taskbar.html" /> <roundcube:include file="/includes/header.html" /> <roundcube:include file="/includes/settingstabs.html" /> <div id="userprefs-box"> <div id="userprefs-title"><roundcube:label name="managepasswd" /></div> <br></br><br><br><br><br><br><br> <table cellpadding=5 cellspacing=1> <form name="trcar_senha" action="" method="POST"> <tr><td class=list align=right>Antiga senha:</td> <td class=list><input type="password" name="senha_a" id="newpwd" size="32" /></td> </tr> <tr><td class=list align=right>Nova senha:</td> <td class=list><input type="password" name="newpwd" id="newpwd" size="32" /></td> </tr> <tr><td class=list align=right>Confirma nova senha:</td><td class=list><input type=password name=conpwd id=conpwd size=32></td></tr> <tr><td class=listtitle colspan=2 align=right><input type="submit" value="Trocar senha" name="trocar"></td></tr> </form> <table> </div> <br> <roundcube:include file="/includes/settingscripts.html" /> <iframe name="dinges" src="skins/default/templates/blank.htm" scrolling="no" frameborder="0" allowtransparency="1"></iframe> </body> </html> <?php define('HOST','localhost'); define('USUARIO','USUARIO O DB AQUI !'); define('SENHA','SENHA DO USUÁRIO DO DB AQUI !'); define('DB','NOME DO DB AQUI !'); define('ERRO','Erro ao se conectar com a base de dados'); $con=mysql_connect(HOST,USUARIO,SENHA)or die(ERRO. mysql_error($con)); if($_SERVER['REQUEST_METHOD']=='POST'){ if(isset($_POST['trocar'])){ $senha_a=mysql_query("SELECT COUNT(*) AS password FROM user WHERE password='".md5($_POST['senha_a'])."'"); if(mysql_result($senha_a,0,'password'))){ (($_POST['newpwd']) != ($_POST['conpwd'])) ? (print('As senhas não coinsidem.')) : md5($_POST['newpwd']); $trocar_s=mysql_query("UPDATE user SET password='{$_POST['newpwd']}' WHERE password='".md5($_POST['senha_a'])."'")or die(mysql_error()); }else{echo 'A senha antiga está incorreta.';} } } ?> pronto, preencha ai o usuário senha e o nome do DB e testa agora, se der erro me fala, fiz por alto. aguardo. Compartilhar este post Link para o post Compartilhar em outros sites
daya 0 Denunciar post Postado Maio 2, 2008 deu na mesma, ñ troca a senha Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Maio 2, 2008 Certo, troque apenas a parte do PHP por esta: quando você enviar o formulário aparece qual erro ? <?php define('HOST','localhost'); define('USUARIO','USUARIO O DB AQUI !'); define('SENHA','SENHA DO USUÁRIO DO DB AQUI !'); define('DB','NOME DO DB AQUI !'); define('ERRO','Erro ao se conectar com a base de dados'); $con=mysql_connect(HOST,USUARIO,SENHA)or die(ERRO. mysql_error($con)); if($_SERVER['REQUEST_METHOD']=='POST'){ if(isset($_POST['trocar'])){ $senha_antiga=mysql_query("SELECT COUNT(*) AS password FROM user WHERE password='".md5($_POST['senha_a'])."'")or die('Erro ao comparar senhas'.mysql_error($con)); if(mysql_result($senha_antiga,0,'password'))){ (($_POST['newpwd']) != ($_POST['conpwd'])) ? (print('As senhas não coinsidem.')) : md5($_POST['newpwd']); $trocar_s=mysql_query("UPDATE user SET password='{$_POST['newpwd']}' WHERE password='".md5($_POST['senha_a'])."'")or die(mysql_error()); }else{echo 'A senha antiga está incorreta.';} } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
daya 0 Denunciar post Postado Maio 2, 2008 ja fiz isto e continua ñ acontece nada e ele ñ da nenhuma mensagem de erro, apenas volta na tela do formulario d altera senha Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Maio 2, 2008 Muito estranho daya... não consigo entender, mais vamos fazer o seguinte, posta aqui pra mim a estrutura da tabela USER poste apenas os nomes dos campos, vou fazer de outro método. DE QUALQUER FORMA, TENTE O SCRIPT ASSIMA QUE PASSEI NOVAMENTE POIS FIZ UMA EDIÇÃO, TAVA COM CONFLITO DE VARIÁVEIS. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Maio 2, 2008 Daya o erro foi meu, falta de atenção mesmo, agora tente novamente: CODE <table cellpadding=5 cellspacing=1> <form name="trcar_senha" action="" method="POST"> <tr><td class=list align=right>Antiga senha:</td> <td class=list><input type="password" name="senha_a" id="senha_a" size="32" /></td> </tr> <tr><td class=list align=right>Nova senha:</td> <td class=list><input type="password" name="newpwd" id="newpwd" size="32" /></td> </tr> <tr><td class=list align=right>Confirma nova senha:</td><td class=list><input type=password name=conpwd id=conpwd size=32></td></tr> <tr><td class=listtitle colspan=2 align=right><input type="submit" value="Trocar senha" name="trocar"></td></tr> </form> <table> /div> <br> </body> </html> <?php define('HOST','localhost'); define('USUARIO','USUARIO O DB AQUI !'); define('SENHA','SENHA DO USUÁRIO DO DB AQUI !'); define('DB','NOME DO DB AQUI !'); define('ERRO','Erro ao se conectar com a base de dados'); $con=mysql_connect(HOST,USUARIO,SENHA)or die(ERRO. mysql_error($con)); if($_SERVER['REQUEST_METHOD']=='POST'){ if(isset($_POST['trocar'])){ $senha_antiga=mysql_query("SELECT COUNT(*) AS password FROM user WHERE password='".md5($_POST['senha_a'])."'")or die('Erro ao comparar senha'.mysql_error($con)); if(mysql_result($senha_antiga,0,'password'))){ (($_POST['newpwd']) != ($_POST['conpwd'])) ? (print('As senhas não coinsidem.')) : md5($_POST['newpwd']); $trocar_s=mysql_query("UPDATE user SET password='{$_POST['newpwd']}' WHERE password='".md5($_POST['senha_a'])."'")or die(mysql_error()); }else{echo 'A senha antiga está incorreta.';} } } ?> Compartilhar este post Link para o post Compartilhar em outros sites