Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, em tópico recente aqui postado por um colega de recuperar senha, peguei o exemplo colocado por outro forista de um vídeo e fiz algumas melhoras. Porém não estou conseguindo executar uma melhoria que eu queria fazer.
Para recuperar a senha e a redefinir por email, se pede somente o email, mas isso acho meio falho, pois email é facil de qualquer pessoa saber, então um brincalhão co o email fica disparando toda hora isso.
No original está assim.
if(isset($_POST['acao']) && $_POST['acao'] == 'recuperar'):
$email = strip_tags(filter_input(INPUT_POST, 'emailRecupera', FILTER_SANITIZE_STRING));
$verificar = mysql_query("SELECT `email` FROM `usuarios` WHERE email = '$email'");
if(mysql_num_rows($verificar) == 1){
$codigo = base64_encode($email);
$data_expirar = date('Y-m-d H:i:s', strtotime('+1 day'));
Para melhorar eu decidi colocar no recuperar senha o login, então para enviar o email, é preciso digitar o login para verificar se o email corresponde ao login do usuário, e só assim ele envia o email ao usuário.
if(isset($_POST['acao']) && $_POST['acao'] == 'recuperar'):
$email = strip_tags(filter_input(INPUT_POST, 'emailRecupera', FILTER_SANITIZE_STRING));
$login = strip_tags(filter_input(INPUT_POST, 'loginRecupera', FILTER_SANITIZE_STRING));
$verificar = mysql_query("SELECT * FROM `usuarios` WHERE email = '$email', login = '$login'");
if(mysql_num_rows($verificar) == 1){
$codigo = base64_encode($email);
$codigo2 = base64_encode($login);
$data_expirar = date('Y-m-d H:i:s', strtotime('+1 day'));
No insert é tudo ok, criei o campo código2 na tabela. Só estou com dificuldade no select, pois ali é que ele não está fazendo a comparação. Se eu no where deixar só o email ele dispara normal, grava a codificação do email e do login no banco, mas grava qualquer nome que eu escrever no login, e não compara o login e email do mesmo usuário. Então no select que acho que não consegui estar fazendo a comparação correta.provavelmente seja coisa simples
Antes
$verificar = mysql_query("SELECT * FROM `usuarios` WHERE email = '$email', login = '$login'");
depois (tirado a virgula e acrescentado somente o AND)
$verificar = mysql_query("SELECT * FROM `usuarios` WHERE email = '$email' AND login = '$login'");Cara, eu tinha tentado deste jeito e também assim
$verificar = mysql_query("SELECT * FROM `usuarios` WHERE email = '$email' OR login = '$login'");
E não tinha dado certo, agora copiei o seu e deu certo, Fiz alguma coisa errada que não estava dando certo. Mas obrigadão.
marxrtf faça um debug pra ver como está sendo executado seu select. Depois roda no seu banco pra ver se retorna algo.