Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/05/2013, 23:07
Avatar de manyblue
manyblue
 
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 1 mes
Puntos: 10
Validar email con php

Se que esto hoy en día se hace con javascript, pero estoy practicando código de php.

Estoy validando el email de un formulario con este código:

Código PHP:
<?php
$nombre 
$_POST["nombre"];
$email $_POST["email"];
$texto $_POST["texto"];
 
// Definir las variables para la captura de errores y estatus 
$error "<b>OCURRIERON UNOS O MÁS ERRORES: </b><br>";
$status false;   // false es variable booleana (false,true) o (1,0) 
 
// Comprobamos que los campos del formulario recibido no estén vacios
if ($nombre == "") {
 
$error .= "El campo Nombre está vacio <br>";
 
$status true;
}
if (
$email == "") {
 
$error .= "El campo Correo está vacio <br>";
 
$status true;
}
if (
$texto == "") {
 
$error .= "El campo Texto está vacio <br>";
 
$status true;
}
 
//Comprobabos si el email electrónico es válido:
// [email protected]
// Comprobamos si el email contiene la "@"
if (substr_count($email"@") != 1) {
 
$error .= 'El correo no es válido, falta el signo "@" <br>';
 
$status true;
}
 
// Comprobamos si el email contiene el "."
if (substr_count($email".") != 1) {
 
$error .= 'El correo no es válido, falta el signo "." <br>';
 
$status true;
}
 
// Comprobamos si el correo contiene el nombre del email
// Definimos variable para el control del nombre del email
$nombre_email explode("@"$email);  
$dominio_email explode("."$nombre_email[1]);
if (
strlen($nombre_email[0]) < 2) {
 
$error .= "El nombre del correo no es válido <br>";
 
$status true;
}
 
// Comprobamos si el correo contiene el dominio del email
if ((count($dominio_email) < 2) && (strlen($dominio_email[0]) < 2)) {
 
$error .= 'El nombre del dominio no es válido <br>';
 
$status true;
}
 
$mensaje "DATOS RECIBIDOS \n";
$mensaje .= "NOMBRE: $nombre \n";
$mensaje .= "NOMBRE: $email \n";
$mensaje .= "NOMBRE: $texto \n";
 
$encabezado "From: $email \n";
$encabezado .= "Replay-to: $email \n\n";
 
if (
$status == false) {
mail ("[email protected]","Formulario de Contacto",$mensaje,$encabezado);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>ENVIAR CORREO ELECTRONICO</title>
</head>
<body>
<h2 align="center">EL FORMULARIO HA SIDO ENVIADO CORRECTAMENTE !! <br />
</h2>
<div align="center"><b>DATOS RECIBIDOS:</b><br />
</div>
<table width="632" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td width="632"><b>Nombre:</b> <?php echo $nombre?><br />
      <b>Correo:</b> <?php echo $email?><br />
    <b>Texto:</b><br /><?php echo $texto?></td>
  </tr>
</table>
<div align="center"><br />
  <strong>Muchas gracias por haber contactado con nosotros, a la mayor brevedad posible le responderemos.<br />
  Pincha en este enlace para redirigirte a la:</strong> <a href="enviar_form.php">Página de contacto</a></div>
</body>
</html>
<?php
}
else 
{
echo 
$error;
}
?>
El formulario tiene tres campos:
Nombre
Correo
Texto

Si relleno el formulario con los tres campos bien, con un email verdadedo, solo me da el error de la funcion mail, que como estoy en local es lógico pues no hay un smtp instalado. Pero si por ejemplo relleno todos los campos bien excepto por ejemplo el email que solo le pongo una "a", me salta el siguiente error:

Notice: Undefined offset: 1 in C:\wamp\www\curso_php_mysql\Basico_1\enviar_form.p hp on line 45

OCURRIERON UNOS O MÁS ERRORES:
El correo no es válido, falta el signo "@"
El correo no es válido, falta el signo "."
El nombre del correo no es válido
El nombre del dominio no es válido

que es esta línea:
$dominio_email = explode(".", $nombre_email[1]);

Alguna sugerencia ??

Muchas gracias de antemano: Manyblue