Foros del Web » Programando para Internet » PHP »

Función mail() no envía nada

Estas en el tema de Función mail() no envía nada en el foro de PHP en Foros del Web. Hola a todos, este es mi primer mensaje en este foro y espero que me ayuden, que estoy desesperado con esa función. Estoy desarrollando una ...
  #1 (permalink)  
Antiguo 27/12/2011, 18:33
Avatar de Adrii952  
Fecha de Ingreso: diciembre-2011
Ubicación: Madrid
Mensajes: 116
Antigüedad: 7 años, 10 meses
Puntos: 7
Función mail() no envía nada

Hola a todos, este es mi primer mensaje en este foro y espero que me ayuden, que estoy desesperado con esa función.

Estoy desarrollando una página bajo ubuntu y me he quedado bloqueado en el email.

He probado elaborando mi propio código y copiando códigos de otras páginas, y cuando ejecuto el php desde el navegador, se queda un buen rato pensando y luego me dice que el correo se ha enviado bien pero no llega nada a mi buzón de entrada.

Tengo instalado el sendmail y editado el php.ini

¿Alguien sabe cual puede ser el fallo?

Si no, ¿saben alguna forma de enviar correos con una cuenta externa (tipo foro phpbb) sin tener que instalar software adicional?
  #2 (permalink)  
Antiguo 27/12/2011, 18:37
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 12 años, 4 meses
Puntos: 1567
Respuesta: Función mail() no envía nada

Por lo que comentás parecería que mail si esta funcionando, lo que no se está produciendo es una negociación correcta con el servidor SMTP de destino
Fijate si sendmail te genera algún log. mucho más no te puedo decir porque lo mio es Windows

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 27/12/2011, 18:38
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.961
Antigüedad: 11 años, 3 meses
Puntos: 2185
Respuesta: Función mail() no envía nada

Adrii952, bienvenido a FDW.

Sin ver tu código será difícil saber lo que falla... de todos modos te recomiendo mejor buscar información de PHPMailer, es una librería muy efectiva, aunque no tan fácil de entender al prinicipio, pero con un poco de paciencia y leer tutoriales lo lograrás.
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 27/12/2011, 18:50
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 12 años, 4 meses
Puntos: 1567
Respuesta: Función mail() no envía nada

Cita:
Iniciado por Triby Ver Mensaje
Adrii952, bienvenido a FDW.
.
Un descuido imperdonable, Bienvenido @Adrii952.... y gracias Triby
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 27/12/2011, 19:00
Avatar de Adrii952  
Fecha de Ingreso: diciembre-2011
Ubicación: Madrid
Mensajes: 116
Antigüedad: 7 años, 10 meses
Puntos: 7
Respuesta: Función mail() no envía nada

Gracias por las respuestas tan rápidas.

Este es parte de mi código:
Código:
//Envíamos el email de validación
$asunto = "Verificación de la cuenta de BLABLA";
$cuerpo = '
<html> 
<head> 
   <title>Verificación de la cuenta de BLABLA</title> 
</head> 
<body> 
<h1>Gracias por registrarte en BLABLA.</h1> 
<p> 
<b>Accede al siguiente enlace para verificar tu cuenta:</b>.
</p> 
</body> 
</html>
';
//Cabeceras
$headers = "MIME-Version: 1.0\r\n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
$headers .= "From: BLABLA <[email protected]>\r\n"; 
//Fin de las cabeceras
if (mail($email, $asunto, $cuerpo, $headers)) {
	echo ("Se envió un email de validación a su dirección de correo electrónico.");
} else {
	echo ('<span style="color:#FF0000">Error: No se pudo enviar el email de validación.</span><br>');
}
//###############################
PD: Todavía falta la variable que representa el enlace de activación pero eso ya lo haré cuando funcione lo básico.

Respecto al log de sendmail no sé dónde está :/

Ahora voy a ver que es lo de PHPMailer y os cuento
  #6 (permalink)  
Antiguo 27/12/2011, 19:11
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.961
Antigüedad: 11 años, 3 meses
Puntos: 2185
Respuesta: Función mail() no envía nada

Es posible que el correo se esté enviando correctamente, pero el servidor de destino lo descarte por considerarlo SPAM. La mayoría de las veces pasa porque no se especifican todos los encabezados adecuados y, si quieres evitar problemas, PHPMailer lo hace casi todo automáticamente.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 27/12/2011, 19:22
Avatar de Adrii952  
Fecha de Ingreso: diciembre-2011
Ubicación: Madrid
Mensajes: 116
Antigüedad: 7 años, 10 meses
Puntos: 7
Respuesta: Función mail() no envía nada

Ok, gracias. ¿Y como uso el PHPMailer? Ya instalé la librería.
  #8 (permalink)  
Antiguo 27/12/2011, 19:25
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.961
Antigüedad: 11 años, 3 meses
Puntos: 2185
Respuesta: Función mail() no envía nada

De dónde la descargaste?, del sitio oficial?, ahí mismo debe estar la documentación, pero también podrías seguir alguno de los tutoriales que aparecen en google sólo con buscar PHPMailer, ejemplo: http://blog.unijimpe.net/introduccion-a-phpmailer/
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 27/12/2011, 19:54
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 12 años, 4 meses
Puntos: 1567
Respuesta: Función mail() no envía nada

phpmailer viene con una carpeta con varios ejemplos y metodos(mail(), smtp y sendmail, con y sin uso de SSL --> google,hotmail. etc)
este es el que usa mail() basico
<html>
<head>
<title>PHPMailer - Mail() basic test</title>
</head>
<body>

Código PHP:
Ver original
  1. <?php
  2.  
  3. require_once('../class.phpmailer.php');
  4.  
  5. $mail             = new PHPMailer(); // defaults to using php "mail()"
  6.  
  7. $body             = file_get_contents('contents.html');
  8. $body             = eregi_replace("[\]",'',$body);
  9.  
  10. $mail->AddReplyTo("[email protected]","First Last");
  11.  
  12. $mail->SetFrom('[email protected]', 'First Last');
  13.  
  14. $mail->AddReplyTo("[email protected]","First Last");
  15.  
  16. $address = "[email protected]";
  17. $mail->AddAddress($address, "John Doe");
  18.  
  19. $mail->Subject    = "testCron";
  20.  
  21. $mail->AltBody    = "Test Cron!"; // optional, comment out and test
  22.  
  23. $mail->MsgHTML($body);
  24.  
  25. $mail->AddAttachment("images/phpmailer.gif");      // attachment
  26. $mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
  27. //$mail->AddAttachment("/home/controldesalud.com/public_html/test/temporal/BeLight-0.22_RC1.zip"); // attachment
  28.  
  29. if(!$mail->Send()) {
  30.   echo "Mailer Error: " . $mail->ErrorInfo;
  31. } else {
  32.   echo "Message sent!";
  33. }
  34.  
  35. ?>
  36.  
  37. </body>
  38. </html>


@Adrii952. volviendo a tu script, en
if (mail($email, $asunto, $cuerpo, $headers)) {, donde tenes definido $email, que no lo veo?

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #10 (permalink)  
Antiguo 27/12/2011, 20:08
Avatar de Adrii952  
Fecha de Ingreso: diciembre-2011
Ubicación: Madrid
Mensajes: 116
Antigüedad: 7 años, 10 meses
Puntos: 7
Respuesta: Función mail() no envía nada

Ok, copié las clases(2 ficheros) a la carpeta en la que estoy trabajando, modifiqué el contenido de algunos ejemplos y a la hora de ejecutar el php solo se ejecuta hasta que llega a la parte del email y el email no lo envía.
Uso Gmail por SMTP
___
Edito: Ya conseguí enviar un email usando una cuenta de gmail. Muchas gracias!

Última edición por Adrii952; 27/12/2011 a las 20:36
  #11 (permalink)  
Antiguo 27/12/2011, 20:46
Avatar de Adrii952  
Fecha de Ingreso: diciembre-2011
Ubicación: Madrid
Mensajes: 116
Antigüedad: 7 años, 10 meses
Puntos: 7
Respuesta: Función mail() no envía nada

@emprear Sólo puse parte del código por eso no sale cuando defino $email
Respecto a los ejemplos, usé uno pero tendría algo mal y no funcionaba, reemplazando un par de cosas conseguí que enviara el email.
Este es el código fuente que funciona de mi proyecto por si le quieres hechar un vistazo:
Código PHP:
<?php
include("class.phpmailer.php");
include(
"class.smtp.php");
header("Content-type: text/html; charset=utf-8");
//Comprobación de los campos
if ($_POST['password'] !== $_POST['cpassword']) {
    echo (
'<span style="color:#FF0000">Error: Las contraseñas no coinciden.</span><br>');
    
$error 1;
}
if (
$_POST['password'] == false) {
    echo (
'<span style="color:#FF0000">Error: El campo de la contraseña está vacío.</span><br>');
    
$error 1;
}
if (
$_POST['usuario'] == false) {
    echo (
'<span style="color:#FF0000">Error: El campo del nombre de usuario está vacío.</span><br>');
    
$error 1;
}
if (
$_POST['email'] == false) {
    echo (
'<span style="color:#FF0000">Error: El campo del correo electrónico está vacío.</span><br>');
    
$error 1;
}
if (
$error == 1goto end;
$usuario trim($_POST['usuario']);
$usuario ereg_replace("[^A-Za-z0-9ñÑáéíóú_.]","",$usuario);
if (
$usuario !== trim($_POST['usuario'])) {
    echo (
'<span style="color:#FF0000">Error: No se permiten caracteres especiales en el nombre de usuario.</span><br>');
    
$error 1;
}
if (
strlen($usuario) < 2) {
    echo (
'<span style="color:#FF0000">Error: Nombre de usuario demasiado corto.</span><br>');
    
$error 1;
}
$contraseña = ($_POST['password']);
$contraseña ereg_replace("[^A-Za-z0-9ñÑçÇáéíóú$#%&¬_.:;,-]","",$contraseña);
if (
$contraseña !== trim($_POST['password'])) {
    echo (
'<span style="color:#FF0000">Error: No se permiten caracteres especiales en la contraseña.</span><br>');
    
$error 1;
}
if (
strlen($_POST['password']) < 8) {
    echo (
'<span style="color:#FF0000">Error: Contraseña demasiado corta.</span><br>');
    
$error 1;
}
$contraseña =     sha1(md5(trim($_POST['password'])));
$email =         trim($_POST['email']);
$verificacion_arroba_email strstr($email,"@");
if (
$verificacion_arroba_email == false) {
    echo (
'<span style="color:#FF0000">Error: Dirección de email no válida.</span><br>');
    
$error 1;
}
if (
strlen($email) < 6) {
    echo (
'<span style="color:#FF0000">Error: Dirección de email demasiado corta.</span><br>');
    
$error 1;
}
if (
$error == 1goto end;
$fecha =         time();
$ipusuario =     $_SERVER['REMOTE_ADDR'];
$conexion =     mysql_connect("localhost","root","mipasssql");
if (!
$conexion) {
    die(
'Error de conexión a la base de datos');
}
//Fin de comprobación de formulario, empezamos con escribir los datos en el registro y verificar que ninguno de los datos existan.
mysql_select_db("ProyectoX"$conexion);
$sql "INSERT INTO usuarios (nombre_usuario, pass_usuario, email_usuario, fecha_registro, ip_registro, fecha_ultimo_acceso, ip_ultimo_acceso, archivos_subidos, espacio_usado_mb, activo)
VALUES ('$usuario','$contraseña','$email','$fecha','$ipusuario','$fecha','$ipusuario','0','0', '1')"
;
if (!
mysql_query($sql,$conexion))
  {
  die(
'Error: ' mysql_error());
  } else {
echo 
"Registro en la BD completado satisfactoriamente<br>Enviando email de validación...<br>";
}
mysql_close($conexion);
//////////////////////////Envíamos el email de validación/////////////////////////////////////
error_reporting(E_STRICT);

$mail = new PHPMailer();

$body             file_get_contents('contents.html');
$body             eregi_replace("[\]",'',$body);

$mail->IsSMTP();                            // telling the class to use SMTP
$mail->SMTPAuth   true;                    // enable SMTP authentication
$mail->SMTPSecure "ssl";                    // sets the prefix to the servier
$mail->Host       "smtp.gmail.com";        // sets GMAIL as the SMTP server
$mail->SMTPDebug  2;                        // enables SMTP debug information (for testing)
                                            // 1 = errors and messages
                                            // 2 = messages only
$mail->Port       465;                    // set the SMTP port

$mail->Username   "[email protected]";    // GMAIL username
$mail->Password   "mipassgmail";            // GMAIL password

$mail->SetFrom "[email protected]";
$mail->FromName "ProyectoX";
$mail->Subject    "Verificación de la cuenta de ProyectoX";
$mail->AltBody    "This is the body when user views in plain text format"//Text Body
$mail->WordWrap   50// set word wrap

$mail->MsgHTML($body);

$mail->AddReplyTo("[email protected]","Webmaster");

$mail->AddAddress("$email","$usuario");

$mail->IsHTML(true); // send as HTML

if(!$mail->Send()) {
  echo (
'<span style="color:#FF0000">Error: No se pudo enviar el email de validación.</span><br>');
  echo 
"Mailer Error: " $mail->ErrorInfo;
} else {
  echo 
"Se envió un email de validación a su dirección de correo electrónico.";
}
//###############################
end:
echo (
"<br>Serás automáticamente redirigido en 6 segundos.");
echo 
'<meta http-equiv="Refresh" content="6;url=registrarse.html">';
?>
Todavía le falta para estar terminado..Ah y..Cualquier sugerencia es bienvenida, que nada mas estoy empezando a aprender PHP :P
  #12 (permalink)  
Antiguo 27/12/2011, 21:11
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.961
Antigüedad: 11 años, 3 meses
Puntos: 2185
Respuesta: Función mail() no envía nada

Muy bien, Adrii952, qué bueno que por fin lo solucionaste, ahora sólo necesitas reemplazar la función eregi_replace() por preg_replace() o str_replace() si lo único que vas a eliminar son corchetes sin caracteres dentro '[]'.

eregi_replace() es una función obsoleta y podría acarrear algunos problemas.
__________________
- León, Guanajuato
- GV-Foto
  #13 (permalink)  
Antiguo 27/12/2011, 22:16
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 12 años, 4 meses
Puntos: 1567
Respuesta: Función mail() no envía nada

Sin analizar todo tu código, te diría que para la validación de email utilices algo mas avanzado, si dispones de la extensión FILTER de php podes usarla
http://www.php.net/manual/en/filter....validation.php

si no con expresiones regulares

## advertir que 2,4 --> para aceptar nuevos dominios (.info, etc)
$control_mail="/^[a-z0-9\._-][email protected]+[a-z0-9\._-]+\.+[a-z]{2,4}$/i";
if(!preg_match($control_mail,$email)){
$mensaje_error = "La <b>sintáxis de email</b> no es válida<br />\n";
}


Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #14 (permalink)  
Antiguo 28/12/2011, 13:40
Avatar de Adrii952  
Fecha de Ingreso: diciembre-2011
Ubicación: Madrid
Mensajes: 116
Antigüedad: 7 años, 10 meses
Puntos: 7
Respuesta: Función mail() no envía nada

No entiendo como sustituir ereg_replace.
No lo uso para reemplazar exactamente, lo que hago es que tengo un formulario de registro, entonces cojo por ejemplo $_POST['usuario'] y se lo asigno a $usuario.
Luego a $_POST['usuario'] le hago el ereg_replace con los carecteres que quiero y comparo las dos cadenas (if $usuario !== $_POST['usuario']...) y si son diferentes saco un mensaje de error diciendo que no se admiten caracteres especiales en el nombre de usuario.

Este es el código que tengo hasta ahora cambiando lo del email:

Código PHP:
<?php
//##############################################
//# Ficha de organización:                     #
//##############################################
//#[*] Campo Usuario no vacío                 #
//#[*] Campo Contraseña no vacío              #
//#[*] Campo Correo electrónico no vacío      #
//#[*] Caracteres especiales Usuario          #
//#[*] Longitud mínima Usuario                #
//#[*] Longitud mínima Contraseña             #
//#[*] Longitud mínima Correo electrónico     #
//# [ ]                                        #
//##############################################
include("class.phpmailer.php");                        //Se incluye la clase phpmailer para el envío del email
include("class.smtp.php");                            //Se incluye la clase smtp para poder usar la cuenta de GMail
header("Content-type: text/html; charset=utf-8");    //Header para que reconozca caracteres como la 'ñ'

//Comprobación de los campos
if ($_POST['password'] !== $_POST['cpassword']) {
    echo (
'<span style="color:#FF0000">Error: Las contraseñas no coinciden.</span><br>');
    
$error 1;
}
if (
$_POST['password']     == false) {
    echo (
'<span style="color:#FF0000">Error: El campo de la contraseña está vacío.</span><br>');
    
$error 1;
}
if (
$_POST['usuario']     == false) {
    echo (
'<span style="color:#FF0000">Error: El campo del nombre de usuario está vacío.</span><br>');
    
$error 1;
}
if (
$_POST['email']     == false) {
    echo (
'<span style="color:#FF0000">Error: El campo del correo electrónico está vacío.</span><br>');
    
$error 1;
}
if (
$error == 1goto end;    //Envia al programa al bucle end si hay algún error.
//Fin de la comprobación de campos
$usuario                     trim($_POST['usuario']);
$usuario                     ereg_replace("[^A-Za-z0-9ñÑáéíóú_.]","",$usuario);
//Se verifica el usuario
if ($usuario !== trim($_POST['usuario'])) {
    echo (
'<span style="color:#FF0000">Error: No se permiten caracteres especiales en el nombre de usuario.</span><br>');
    
$error 1;
}
if (
strlen($usuario) < 2) {
    echo (
'<span style="color:#FF0000">Error: Nombre de usuario demasiado corto.</span><br>');
    
$error 1;
}
//Fin de la verificación del usuario
$contraseña                 = ($_POST['password']);
$contraseña                 ereg_replace("[^A-Za-z0-9ñÑçÇáéíóú$#%&¬_.:;,-]","",$contraseña);
//Se verifica la contraseña
if ($contraseña !== trim($_POST['password'])) {
    echo (
'<span style="color:#FF0000">Error: No se permiten caracteres especiales en la contraseña.</span><br>');
    
$error 1;
}
if (
strlen($_POST['password']) < 8) {
    echo (
'<span style="color:#FF0000">Error: Contraseña demasiado corta.</span><br>');
    
$error 1;
}
//Fin de la verificación de la contraseña
$contraseña                 sha1(md5(trim($_POST['password']))); //Encriptamos la contraseña a MD5 y luego a SHA1
$email                        trim($_POST['email']);
//Se verifica la dirección de correo
if (!filter_var($email_aFILTER_VALIDATE_EMAIL)) {
    echo 
'<span style="color:#FF0000">Error: Dirección de email no válida.</span><br>';
}
if (
strlen($email) < 6) {
    echo (
'<span style="color:#FF0000">Error: Dirección de email demasiado corta.</span><br>');
    
$error 1;
}
if (
$error == 1goto end;    //Envia al programa al bucle end si hay algún error.
//Fin de la comprobación de la dirección de correo
$fecha                         time();
$ipusuario                     $_SERVER['REMOTE_ADDR'];    //Obtenemos la IP del usuario.
$conexion                     mysql_connect("localhost","root",""********"); //Nos conectamos a la base de datos
if (!$conexion) {
    die('Error de conexión a la base de datos');
}
//Fin de comprobación de formulario, empezamos con escribir los datos en el registro y verificar que ninguno de los datos existan.
mysql_select_db("
CiOS Cloud", $conexion);
$sql = "
INSERT INTO usuarios (nombre_usuariopass_usuarioemail_usuariofecha_registroip_registrofecha_ultimo_accesoip_ultimo_accesoarchivos_subidosespacio_usado_mbactivo)
VALUES ('$usuario','$contraseña','$email','$fecha','$ipusuario','$fecha','$ipusuario','0','0''1')";
if (!mysql_query($sql,$conexion))
  {
  die('Error: ' . mysql_error());
  } else {
echo "
Registro en la BD completado satisfactoriamente<br>Enviando email de validación...<br>";
}
mysql_close($conexion);
//############################################################################################
//##########################Envíamos el email de validación###################################
//############################################################################################
error_reporting(E_STRICT);

$mail = new PHPMailer();

$body             = file_get_contents('contents.html');
$body             = eregi_replace("
[]",'',$body);

$mail->IsSMTP();                            // telling the class to use SMTP
$mail->SMTPAuth   = true;                    // enable SMTP authentication
$mail->SMTPSecure = "
ssl";                    // sets the prefix to the servier
$mail->Host       = "
smtp.gmail.com";        // sets GMAIL as the SMTP server
$mail->SMTPDebug  = 2;                        // enables SMTP debug information (for testing)
                                            // 1 = errors and messages
                                            // 2 = messages only
$mail->Port       = 465;                    // set the SMTP port

$mail->Username   = "
cioscloud@gmail.com";    // GMAIL username
$mail->Password   = "
********";            // GMAIL password

$mail->SetFrom = "
cioscloud@gmail.com";
$mail->FromName = "
CiOS Cloud";
$mail->Subject    = "
Verificación de la cuenta de CiOS Cloud";
$mail->AltBody    = "
This is the body when user views in plain text format"; //Text Body
$mail->WordWrap   = 50; // set word wrap

$mail->MsgHTML($body);

$mail->AddReplyTo("
cioscloud@gmail.com","Webmaster");

$mail->AddAddress("
$email","$usuario");

$mail->IsHTML(true); // send as HTML

if(!$mail->Send()) {
  echo ('<span style="
color:#FF0000">Error: No se pudo enviar el email de validación.</span><br>');
  
echo "Mailer Error: " $mail->ErrorInfo;
} else {
  echo 
"Se envió un email de validación a su dirección de correo electrónico.";
}
//################################################################################################
end:
echo (
"<br>Serás automáticamente redirigido en 6 segundos.");
echo 
'<meta http-equiv="Refresh" content="6;url=registrarse.html">';
?>
Quizás debería separar lo del email y un par de cosas más en otros ficheros php y hacer un include para que no haya tanto lío..¿no?
  #15 (permalink)  
Antiguo 28/12/2011, 16:05
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 12 años, 4 meses
Puntos: 1567
Respuesta: Función mail() no envía nada

de la misma manera que te lo indiqué para controlar la sintáxis del email, con el usuario podés hacer esto

Código PHP:
Ver original
  1. $control_usuario="/^[a-zA-Z0-9]{6,20}$/i";
  2. if(!preg_match($control_usuario,$post_usuario)){
  3. $mensaje_error = "la <b>sintáxis de usuario</b> no es válida<br />\n";
  4. }

es decir, que el nombre de usuario solo puede contener a-z(mayusculas o minúsculas y números de 0 a 9, con una longitud entre 6 y 20 caracteres (y excluiría cualquier otro tipo de caracter de los nombres de usuario si es para almacenar en una BD y usar como elemento de validación. en todo caso agregar otro campo nombre y apellido completo pata que pongan lo que deseen)

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #16 (permalink)  
Antiguo 28/12/2011, 16:05
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.961
Antigüedad: 11 años, 3 meses
Puntos: 2185
Respuesta: Función mail() no envía nada

Hay expresiones regulares para validar los datos que recibes por formulario sin tener que eliminar caracteres, pero, como no se me da mucho el PCRE, generalmente busco en google cuando lo requiero. :shameonme:

Pero, insisto, no es recomendable usar ereg*, hay que migrar a preg*

Agrego: Se me adelantó emprear y se vé que sí domina el tema.
__________________
- León, Guanajuato
- GV-Foto

Última edición por Triby; 28/12/2011 a las 16:06 Razón: Quién inventó los acentos con tilde?

Etiquetas: mail
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

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 06:49.