Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Envio email con enlace

Estas en el tema de Envio email con enlace en el foro de PHP en Foros del Web. Como siempre, un saludo a todos. Estoy intentado hacer un se me olvido la contraseña y tengo algunas dudas. Tengo una página con un formulario ...
  #1 (permalink)  
Antiguo 30/08/2014, 16:09
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 7 meses
Puntos: 10
Envio email con enlace

Como siempre, un saludo a todos.

Estoy intentado hacer un se me olvido la contraseña y tengo algunas dudas.

Tengo una página con un formulario en el cual hay solo un campo que es el email del usuario que quiere cambiar su contraseña. Este formulario en el action lo dirige a otra página en la cual se valida si existe el email en la base de datos y si es así, envia un correos con el enlace a otra pagina de mi web en la que existe un formulario de update de su contraseña.

Mis dudas es en el envío del email con la variable $mensaje

Código PHP:
// Enviamos por email el enlace para el cambio de contraseña 
$remite_nombre "La Palma News TV"// Tu nombre o el de tu página 
$remite_email "[email protected]"// tu correo 
$asunto "Cambio de contraseña"// Asunto 
$mensaje "Pincha en el siguiente enlace para cambiar tu contraseña: /n";
$mensaje.=""
$cabeceras "From: ".$remite_nombre." <".$remite_email.">\r\n"
$cabeceras $cabeceras."Mime-Version: 1.0\n"
$cabeceras $cabeceras."Content-Type: text/html"
$enviar_email mail($varEmail_ConsultaUsuarios,$asunto,$mensaje,$cabeceras); 
Creo debo meterlo en la variable $mensaje.=

El enlace es: http://www.midominio.com/nuevo_password.php

Ademas en ese enlace debo pasarle el id del usuario: <?php echo $row_ConsultaUsuarios['id_usuario']; ?>

Es decir, en html el enlace debe quedar de esta forma:

<a href="http://www.midominio.com/nuevo_password.php?recordID=<?php echo $row_ConsultaUsuarios['id_usuario']; ?>">ENLACE</a>

No se si me he explicado bien pero es meter el enlace anterior en el mensaje.

El codigo completo de mail_password.php es el siguiente:

Código PHP:
<?php
$varEmail_ConsultaUsuarios 
"0";
   
//$_POST["email"] viene del formulario, uso para validar email y no nombre usuario o nick
   
if (isset($_POST["email"])) {
   
$varEmail_ConsultaUsuarios $_POST["email"];
   }
mysql_select_db($database_conex_db_teldetv$conex_db_teldetv);
$query_ConsultaUsuarios sprintf("SELECT * FROM tbl_usuarios WHERE tbl_usuarios.email = %s"GetSQLValueString($varEmail_ConsultaUsuarios"int"));
$ConsultaUsuarios mysql_query($query_ConsultaUsuarios$conex_db_teldetv) or die(mysql_error());
$row_ConsultaUsuarios mysql_fetch_assoc($ConsultaUsuarios);
$totalRows_ConsultaUsuarios mysql_num_rows($ConsultaUsuarios);
        
        if (
$row_ConsultaUsuarios["email"] == $varEmail_ConsultaUsuarios) {  
                
// Enviamos por email el enlace para el cambio de contraseña 
                
$remite_nombre "Telde TV"// Tu nombre o el de tu página 
                
$remite_email "[email protected]"// tu correo 
                
$asunto "Cambio de contraseña"// Asunto 
                
$mensaje "Pincha en el siguiente enlace para cambiar tu contraseña: /n";
                
$mensaje.=''
                
$cabeceras "From: ".$remite_nombre." <".$remite_email.">\r\n"
                
$cabeceras $cabeceras."Mime-Version: 1.0\n"
                
$cabeceras $cabeceras."Content-Type: text/html"
                
$enviar_email mail($varEmail_ConsultaUsuarios,$asunto,$mensaje,$cabeceras);     
?>    
        <div class="login_form_frontend">
          <div align="center"><br>
          <img src="images/barrado_verde.png" width="26" height="23"> <span class="verde_mediano"><strong>Se ha enviado a tu email  un enlaces para poder cambiar tu contraseña.</strong></span></br>
          </br>
          </div>
        </div>
<?php }else{ ?>   
        <div class="login_form_frontend">
          <div align="center"><br>
          <span class="rojo"><strong>El email que has usado no existe en nuestra base de datos.</strong></br>
          <strong>Inténtalo de nuevo en este enlace:</strong></span><strong> <a href="solicitar_cambiar_password.php">REINTENTAR</a></strong><br>
          </br>
          </div>
        </div>
<?php ?>
Lo pongo por si veis algún fallo.
Muchísimas gracias de antemano: Manyblue

Última edición por manyblue; 30/08/2014 a las 16:17
  #2 (permalink)  
Antiguo 30/08/2014, 17:57
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 7 meses
Puntos: 10
Respuesta: Envio email con enlace

De esta forma ya no me da error pero no se si está bien:

Código PHP:
$remite_nombre "Telde TV"// Tu nombre o el de tu página 
$remite_email "[email protected]"// tu correo 
$asunto "Cambio de contraseña"// Asunto 
$mensaje "Pincha en el siguiente enlace para cambiar tu contraseña: \n";
$mensaje.='<a href="http://www.midominio.com/nuevo_password.php?recordID="'
$mensaje.= $row_ConsultaUsuarios['id_usuario'];
$mensaje.= ">ENLACE</a>";
$cabeceras "From: ".$remite_nombre." <".$remite_email.">\r\n"
$cabeceras $cabeceras."Mime-Version: 1.0\n"
$cabeceras $cabeceras."Content-Type: text/html"
$enviar_email mail($varEmail_ConsultaUsuarios,$asunto,$mensaje,$cabeceras); 

Muchas gracias de antemano: Manyblue
  #3 (permalink)  
Antiguo 31/08/2014, 03:47
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 7 meses
Puntos: 10
Respuesta: Envio email con enlace

Bueno, pues nada, todo está correcto así que el código queda de la siguiente manera:

Código PHP:
<?php
$varEmail_ConsultaUsuarios 
"0";
   
//$_POST["email"] viene del formulario, uso para validar email y no nombre usuario o nick
   
if (isset($_POST["email"])) {
   
$varEmail_ConsultaUsuarios $_POST["email"];
   }
   
mysql_select_db($database_conex_db_teldetv$conex_db_teldetv);
   
$query_ConsultaUsuarios sprintf("SELECT * FROM tbl_usuarios WHERE tbl_usuarios.email = %s"GetSQLValueString($varEmail_ConsultaUsuarios"int"));
   
$ConsultaUsuarios mysql_query($query_ConsultaUsuarios$conex_db_teldetv) or die(mysql_error());
   
$row_ConsultaUsuarios mysql_fetch_assoc($ConsultaUsuarios);
   
$totalRows_ConsultaUsuarios mysql_num_rows($ConsultaUsuarios);
        
        if (
$row_ConsultaUsuarios["email"] == $varEmail_ConsultaUsuarios) {  
                
// Enviamos por email el enlace para el cambio de contraseña 
                
$remite_nombre "Telde TV"// Tu nombre o el de tu página 
                
$remite_email "[email protected]"// tu correo 
                
$asunto "Cambio de contraseña"// Asunto 
                
$mensaje "Pincha en el siguiente enlace para cambiar tu contraseña: \n";
                
$mensaje.='<a href="http://www.midominio.com/nuevo_password.php?recordID="'
                
$mensaje.= $row_ConsultaUsuarios['id_usuario'];
                
$mensaje.= ">ENLACE</a>";
                
$cabeceras "From: ".$remite_nombre." <".$remite_email.">\r\n"
                
$cabeceras $cabeceras."Mime-Version: 1.0\n"
                
$cabeceras $cabeceras."Content-Type: text/html"
                
$enviar_email mail($varEmail_ConsultaUsuarios,$asunto,$mensaje,$cabeceras);  
  
?>    
        <div class="login_form_frontend">
          <div align="center"><br>
          <img src="images/barrado_verde.png" width="26" height="23"> <span class="verde_mediano"><strong>Se ha enviado a tu email  un enlaces para poder cambiar tu contraseña.</strong></span></br>
          </br>
          </div>
        </div>
<?php }else{ ?>   
        <div class="login_form_frontend">
          <div align="center"><br>
          <span class="rojo"><strong>El email que has usado no existe en nuestra base de datos.</strong></br>
          <strong>Inténtalo de nuevo en este enlace:</strong></span><strong> <a href="solicitar_cambiar_password.php">REINTENTAR</a></strong><br>
          </br>
          </div>
        </div>
<?php ?>
Lo he comprobado en local y si me reconoce el email pues es el del registro y me salta el mensaje "Se ha enviado a tu email un enlaces para poder cambiar tu contraseña." además como no tengo habilitada en el server local la función "mail()", me salta el error de que no se ha podido enviar, es lógico, por lo que pienso que está correcto. Solo me falta comprobar, al subir todo al hosting definitivo que si tiene habilitada la función "mail()" que me envía el correo con el enlace, pienso que lo hará.
Si teneis algún comentario que hacerme al respecto, mis oidos están habiertos.
De todas formas, muchísimas gracias: Manyblue
  #4 (permalink)  
Antiguo 31/08/2014, 23:42
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 7 meses
Puntos: 10
Respuesta: Envio email con enlace

El email si se envía pero no se si la url estará bien, lo revise y creo que estaba mal por lo que lo modifique solo la zona del "$mensaje" quedando así:
Código PHP:
<?php
$varEmail_ConsultaUsuarios 
"0";
   
//$_POST["email"] viene del formulario, uso para validar email y no nombre usuario o nick
   
if (isset($_POST["email"])) {
   
$varEmail_ConsultaUsuarios $_POST["email"];
   }
mysql_select_db($database_conex_db_teldetv$conex_db_teldetv);
$query_ConsultaUsuarios sprintf("SELECT * FROM tbl_usuarios WHERE tbl_usuarios.email = %s"GetSQLValueString($varEmail_ConsultaUsuarios"int"));
$ConsultaUsuarios mysql_query($query_ConsultaUsuarios$conex_db_teldetv) or die(mysql_error());
$row_ConsultaUsuarios mysql_fetch_assoc($ConsultaUsuarios);
$totalRows_ConsultaUsuarios mysql_num_rows($ConsultaUsuarios);
        
        if (
$row_ConsultaUsuarios["email"] == $varEmail_ConsultaUsuarios) {  
                
// Enviamos por email el enlace para el cambio de contraseña 
                
$remite_nombre "Telde TV"// Tu nombre o el de tu página 
                
$remite_email "[email protected]"// tu correo 
                
$asunto "Cambio de contraseña"// Asunto 
                
$mensaje "Pincha en el siguiente enlace para cambiar tu contraseña: \n";
                
$mensaje.='<a href="http://www.midominio.com/nuevo_password.php?recordID='
                
$mensaje.= $row_ConsultaUsuarios['id_usuario'].'" title="Pincha en este enlace para poder cambiar tu contraseña"';
                
$mensaje.= ">ENLACE</a>";
                
$cabeceras "From: ".$remite_nombre." <".$remite_email.">\r\n"
                
$cabeceras $cabeceras."Mime-Version: 1.0\n"
                
$cabeceras $cabeceras."Content-Type: text/html"
                
$enviar_email mail($varEmail_ConsultaUsuarios,$asunto,$mensaje,$cabeceras);  
?>    
        <div class="login_form_frontend">
          <div align="center"><br>
          <img src="images/barrado_verde.png" width="26" height="23"> <span class="verde_mediano"><strong>Se ha enviado a tu email  un enlaces para poder cambiar tu contraseña.</strong></span><br>
          <br>
          </div>
        </div>
<?php }else{ ?>   
        <div class="login_form_frontend">
          <div align="center"><br>
            <span class="verde_mediano"><strong>El email que has usado no existe en nuestra base de datos.</br>
            Inténtalo de nuevo en este enlace:</strong></span><strong> <a href="solicitar_cambiar_password.php">REINTENTAR</a></strong><br>
          </br>
          </div>
        </div>
<?php ?>
Algún alma caritativa que me pueda contestar ??
Muchísimas gracias de ante mano, un saludo: Manyblue
  #5 (permalink)  
Antiguo 01/09/2014, 07:52
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 7 meses
Puntos: 10
Respuesta: Envio email con enlace

Bueno, pues como no hay nadie que conteste, cerraré el post.
Un saludo a todos: Manyblue

Etiquetas: email, enlace, formulario, html, mysql, select, sql, usuarios, 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 13:03.