Ir al contenido


Foto

Verificacion de correo del usuario


  • Por favor identifícate para responder
No hay respuestas en este tema

#1 Eyter

Eyter

    Newbie

  • Miembros
  • Pip
  • 2 mensajes

Escrito 16 septiembre 2013 - 12:57

hola como esta mi gente tengo una problema con respecto a que cuando se le envia un email a un usuario despues de registrarse en una cuenta se le envie un link y que despues de darle click al enlace lo redireccione a iniciar sesion, yo puedo enviar el email a cualquier usuario pero me da un error cuando el usuario le da click al enlace, probablemente tengo un error, aqui les voy a copiar el codigo de dos archivos uno es donde se le envia el email al usuario y el otro es donde lo deberia recibir, no tengo password para entrar a la base de datos, basicamente


este es el primer archivo: registrar.php

<?php
session_start();

$conexion = mysql_connect('localhost','root')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('basededatos')or die ('Error al seleccionar la Base de Datos: '.mysql_error());



function mostrar(){  //FUNCION MOSTRAR
echo'<form action="registrar.php" method="post" name="1">
Usuario (max 20):
  <input type="text" name="username" size="20" maxlength="20" /><br />
Password (max 10):
<input type="password" name="password" size="10" maxlength="10" />
Confirma: <input type="password" name="password2" size="10" maxlength="10" /><br />
Email (max 40):
<input type="text" name="email" size="20" maxlength="40" /><br />
<input type="submit" value="Registrar" />
</form>';
}
function mostrar1(){    //ESTA FUNCION ES PARA IMPRIMIR CUANDO EL REGISTRO ES UN EXITO USUARIO Y CLAVE //NAME:usuario
echo'<FORM ACTION="validar_usuario.php" METHOD="post">
                  Usuario : <INPUT TYPE="text" NAME="username" SIZE=20 MAXLENGTH=20><br />
                  Password: <INPUT TYPE="password" NAME="password" SIZE=10 MAXLENGTH=10><br />
                  <INPUT TYPE="submit" VALUE="Ingresar">
                </FORM>';
}                //LA FUNCION 1 DEBERIA IR EN login.php
?>

<?php

// verificamos si se han enviado ya las variables necesarias.
if (isset($_POST["username"])) {
    $username = $_POST["username"];
    $password = $_POST["password"];
    $password2 = $_POST["password2"];
    $email = $_POST["email"];
    // Hay campos en blanco
    if($username==NULL||$password==NULL||$password2==NULL||$email==NULL) {
        echo "un campo está vacio.";
    mostrar();
    }else{
        // ¿Coinciden las contraseñas?
        if($password!=$password2) {
            echo "Las contrase&ntilde;as no coinciden";
            mostrar();
        }else{
            // Comprobamos si el nombre de usuario o la cuenta de correo ya existían
         
         
            $checkuser = mysql_query("SELECT usuario FROM usuarios WHERE usuario='$username'");
            $username_exist = mysql_num_rows($checkuser);
            $checkemail = mysql_query("SELECT email FROM usuarios WHERE email='$email'");
            $email_exist = mysql_num_rows($checkemail);
            if ($email_exist>0||$username_exist>0) {
                echo "El nombre de usuario o la cuenta de correo estan ya en uso";
                mostrar();
            }else{
                $codic = rand(0000000000,9999999999);
                $query = 'INSERT INTO usuarios (usuario, password, email, fecha, codigo)
                VALUES (\''.$username.'\',\''.$password.'\',\''.$email.'\',\''.date("Y-m-d").'\',\''.$codic.'\')';
                mysql_query($query);
             
         
         
            $username= $_POST["username"]; //tenia que poner username para que imprimiera el usuario en respuesta
            $password= $_POST["password"];
            $cabeceras= "MIME-Version: 1.0\r\n";
            $cabeceras .= "Content-type:text/html; charset=iso-8859-1\r\n";
            $cabeceras .="From: $email\r\n";    //aparecerà en el email como de:
         
         
         
         
    //incluyo la clase phpmailer
 
    include_once("class.phpmailer.php");
    include_once("class.smtp.php");
 
    $mail= new PHPMailer(); //creo un objeto tipo PHPMailer
    $mail->IsSMTP(); //protocolo SMTP
    $mail->SMTPAuth= true; //autenticacion en el SMTP
    $mail->SMTPSecure = "ssl"; //SSL security socket layer
    $mail->Host = "smtp.gmail.com"; //Servidor de SMTP de gmail
    $mail->Port = 465; //puerto seguro del servidor SMTP de gmail
    $mail->From = $email; // Correo del usuario
    $mail->FromName = $username;
    $mail->AddAddress ($email); //Destinatario
    $mail->Username = "MICORREO@gmail.com"; //Aqui pon tu correo de gmail
    $mail->Password = "PASSWORD"; //aqui pon tu contrasena
    $mail->Subject = "ACTIVACION DE CUENTA"; //Asunto del correo
    $mail->Body = 'Para completar el registro haz clic en el siguiente link:
echo <a href ="http://localhost/log...cion.php?codigo = '.$codic.'">Verificar cuenta</a>'; //Contenido del correo
    $mail->WordWrap = 50; //Numero de columnas
    //$mail->MsgHTML(prueba); //se indica que el cuerpo del correo tendrà formato HTML
    //$mail->AddAttachment($destino); //accedemos  al archivo  que se subió al servidor  y lo adjuntamos
 
    if ($mail->Send()) { //Enviamos el correo por PHPMailer
        $respuesta= "Bienvenido $username el registro está casi completo. Por favor chequea tu email $email y clickea el enlace que activará su cuenta.Tenga en cuenta que este email puede llegar como correo spam, por lo que debe revisar su bandeja de correos no deseados. Tanto su contraseña como las instrucciones adicionales han sido enviados a su correo electrónico";
        }else {
        $respuesta= "El mensaje no se pudo enviar a su cuenta =(";
        $respuesta .=" Error: " .$mail->ErrorInfo; 
            }
 
header("Location:login.php?respuesta=$respuesta");
             
             
             
                echo 'El usuario '.$username.' ha sido registrado de manera satisfactoria.<br />;
                Ahora puede entrar ingresando su usuario y su password <br />';
                mostrar1(); //FUNCION MOSTRAR 1
                ?>
             
                <?php
            }
        }
    }
}else{
mostrar();
}
?>


este es el otro archivo: verificacion.php


<?php


$conexion = new mysqli("localhost", "root", "basededatos");

if ($_GET["id"] && $_GET["codic"])
{

//filtrado de datos, también lo puedes hacer con preg_match para más seguridad
$id = htmlspecialchars(strip_tags(addslashes($_GET["id"])));
$codic = htmlspecialchars(strip_tags(addslashes($_GET["codic"])));

$consulta = "SELECT * FROM usuarios WHERE id=$id AND codigo='$codic'";
$resultado = $conexion -> query ($consulta);
$fila = $resultado -> fetch_array();

//Se verifica que existe la fila
if ($fila > 0)
{
//Se actualiza el código de verificación y activo igual a true
$nuevo_codigo_de_verificacion = rand(1000000000000000, 9000000000000000);
$consulta = "UPDATE usuarios SET codigo='$nuevo_codigo_de_verificacion', activo='true' WHERE id = $id";
//Lo rediriges a iniciar sesión, ya puede iniciar sesión
header("Location: login.php");
}
else
{
//Se expulsa de esta página si no contiene los parámetros correctos
header("Location: error.php");
}
}
else
{
//Se expulsa de esta página si no contiene los parámetros correctos
header("Location: error.php");
}
?>

  • 0




IP.Board spam blocked by CleanTalk.