Nueva pregunta

Pregunta:

Fecha: 11-02-2015 08:04:27 (En Español)

¿Como hacer un correo de confimación?[Resuelta]

Saludos, tengo mi pagina web, en la cual se pueden registrar para posteriormente comentar cosas de la misma pagina entre otras cosas, seguí este tutorial que lo hizo fernando y me funcionó de maravillas, pero ahora quiero que los usuarios queden completamente registrados confirmando ese correo, para eso se me vino la idea de hacer otro campo en la base de datos mysql que diga "Confirmado" con valor Int, al momento que el usuario llene el formulario le salga el mensaje que un correo que ha enviado con un link para confirmar dicho correo y posteriormente su cuenta pueda ser activada, y en ese momento cuando abran ese link en la base de datos en el campo "Confirmado" se añada un "1", para luego poder usarla como condicional cuando intente loguear sin haber confirmado el correo, eso lo puedo hacer con estilos css, diciendo un mensaje "Cuenta registrada, pero necesita confirmar su correo electronico para poder terminar el registro.", creo que está mas que explicado, espero me puedan ayudar, y muchas gracias.

Lo solucioné creando dos variables en la base de datos, en el formulario de registro le aumenté esos dos campos, el uno fué para almacenar el codigo con el cual tiene que activar su cuenta, y el otro fue para verificar si esta activo o no, al mandar el registro se va al correo esa variable que está en random con md5, luego ellos al hacer click en ese link del correo con ese codigo lo obtengo con _GET y luego comparo con el de la base de datos y listo.
Etiquetas: Email - PHP - Pregunta Votos: 3 - Respuestas: 10 - Vistas: 50 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 11-02-2015 12:58:25 y que anda necesitando? no entiendo bien
    como crear el link de confirmacion?
    que hacer cuando el usuario hace click al link de conformación?
      Votos: 1 - Link respuesta
     
  • Fecha: 11-02-2015 13:19:43 Era enviar un correo y en el un mensaje de confirmación, asi como cuando nos registramos en php central, aqui y se nos mandó un correo para confirmar, pero ya lo solucioné, gracias de todas formas.   Votos: 0 - Link respuesta
     
  • Fecha: 11-02-2015 13:57:06 de nada ;)
    si lo deseas puedes dejar la solucion, por si algun otro usuario tiene el mismo problema

    saludos
      Votos: 0 - Link respuesta
     
  • Fecha: 12-02-2015 07:51:13 Edito el mensaje de arriba para ponerlo completamente.   Votos: 2 - Link respuesta
     
  • Fecha: 12-02-2015 13:29:43 Hola podrías poner algo del codigo para guia. Gracias   Votos: 0 - Link respuesta
     
  • Fecha: 19-02-2015 11:32:39 Eso que tambien deseaba nos puedes ayudar con el codigo amigo.....te lo agredeceria   Votos: 0 - Link respuesta
     
  • Fecha: 20-02-2015 12:39:18 Amigo comparte el codigo :)   Votos: 0 - Link respuesta
     
  • Fecha: 27-07-2015 21:12:17 Quienes quieran el código de verificación ya que el no lo dio yo ya lo solucione solo escriban a mi correo.
    mi.canal.robot@gmail.com 0 e
    Spam por favor.
    Salu2
      Votos: 0 - Link respuesta
     
  • Fecha: 29-07-2015 15:04:31 ElCapa8 estaria mejor que publicase el codigo aqui para que este siempre presente para los interesados ;)

    Saludos
      Votos: 0 - Link respuesta
     
  • Fecha: 29-07-2015 16:13:32 Base de datos:

    --Tabla donde se guardara los registros antes de la verificación.
    CREATE TABLE IF NOT EXISTS `registros` (
      `usuario_id` int(4) NOT NULL AUTO_INCREMENT,
      `usuario_nombre` varchar(15) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
      `usuario_clave` varchar(32) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
      `usuario_email` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
      `usuario_freg` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
      `codigo` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
      PRIMARY KEY (`usuario_id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=12 ;
    
    -- --------------------------------------------------------
    
    --
    -- Estructura de tabla para la tabla `usuarios`
    --
    --Tabla donde se guardara los registros despues de la verificación.
    CREATE TABLE IF NOT EXISTS `usuarios` (
      `usuario_id` int(4) NOT NULL AUTO_INCREMENT,
      `usuario_nombre` varchar(15) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
      `usuario_clave` varchar(32) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
      `usuario_email` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
      `usuario_freg` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
      `confirmado` int(11) NOT NULL,
      `nivel` varchar(5) COLLATE utf8_unicode_ci NOT NULL,
      PRIMARY KEY (`usuario_id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;
    


    Codigo de registró:
    <?
    	include "config.php";
    	$usuario = $_POST['usuario'];
    	$contrasena1 = $_POST['pass'];
    	$contrasena2 = $_POST['passb'];
    	$email = $_POST['email'];
    	if ($usuario == ""){
    		echo "Debes ingresar un nombre de usuario para registrarte.";
    	}elseif ($contrasena1 == ""){
    		echo "Debes ingresar una contrase&ntilde;a para registrarte.";
    	}elseif ($contrasena2 != $contrasena1){
    		echo "Por favor confirma la contrase&ntilde;a ingresada.";
    	}
    	// Aqui una nueva forma para validar el email, usando la funcion "strpos":
    	elseif (!strpos($email,"@hotmail.") && !strpos($email,"@gmail.") && strpos($email,"@yahoo.") && !strpos($email,"live.com.")){
    		echo "El email ingresado es incorrecto.";
    	}else{
    		$codigoverificacion = rand(0000000000,9999999999); // Conseguimos un codigo aleatorio de 10 digitos.
    		if(!mysqli_query($conn, "INSERT INTO registros(usuario,contrasena,email,codigo) values ('".$usuario."','".$contrasena1."','".$email."','".$codigoverificacion."')")) die (mysql_error());
    			//para indicar que las partes son idénticas
    			$uniqueid= uniqid('np');
    			//indicamos las cabeceras del correo
    			$headers = "MIME-Version: 1.0\r\n";
    			$headers .= "From: no-reply@elcapa8.com \r\n";
    			$headers .= "Subject: Confirmación de correo\r\n";
    			//lo importante es indicarle que el Content-Type
    			//es multipart/alternative para indicarle que existirá
    			//un contenido alternativo
    			$headers .= "Content-Type: multipart/alternative;boundary=" . $uniqueid. "\r\n";
     			$message = "";
    			$message .= "\r\n\r\n--" . $uniqueid. "\r\n";
    			$message .= "Content-type: text/plain;charset=utf-8\r\n\r\n";
     
    			$mesaje .= "\r\n\r\n--" . $uniqueid. "--";
     
    			//con la función mail de PHP enviamos el mail.
    			$mensaje = "Usted solicito un registro en elcapa8.com, \n
    			Para confirmarlo debe hacer click en el siguiente enlace: \n
    			http://elcapa8.com/pruebas/confirmar.php?codigo=".$codigoverificacion;
    			if (!@mail("$email","Confirmacion de registro en elcapa8.com","$mensaje","$headers")) die ("No se pudo enviar el email de confirmacion.");
    				echo "Tu cuenta ha sido registrada, sin embargo, esta requiere que la confirmes desde el email que ingresaste en el registro.";
    			} 
    ?>
    

    Codigo de Confirmación:
    <?php 
    $codigo = $_GET['codigo']; 
    ?> 
    <html> 
    <head> 
    <title>Confirmar registro</title> 
    </head> 
    <body> 
    <?php 
    include "config.php";
    $buscar = mysqli_query($conn, "SELECT * FROM registros WHERE codigo='".$codigo."'"); // Buscamos el codigo 
    if ($resultado = mysqli_fetch_array($buscar)) // Si se encontro el codigo de verificacion seguimos 
    { 
     if (!mysqli_query($conn, "DELETE FROM registros WHERE codigo='".$codigo."' LIMIT 1")) die (mysqli_error($conn)); // Borramos el registro para que no pueda reutilizar el codigo de verificacion. 
     if (!mysqli_query($conn, "INSERT INTO usuarios (usuario_nombre, usuario_clave, usuario_email, confirmado, usuario_freg) values ('".$resultado['usuario_nombre']."','".$resultado['usuario_clave']."','".$resultado['usuario_email']."', 1, NOW())")) die (mysqli_error($conn)); // Ahora si registramos al usuario 
     echo "Has confirmado tu cuenta correctamente"; 
    } 
    else // Si no encontro el codigo de verificacion, le damos error: 
    { 
    echo "El codigo de verificacion no es valido."; 
    } 
    ?> 
    </body> 
    </html> 
    

      Votos: 1 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com