Foros del Web » Programando para Internet » PHP »

PHP OO Confirmación cuenta a través email

Estas en el tema de Confirmación cuenta a través email en el foro de PHP en Foros del Web. Hola amigos forosdelwebmaniaticos. Tengo unos cuantos problemas con la confirmación de cuenta a través de email. 1. No se envia el mensaje a la cuenta ...
  #1 (permalink)  
Antiguo 26/03/2014, 07:36
 
Fecha de Ingreso: marzo-2014
Mensajes: 168
Antigüedad: 10 años, 1 mes
Puntos: 2
Pregunta Confirmación cuenta a través email

Hola amigos forosdelwebmaniaticos. Tengo unos cuantos problemas con la confirmación de cuenta a través de email.

1. No se envia el mensaje a la cuenta que se registró. ¿Cómo hago para que se vea el que le que ha enviado el mensaje sea yo y no sea el servidor 000webhost?

email.php:

Código PHP:
<?php
require_once('./config/funciones.php');
conectar('****''****''****''a6612376_users');

$para       "$mail"//hace referencia a la variable email...
$titulo     "Activar cuenta";
$mensaje    "El mensaje es este chaval. ejemplo xd";
$cabeceras  'MIME-Version: 1.0' "\r\n";
$cabeceras .= 'Content-type: text/plain; charset=iso-8859-1' "\r\n";
$cabeceras .= 'From: Activar cuenta $mail' "\r\n";
 
mail($para$titulo$mensaje$cabeceras);

echo 
'Funcion acabada';
?>
Vale, el problema creo que esta en la variable "$mail". Ya que creo que no la saca del register o algo. (El register funciona bien).

Aqui os paso el register.php:

Código PHP:
<?php
require_once('./config/funciones.php');
conectar('****''****''****''a6612376_users');

//Recibir
$user   strip_tags($_POST['usernamesignup']);
$pass   strip_tags(sha1($_POST['passwordsignup']));
$mail   strip_tags($_POST['emailsignup']);
$repw   strip_tags($_POST['passwordsignup_confirm']);
$ip       $_SERVER['REMOTE_ADDR'];
$key      $aleatorio uniqid();
$activado "0";

$query = @mysql_query('SELECT * FROM users WHERE user="'.mysql_real_escape_string($user).'"');

if(
$existe = @mysql_fetch_object($query))
{
    echo 
'El usuario '.$user.' ya existe.';
    
header("refresh: 4; url=./register.html");
}else{
    
$meter = @mysql_query('INSERT INTO users (user, pass, mail, codigo, activado, ip) values ("'.mysql_real_escape_string($user).'","'.mysql_real_escape_string($pass).'","'.mysql_real_escape_string($mail).'","'.
mysql_real_escape_string($key).'","'.
mysql_real_escape_string($activado).'","'.
    
$ip.'")');
    if(
$meter)
    {
        echo
"Usuario creado con éxito"
        include (
mail.php);
        
header("refresh: 4; url=./index.php"); 
        


    }else{
        echo 
'Hubo un error en el registro';
        
header("refresh: 4; url=./index.php");
        
    }
    }
?>
Vale, el 2n problema es que no se como hacer para que cuándo el usuario reciba el correo con el código, ($key), pues en el 000webhost (mysql) se cambia el valor de activado ("0") a ("1").

Espero vuestras respuestas, atentamente OfSerker
  #2 (permalink)  
Antiguo 26/03/2014, 08:43
 
Fecha de Ingreso: junio-2011
Ubicación: Barcelona
Mensajes: 212
Antigüedad: 12 años, 10 meses
Puntos: 17
Respuesta: Confirmación cuenta a través email

Respecto a la primera revisa el ejemplo 1; http://www.php.net/manual/es/function.mail.php
sobre las cabeceras from.

Respecto al problema de la variable $mail hay varios puntos a tratar:

Primero no verificas que venga de un formulario mediante $_POST.
Segundo a la hora de llegar al usuario creado con éxito por que haces un include a mail? (¿mail.php o e-mail.php?) no es necesario ya que aparte de que son pocas lineas te ahorras el require y el conectar. Respecto a la variable $mail no la pongas entre comillas;

Código PHP:
Ver original
  1. $para       = $mail; //hace referencia a la variable email...

Luego respecto a lo del key añade otro campo a la tabla con el key luego el usuario que verifique su cuenta mediante valores GET comprueba que el valor del KEY del ID (usuario) es igual que el valor GET del KEY es correcto haz un update al valor.

Te recomiendo que revises un poco la informacion de php ya que creo que tienes un lio en la cabeza... jajajaa

Un saludo.
__________________
Twitter: @ed33x
  #3 (permalink)  
Antiguo 26/03/2014, 14:54
 
Fecha de Ingreso: marzo-2014
Mensajes: 168
Antigüedad: 10 años, 1 mes
Puntos: 2
Respuesta: Confirmación cuenta a través email

Vale, gracias por todo. Ahora lo que me pasa es que me salta este error al darle click al enlace que me envia el código aleatorio generado en el register:




Aquí te paso el register.php:

Código PHP:
<?php
require_once('./config/funciones.php');
conectar('+++++''+++''++++''a6612376_users');
 
//Recibir
$user   strip_tags($_POST['usernamesignup']);
$pass   strip_tags(sha1($_POST['passwordsignup']));
$mail   strip_tags($_POST['emailsignup']);
$repw   strip_tags($_POST['passwordsignup_confirm']);
$ip       $_SERVER['REMOTE_ADDR'];
$key      $aleatorio uniqid();
$activado "0";

$query = @mysql_query('SELECT * FROM users WHERE user="'.mysql_real_escape_string($user).'"');

if(
$existe = @mysql_fetch_object($query))
{
    echo 
'El usuario '.$user.' ya existe.';
    
header("refresh: 4; url=./register.html");
}else{
    
$meter = @mysql_query('INSERT INTO users (user, pass, mail, codigo, activado, ip) values ("'.mysql_real_escape_string($user).'","'.mysql_real_escape_string($pass).'","'.mysql_real_escape_string($mail).'","'.
mysql_real_escape_string($key).'","'.
mysql_real_escape_string($activado).'","'.
    
$ip.'")');
    if(
$meter)
    {
        echo
"Usuario <strong>$user</strong> creado con éxito</br>"
$para       $mail//hace referencia a la variable email...
$titulo     "Activar cuenta";
$mensaje    "Para activar la cuenta, es necesario entrar en este enlace: http://ofserker.netai.net/verificar.php?id=$key";
$cabeceras  'MIME-Version: 1.0' "\r\n";
$cabeceras  'Content-type: text/plain; charset=iso-8859-1' "\r\n";
$cabeceras  'From: [email protected]"\r\n";
 
mail($para$titulo$mensaje$cabeceras);

echo 
"Enviando un mail a <strong>$mail</strong> que luego deber&aacutes aceptar";
        
header("refresh: 10; url=./index.php"); 
        


    }else{
        echo 
'Hubo un error en el registro';
        
header("refresh: 4; url=./index.php");
        
    }
    }
?>
Aquí te paso el mail.php:
Código PHP:
<?php
require_once('./config/funciones.php');
conectar('+++++''+++''++++''a6612376_users');

$key $_GET['codigo'];

$query=mysql_query("SELECT * FROM users WHERE codigo='$key'");
if(
$check=mysql_fetch_array($query)) //con este if verificamos que el codigo existe en la BD 
            

            
                if(
$check['active']=="1"//Si el mail ya esta verificado 
                

                    echo 
"Tu mail ya esta verificado";
                } 
                elseif(
$check['active']=="0"//Si no esta verificado 
                

                
//Actualizamos la BD, y cambiamos el valor de dafault "NO" en verificado por "SI" 
                    
$sql "UPDATE users SET active='1' WHERE id='$key'"
                    
mysql_query($sql) or die("Error query ".mysql_error());  
                     echo 
"<p>Gracias. Hemos verificado su email. Ahora puede acceder con su usuario y clave</p>";
                     echo 
"<a href='../index.php'>Loguearse</a>";
                     
//habilitamos el formulario de login luego de la bienvenida
                    
                
                

            } 
            else 
//Si el codigo de verificacion no existe 
            

            echo 
"<p>Tu c&oacute;digo es incorrecto</p>"
            echo 
"<a href='../index.php'>Loguearse</a>";
            } 
        
?>
No se si están bien los códigos, los he ido cogiendo poco a poquito. Pero así se apriende.
Atentamente, OfSerker
  #4 (permalink)  
Antiguo 26/03/2014, 15:26
 
Fecha de Ingreso: junio-2011
Ubicación: Barcelona
Mensajes: 212
Antigüedad: 12 años, 10 meses
Puntos: 17
Respuesta: Confirmación cuenta a través email

Pasa el archivo verificar.php.
__________________
Twitter: @ed33x
  #5 (permalink)  
Antiguo 26/03/2014, 16:19
 
Fecha de Ingreso: marzo-2014
Mensajes: 168
Antigüedad: 10 años, 1 mes
Puntos: 2
Respuesta: Confirmación cuenta a través email

Aquí esta el verificar php:

Código PHP:
<?php
require_once('./config/funciones.php');
conectar('000''000''000''a6612376_users');
 
$key $_GET['id'];

$query=mysql_query("SELECT * FROM users WHERE id='$key'");
if(
$check=mysql_fetch_array($query)) //con este if verificamos que el codigo existe en la BD 
            

            
                if(
$check['active']=="1"//Si el mail ya esta verificado 
                

                    echo 
"Tu mail ya esta verificado";
                } 
                elseif(
$check['active']=="0"//Si no esta verificado 
                

                
//Actualizamos la BD, y cambiamos el valor de dafault "NO" en verificado por "SI" 
                    
$sql "UPDATE users SET active='1' WHERE id='$key'"
                    
mysql_query($sql) or die("Error query ".mysql_error());  
                     echo 
"<p>Gracias. Hemos verificado su email. Ahora puede acceder con su usuario y clave</p>";
                     echo 
"<a href='../index.php'>Loguearse</a>";
                     
//habilitamos el formulario de login luego de la bienvenida
                    
                
                

            } 
            else 
//Si el codigo de verificacion no existe 
            

            echo 
"<p>Tu c&oacute;digo es incorrecto</p>"
            echo 
"<a href='../index.php'>Loguearse</a>";
            } 
        
?>
Gracias por ayudarme, atentamente:
-OfSerker
  #6 (permalink)  
Antiguo 26/03/2014, 16:21
 
Fecha de Ingreso: marzo-2014
Mensajes: 168
Antigüedad: 10 años, 1 mes
Puntos: 2
Respuesta: Confirmación cuenta a través email

Cita:
Iniciado por OfSerker Ver Mensaje
Aquí esta el verificar php:

Código PHP:
<?php
require_once('./config/funciones.php');
conectar('000''000''000''a6612376_users');
 
$key $_GET['id'];

$query=mysql_query("SELECT * FROM users WHERE id='$key'");
if(
$check=mysql_fetch_array($query)) //con este if verificamos que el codigo existe en la BD 
            

            
                if(
$check['active']=="1"//Si el mail ya esta verificado 
                

                    echo 
"Tu mail ya esta verificado";
                } 
                elseif(
$check['active']=="0"//Si no esta verificado 
                

                
//Actualizamos la BD, y cambiamos el valor de dafault "NO" en verificado por "SI" 
                    
$sql "UPDATE users SET active='1' WHERE id='$key'"
                    
mysql_query($sql) or die("Error query ".mysql_error());  
                     echo 
"<p>Gracias. Hemos verificado su email. Ahora puede acceder con su usuario y clave</p>";
                     echo 
"<a href='../index.php'>Loguearse</a>";
                     
//habilitamos el formulario de login luego de la bienvenida
                    
                
                

            } 
            else 
//Si el codigo de verificacion no existe 
            

            echo 
"<p>Tu c&oacute;digo es incorrecto</p>"
            echo 
"<a href='../index.php'>Loguearse</a>";
            } 
        
?>
Gracias por ayudarme, atentamente:
-OfSerker

El mail.php lo borre. Ahora todo el sistema es el verificar. No le hagas caso al mail.php

Etiquetas: email, html, mysql, registro, select, sql, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:52.