Enviar contraseña por email mediante php

publicado por: Anonymous

Necesito obtener la contraseña de una BD y enviarla por email, el correo electrónico sera ingresado en un formulario. lo que tengo hasta el momento obtengo la contraseña pero ahora necesito comprobar si el email ingresado es igual a la de la BD y enviarlo …

¿ Alguna idea para continuar ?

Codigo PHP

  <?php
require('conexion.php');



$usuario = mysqli_real_escape_string($mysqli,$_POST['usuario']);

$sql="select * from Administrador WHERE email_Admin = '$usuario'"; 
    $result=$mysqli->query($sql);
    $error = '';
    $rows = $result->num_rows;

if($rows > 0) {
            $row = $result->fetch_assoc();
            $_SESSION['email_Admin'] = $row['email_Admin'];



}
else {

            $error = "El email ingresado no existe en nuestros registros.";
        }






?>
<html>
    <head>
                <link rel="shortcut icon" href="insignia.ico">
        <title>Recuperar contraseña</title>
               <link rel="stylesheet" type="text/css" href="css2.css">
    </head>

    <body style="background-color:#FFFFFF;">
                          <center>
                          <img src="santo_tomas.jpg" width="185" height="248">



        <form action="<?php $_SERVER['PHP_SELF']; ?>" method="POST" > 

                        <div id="h1">Recuperar contraseña</div>
                         <section>
            <div><input class="form-element form-field" id="usuario" name="usuario" placeholder="Email" type="text" ></div>

                          </section>



                          <section>
            <div><input class="form-element form-button" name="login" type="submit" value="Enviar" id="button"></div> 
                           </section>
        </form> 
        <div style = "font-size:16px; color:#00695C;"><?php echo isset($error) ? utf8_decode($error) : '' ; ?></div>



</center>

    </body>
</html> 

solución

Para enviar un correo electrónico mediante PHP se podría utilizar varios métodos, podrías utilizar la función mail() la que te han mencionado, o también existen una librería llamado PHPMailer muy popular y fácil de implementar.

También veo un poco vulnerable tu código, antes de realizar nuestra consulta SQL podríamos hacer algunas comprobaciones mediante PHP, por ejemplo, si está definido nuestro formulario y no es NULL, o si el input no este vacío, etc.

Descargar Librería PHPMailer

Ejemplo mediante PHPMailer:

<?php
 //Reseteo variables.
 $error = $usuario = NULL;

 //Comprobamos si esta definida el formulario y no es NULL.
 if (isset($_POST['login'])) {

    //Comprobamos que no este vacio nuestro input.
    if (empty($_POST['usuario'])) {
        $error = 'El email es obligatorio';
    } else {
        //Importante, añadir la conexion donde se va utilizar.
        require_once'conexion.php';
        $usuario = mysqli_real_escape_string($mysqli,$_POST['usuario']);
    }

    //Si es verdadero nuestro input, continuamos.
    if ($usuario) {         
        //Sentencia
        $sql = $mysqli->query("SELECT * FROM Administrador WHERE email_Admin = '$usuario' LIMIT 1"); 
        //Comprobamos si existe el registro.
        if ($sql->num_rows===1) {
            $row = $sql->fetch_assoc();
            $_SESSION['email_Admin'] = $row['email_Admin'];

            //Compones nuestro correo electronico

            //Incluimos libreria PHPmailer (deberas descargarlo).
            require'class.phpmailer.php';

            //Nuevo correo electronico.
            $mail = new PHPMailer;
            //Caracteres.
            $mail->CharSet = 'UTF-8';

            //De dirección correo electrónico y el nombre
            $mail->From = "[email protected]";
            $mail->FromName = "Nombre de dominio";

            //Dirección de envio y nombre.
            $mail->addAddress($row['email_Admin'], 'Nombre Admin');
            //Dirección a la que responderá destinatario.
            $mail->addReplyTo("[email protected]","Tunombre");

            //BCC ->  incluir copia oculta de email enviado.
            $mail->addBCC("[email protected]");

            //Enviar codigo HTML o texto plano.
            $mail->isHTML(true);

            //Titulo email.
            $mail->Subject = "Nuestro titulo";
            //Cuerpo email con HTML.
            $mail->Body = "Tu contraseña actualizada es:" . $row['tu_contrasena']; //Podrias personalizar mediante HTML y CSS :)

            //Comprobamos el envio.
            if(!$mail->send()) {                    
                $error = "Ocurrió un error inesperado con él envió del correo electrónico, inténtelo de nuevo más tarde, disculpa las molestias.";
            } else {
                $error = "Se envio correctamente el correo electrónico.";
            }   
        } else { //0 registros.
            $error = 'El email ingresado no existe en nuestros registros.';
        } $sql->close();
    }       
 }
?>

Te aconsejo a utilizar sentencias preparadas, son muy últiles frente a Inyecciones SQL.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *