Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHPMailer: Fatal error: Call to undefined function valid_email()

Estas en el tema de PHPMailer: Fatal error: Call to undefined function valid_email() en el foro de PHP en Foros del Web. Hola a todos: He estado buscando información para intentar solucionar un error que me sale con PHPMailer. Me explico; en mi web tengo una opción ...
  #1 (permalink)  
Antiguo 25/05/2015, 05:33
 
Fecha de Ingreso: mayo-2015
Mensajes: 7
Antigüedad: 4 años, 8 meses
Puntos: 0
Pregunta PHPMailer: Fatal error: Call to undefined function valid_email()

Hola a todos:

He estado buscando información para intentar solucionar un error que me sale con PHPMailer. Me explico; en mi web tengo una opción para recuperar la contraseña por email cuando esta no es recordada por un usuario registrado. Para ello utilizo el siguiente código:
Código PHP:
<?php
        
//Conexion con la base de datos y el archivo que contiene la funcion email
        
$connect mysql_connect("servidor""usuario""contraseña");
        
mysql_select_db("basedatos"$connect);
    include(
'funcion.php');
       
//Si presionan el boton Enviar, ejecutamos el Script
            
if(isset($_POST['Enviar']))
                {
                    
//Validacion por parte del servidor
                    
if($_POST['mail']!='' && valid_email($_POST['mail'])==TRUE)
                        {
                            
//Hacemos la consulta en la base de datos
                            
$query "SELECT usuario, email, pas FROM usudosi WHERE email = '".($_POST['mail'])."'";
                            
$getEmail mysql_query($query) or die(mysql_error());
                            
$row mysql_fetch_assoc($getEmail);
                            
//Componemos el mensaje
                            
$headers "From: [email protected] \r\n";
                            
$headers .= "Reply-To: [email protected] \r\n";
                            
$headers .= "X-Mailer: PHP/" phpversion();
                            
$subject "Peticion de Contraseña desde midominio.com";
                            
$message "Apreciado " .$row['usuario']. "\r\n";
                            
$message .= "\r\n";
                            
$message .= "La contraseña de tu cuenta es: \r\n";
                            
$message .= $row['pas'];
                            
                            if(
mail($row['email'], $subject$message$headers))
                                {
                                
//Solo establecemos esta variable si el envio fue exitoso
                                    
$exito 'La contraseña fue enviada a su dirección de correo electrónico.';
                                }
                            else
                                {
                                    
$error 'El envío ha fallado, por favor contacte con el administrador del sistema.';
                                }
                        }
                    else
                        {
                            
$error 'Asegúrese de que no ha dejado el campo vacío y que la dirección de correo electrónica es una dirección de correo valida.';
                        }
                }
                
            if(isset(
$exito))
                {
                    echo 
$exito;
                }
            else
                {
                    echo 
$error;
        
//Solo mostramos el formulario si tenemos un mensaje de error
            
?>
            <form id="form1" name="form1" method="post" action="<?=$_SERVER['PHP_SELF']?>">           
            <p>e-Mail:<br>
            <input name="mail" type="text" id="mail" class="campos" value="<?php if(isset($_POST['mail'])) { echo $_POST['mail']; } ?>" size="32"/>
            <p><input name="Enviar" type="submit" id="Enviar" class="boton" value="Enviar" /></p>    
        </form>
        <?php ?>
El archivo función.php es:
Código PHP:
<?php
function valid_email($str)
{
return ( ! 
preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix"$str)) ? FALSE TRUE;
?>
Tengo en el directorio de mi web los archivos:
class.phpmailer.php
class.smtp.php
class.pop3.php
Con todo esto ejecuto la función recuperar contraseña y me sale el siguiente error:
Fatal error: Call to undefined function valid_email() en la línea 37.
Esa línea es:
Código PHP:
if($_POST['mail']!='' && valid_email($_POST['mail'])==TRUE
No entiendo donde esta el fallo. Agradecere enormemente cualquier ayuda.
Gracias.
  #2 (permalink)  
Antiguo 25/05/2015, 10:15
Avatar de jamie_88  
Fecha de Ingreso: abril-2011
Ubicación: Lima
Mensajes: 161
Antigüedad: 8 años, 8 meses
Puntos: 28
Respuesta: PHPMailer: Fatal error: Call to undefined function valid_email()

el error es claro, estas llamando a una función que no existe, controla que tu archivo funcion.php se encuentre efectivamente en la misma carpeta. Si ese es el caso prueba:

require __DIR__. 'funcion.php';
el lugar de:
include('funcion.php');
  #3 (permalink)  
Antiguo 25/05/2015, 16:30
 
Fecha de Ingreso: mayo-2015
Mensajes: 7
Antigüedad: 4 años, 8 meses
Puntos: 0
Respuesta: PHPMailer: Fatal error: Call to undefined function valid_email()

Muchas gracias jamie_88:

Efectivamente, el error estaba en que el archivo funcion.php lo tenia dentro de la carpeta includes. Ha sido sacarlo de esta carpeta y ponerlo en la misma que el resto de archivos y ya funciona perfectamente.


Etiquetas: phpmailer, undefined
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 21:05.