Quiero enviar correos electrónicos a los usuarios cuando la olvidan sus contraseñas que los impulse a restablecer sus contraseñas. Sé que esto es discutible, y estaba buscando un par de buenas opciones/sugerencias/métodos/artículos para elegir.

Estoy pidiendo a los usuarios que pulse un enlace «contraseña olvidada» con un simple script con PHP porción de hacer esto:

$Email = $_POST['email'];
$success = false;
$formError = false;

if(isset($_POST['sub_forgot_pw'])) {

    if(empty($_POST['email'])) {
        $formError = "true";
        $error = "Please enter your e-mail address.";
    }else{
        $to = $Email;
        $subject = "Password Help";
        $message = "To reset your password, please <a href='http://www.blahblahblah.org'>Click here</a><br /><br />Do LIFE,<br /> The Team";
        $from = "CysticLife <[email protected]>";
        $headers  = 'MIME-Version: 1.0' . "\n";
        $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\n";
        $headers .= "From: $from";
        if(mail($to, $subject, $message, $headers));{
            $success = "true";
        }


    }

}
  • En mi opinión, no se deben almacenar las contraseñas y el usuario no debería tener que crear otra cuenta para el uso de su servicio. He creado este sencillo openid ayudante de biblioteca(usa LightOpenID y openid-selector) que se puede utilizar si te gusta el lugar? => github.com/alfredwesterveld/php-openid
  • O usted puede usar esta solución, es C#, pero deben adaptarse a sus necesidades.
  • Sólo una nota al margen. Esta consulta SELECT * FROM de los Usuarios DONDE Status = ‘activo» se ve mal para mí. Carece de al menos una condición. Debe ser algo como SELECT * FROM de los Usuarios DONDE Status = ‘activo’ Y email = ‘$email»
  • Esos son geniales sin embargo tengo unos 3.500 miembros en mi sitio. Sólo tiene que averiguar una transición suave.
  • Soy capaz de enviar mensajes electrónicos de bien.
  • SELECT * FROM Users WHERE status = 'active' volverá siempre al menos una fila hasta que haya al menos un usuario activo. $Email = $result['Email']; es el correo electrónico el valor de la primera fila devuelta por la consulta, así que no puedo averiguar cómo puede funciona, pero me alegro de que funciona para usted! 🙂
  • Oh hombre, su lunes. Buen ojo. debe deshacerse de esa consulta todos juntos y hacer sólo $_POST[‘emal’];
  • por ayudarme a darme cuenta de mi grotesca sobre el sitio.

2 Comentarios

  1. 11

    Aquí es lo que yo hago:

    He reset_password tabla. Cuando alguien le pide un reset, generalmente se haga clic en un enlace en su sitio que dice «¿olvidó su contraseña?» en el que entrar en su correo electrónico con la que se registró y su sistema envía un enlace.
    Por supuesto, usted empezar con la búsqueda de si el usuario está registrado en absoluto. mediante la selección de los usuarios de correo = $_POST[‘email’].
    Si existen, hacer un token generado aleatoriamente, como

    $token = md5($_POST['email'].time());

    Pero como Ta Ta expresado en el comentario de abajo, puede que quiera usar algo un poco menos obvio para generar el token. crypt() puede aceptar una sal patrón, si quieres.

    Insertar la solicitud (correo electrónico y token) en el reset_password de la tabla, luego de enviar un enlace como

    http://www.domain.com/resetpassword.php?token=<?php echo $token; ?>

    A continuación, en el archivo de tomar el $_GET[‘token’] y referencia cruzada con la reset_password tabla. Si el token es válido, se presentan con un formulario que pide la nueva contraseña.
    Al enviar, seleccione el usuario con la dirección de correo electrónico relacionados con ese token y actualización de la tabla de usuario.

    • Al menos para mí $token = md5($_POST[‘email’].time()); es el trabajo mejor. Sin el paréntesis la variable token fue, dependiendo únicamente de la dirección de correo electrónico.
    • (Publicado originalmente por un usuario anónimo): NO utilice este consejo, es muy inseguro. Todos alguien tendría que hacer para restablecer la contraseña en su sitio es entrar alguien de correo electrónico en el reset en blanco, y un vistazo a su reloj de pulsera, a continuación, hacer el mismo token de sí mismos. Nadie puede saber el tiempo a la segunda, y cualquier persona puede tomar el mismo MD5.
    • Cierto, pero tendría que ser exacta y ellos también tienen que saber que este es sin duda el método utilizado, que no puede ser demasiado difícil de descifrar si incluso un poco de esfuerzo se puso en el hack. Pero el concepto general no es muy inseguro tanto tiempo como crear el token de reglas que no son fácilmente identificados por sólo mirar a la url.
    • Ta, Ta: Así que en lugar de utilizar time() es mejor crear un completamente al azar clave como: $key = uniqid(mt_rand(), true); y, a continuación, crear el token como: $token = md5($_POST['email'].$key); o sha1/sha256?
    • sí, bastante. El punto es crear una cadena y contortos el proceso de generación suficiente para evitar que la gente tratando de adivinar sus métodos y meterle mano.
    • Qing – Genial 😀 Pero si la petición también se elimina después de que la contraseña se ha restablecido? Usted sabe, para asegurarse de que la solicitud no puede ser utilizado de nuevo y de nuevo y de nuevo…. 🙂
    • Normalmente me dan la solicitud de fecha de tiempo y tratarlo como inválida si es más de una hora de edad. Yo no eliminar el registro en caso de que hay una razón para revisar el historial de las solicitudes. Todo esto depende de su propia necesidad, para hacer lo que tiene más sentido para usted.
    • Qing puede usted por favor proporcionar la secuencia de comandos que se utiliza para olvidó su contraseña, ya que he estado buscando en horas de seguro de secuencia de comandos para olvidó ur contraseña
    • Realmente no es tan sencillo como tener un universal de la secuencia de comandos para manejar. El guión no es probable que coincida con su estructura de base de datos, sitio de enrutamiento, o, posiblemente, manejo de correo de todos modos. Esta respuesta tiene lo suficiente para guiarlo en la creación de la secuencia de comandos en su sitio. El mío siempre es diferente dependiendo de los proyectos, porque nunca sabes quién lo escribió el código que he de heredar. Pero te aseguro, este es un muy fácil cosa que usted puede escribir en 20 minutos.

  2. 1

    Hay un peligro de perder la url a cualquier persona que huele la red. Para evitar esto, se puede generar un azar corto clave tales como vX4dq y guardar en su base de datos. Preguntar al usuario a recordar esto. Cuando un usuario restablece a través del enlace, pídale a él/ella para introducir esta clave sólo él conoce.

    Avanzado :- usted puede mostrar esta clave en un captcha para que no se lo olió.

Dejar respuesta

Please enter your comment!
Please enter your name here