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 } ?>
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;
} ?>
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)
Gracias.