Validacion de correos en php

Iniciado por Dannysoft, 18 Julio 2007, 18:23 PM

0 Miembros y 1 Visitante están viendo este tema.

Dannysoft

saludos foro, tengo un formulario escrito en php y bueno mi cliente me pide que mediante este formulario solo se puedan mandar correos de empresas menos correos como hotmail, mixmail, latinmal, etc, los formularios son estos:

contactenos:

<form action="enviar.php" method="post" name="form1" id="form1" onSubmit="MM_validateForm('nombre','','R','email','','R','compania','','R','direccion','','R','pais','','R','ciudad','','R');return document.MM_returnValue">
        <table width="450" border="0" align="center" cellpadding="0" cellspacing="0">
          <tr>
            <td bgcolor="#D5F4FF">
<div align="center">
                <table width="440" border="0" align="center" cellpadding="0" cellspacing="0">
                  <tr bgcolor="#D5F4FF">
                    <td colspan="2" valign="top" class="texto"><strong>* Campos
                      requeridos</strong></td>
                  </tr>
                  <tr bgcolor="#D5F4FF">
                    <td colspan="2" valign="top" class="texto">&nbsp;</td>
                  </tr>
                  <tr bgcolor="#D5F4FF">
                    <td colspan="2" valign="top" class="texto"><strong>INFORMACION
                      PERSONAL:</strong></td>
                  </tr>
                  <tr bgcolor="#D5F4FF">
                    <td valign="top" class="texto"><strong>Nombre:</strong></td>
                    <td valign="top"> <div align="left">
                        <input name="nombre" type="text" id="nombre3" size="35">
                        <font color="#000000">*</font></div></td>
                  </tr>
                  <tr bgcolor="#D5F4FF">
                    <td width="100" valign="top" class="texto"><strong>Email:</strong></td>
                    <td valign="top"> <div align="left">
                        <label>
                        <input name="email" type="text" id="email2" size="30">
                        * </label>
                      </div></td>
                  </tr>
                  <tr>
                    <td valign="top" bgcolor="#D5F4FF" class="texto"><strong>Tel&eacute;fono:</strong></td>
                    <td valign="top" bgcolor="#D5F4FF"><div align="left">
                        <input name="telefono" type="text" id="telefono2">
                        * </div></td>
                  </tr>
                  <tr>
                    <td valign="top" bgcolor="#D5F4FF" class="texto"><strong>Ocupaci&oacute;n:</strong></td>
                    <td valign="top" bgcolor="#D5F4FF"><div align="left">
                        <input name="ocupacion" type="text" id="ocupacion2" size="30">
                      </div></td>
                  </tr>
                  <tr>
                    <td colspan="2" valign="top" bgcolor="#D5F4FF" class="texto">&nbsp;</td>
                  </tr>
                  <tr>
                    <td colspan="2" valign="top" bgcolor="#D5F4FF" class="texto"><strong>INFORMACION
                      DE LA COMPA&Ntilde;IA: </strong></td>
                  </tr>
                  <tr>
                    <td valign="top" bgcolor="#D5F4FF" class="texto"><strong>Compa&ntilde;ia:</strong></td>
                    <td valign="top" bgcolor="#D5F4FF"><div align="left">
                        <input name="compania" type="text" id="compania2">
                        * </div></td>
                  </tr>
                  <tr>
                    <td valign="top" bgcolor="#D5F4FF" class="texto"><strong>Direcci&oacute;n:</strong></td>
                    <td valign="top" bgcolor="#D5F4FF"><div align="left">
                        <input name="direccion" type="text" id="direccion2" size="30">
                        * </div></td>
                  </tr>
                  <tr>
                    <td valign="top" bgcolor="#D5F4FF" class="texto"><strong>Pais:</strong></td>
                    <td valign="top" bgcolor="#D5F4FF"><div align="left">
                        <input name="pais" type="text" id="pais3" size="30">
                        *</div></td>
                  </tr>
                  <tr>
                    <td valign="top" bgcolor="#D5F4FF" class="texto"><strong>Ciudad:</strong></td>
                    <td valign="top" bgcolor="#D5F4FF"><div align="left">
                        <input name="ciudad" type="text" id="ciudad2" size="30">
                        *</div></td>
                  </tr>
                  <tr>
                    <td valign="top" bgcolor="#D5F4FF" class="texto"><strong>Comentario:</strong></td>
                    <td valign="top" bgcolor="#D5F4FF"><div align="left">
                        <textarea name="comentario" cols="35" rows="10" id="textarea"></textarea>
                      </div></td>
                  </tr>
                  <tr>
                    <td valign="top" bgcolor="#D5F4FF" class="texto">&nbsp;</td>
                    <td valign="top" bgcolor="#D5F4FF"><label> </label> <div align="left">
                      </div></td>
                  </tr>
                  <tr>
                    <td colspan="2"><table width="440" border="0" align="center" cellpadding="0" cellspacing="0">
                        <tr>
                          <th scope="col"><div align="center">
                              <label>
                              <input type="submit" name="Submit" value="Enviar">
                              </label>
                            </div></th>
                          <th scope="col"><div align="center">
                              <label>
                              <input type="reset" name="Submit2" value="Limpiar">
                              </label>
                            </div></th>
                        </tr>
                      </table></td>
                  </tr>
                </table>
              </div></td>
          </tr>
        </table>
      </form>


enviar:


<?

$destinatario="miempresa@dominio.com";

$asunto="Cotizacion desde la pagina web";

// Obtenemos y traducimos el nombre del día
$dia=date("l");
if ($dia=="Monday") $dia="Lunes";
if ($dia=="Tuesday") $dia="Martes";
if ($dia=="Wednesday") $dia="Miércoles";
if ($dia=="Thursday") $dia="Jueves";
if ($dia=="Friday") $dia="Viernes";
if ($dia=="Saturday") $dia="Sabado";
if ($dia=="Sunday") $dia="Domingo";

// Obtenemos el número del día
$dia2=date("d");

// Obtenemos y traducimos el nombre del mes
$mes=date("F");
if ($mes=="January") $mes="Enero";
if ($mes=="February") $mes="Febrero";
if ($mes=="March") $mes="Marzo";
if ($mes=="April") $mes="Abril";
if ($mes=="May") $mes="Mayo";
if ($mes=="June") $mes="Junio";
if ($mes=="July") $mes="Julio";
if ($mes=="August") $mes="Agosto";
if ($mes=="September") $mes="Setiembre";
if ($mes=="October") $mes="Octubre";
if ($mes=="November") $mes="Noviembre";
if ($mes=="December") $mes="Diciembre";

// Obtenemos el año
$ano=date("Y");

// Imprimimos la fecha completa
$fecha= "$dia $dia2 de $mes de $ano";

$personares = $_POST['nombre'];
$email2 = $_POST['email'];


$cuerpo = "La siguiente cotizacion fue enviada con fecha: ".$fecha."\n\n";
$cuerpo .= "Nombre: ".$_POST["nombre"]."\n";
$cuerpo .= "E-mail: ".$_POST["email"]."\n\n";
$cuerpo .= "Telefono: ".$_POST["telefono"]."\n";
$cuerpo .= "Ocupacion: ".$_POST["ocupacion"]."\n";
$cuerpo .= "Compania:: ".$_POST["compania"]."\n";
$cuerpo .= "Direccion: ".$_POST["direccion"]."\n";
$cuerpo .= "Pais: ".$_POST["pais"]."\n";
$cuerpo .= "Ciudad: ".$_POST["ciudad"]."\n";
$cuerpo .= "Comentario: ".$_POST['comentario'];



//$adjuntar=$attachment[]
$cabecera.="From:".$personares." <".$email2."> \n";
mail ($destinatario,$asunto,$cuerpo,$cabecera);

echo "<script language=javascript>
alert('Tu mensaje ha sido enviado correctamente en 24 horas tendras una respuesta a tu solicitud, Gracias');
window.location.href='contactenos.htm';
</script>";

?>



mi pregunta es como puedo hacer eso, gracias por la ayuda que me den..
No hay perfeccion sin esfuerzo...

alone-in-the-chat


Parece tan sencillo (espero no equivocarme) como validar que la variable $_POST['email'] no tengo dentro cadenas como hotmail, mixmail, latinmal, etc,

Puedes usar strstr o strpos

Saludos y suerte.
Because maybe
You're gonna be the one that saves me
And after all
You're my wonderwall
d[n_n]b

Dannysoft

hola, disculpa la ignorancia pero, puedes ponerme un ejemplo de lo que me acabas de decir??
No hay perfeccion sin esfuerzo...

alone-in-the-chat

Código (php) [Seleccionar]

<?php 
if (strpos("@hotmail.com",$_POST['email'] ) === false)
{
//envia correo
}else{
//no envies correo
}
?>



Saludos
Because maybe
You're gonna be the one that saves me
And after all
You're my wonderwall
d[n_n]b

Dannysoft

ok lo voy a probar luego les cuento que fue ...
No hay perfeccion sin esfuerzo...

Dannysoft

aver bueno he probado el codigo que me dieron y no he podido restringir los correos de hotmail, el codigo que use es este:


<?

$destinatario="micorreo@dominio.com";

$asunto="Cotizacion desde la pagina web";

// Obtenemos y traducimos el nombre del día
$dia=date("l");
if ($dia=="Monday") $dia="Lunes";
if ($dia=="Tuesday") $dia="Martes";
if ($dia=="Wednesday") $dia="Miércoles";
if ($dia=="Thursday") $dia="Jueves";
if ($dia=="Friday") $dia="Viernes";
if ($dia=="Saturday") $dia="Sabado";
if ($dia=="Sunday") $dia="Domingo";

// Obtenemos el número del día
$dia2=date("d");

// Obtenemos y traducimos el nombre del mes
$mes=date("F");
if ($mes=="January") $mes="Enero";
if ($mes=="February") $mes="Febrero";
if ($mes=="March") $mes="Marzo";
if ($mes=="April") $mes="Abril";
if ($mes=="May") $mes="Mayo";
if ($mes=="June") $mes="Junio";
if ($mes=="July") $mes="Julio";
if ($mes=="August") $mes="Agosto";
if ($mes=="September") $mes="Setiembre";
if ($mes=="October") $mes="Octubre";
if ($mes=="November") $mes="Noviembre";
if ($mes=="December") $mes="Diciembre";

// Obtenemos el año
$ano=date("Y");

// Imprimimos la fecha completa
$fecha= "$dia $dia2 de $mes de $ano";

$personares = $_POST['nombre'];
$email2 = $_POST['email'];


$cuerpo = "La siguiente cotizacion fue enviada con fecha: ".$fecha."\n\n";
$cuerpo .= "Nombre: ".$_POST["nombre"]."\n";
$cuerpo .= "E-mail: ".$_POST["email"]."\n\n";
$cuerpo .= "Telefono: ".$_POST["telefono"]."\n";
$cuerpo .= "Ocupacion: ".$_POST["ocupacion"]."\n";
$cuerpo .= "Compania:: ".$_POST["compania"]."\n";
$cuerpo .= "Direccion: ".$_POST["direccion"]."\n";
$cuerpo .= "Pais: ".$_POST["pais"]."\n";
$cuerpo .= "Ciudad: ".$_POST["ciudad"]."\n";
$cuerpo .= "Comentario: ".$_POST['comentario'];

if (strpos("@hotmail.com",$_POST['email'] ) === false) { //envia correo }else{ //no envies correo }


//$adjuntar=$attachment[]
$cabecera.="From:".$personares." <".$email2."> \n";
mail ($destinatario,$asunto,$cuerpo,$cabecera);

echo "<script language=javascript>
alert('Tu mensaje ha sido enviado correctamente en 24 horas tendras una respuesta a tu solicitud, Gracias');
window.location.href='ig_contactenos.php';
</script>";

?>

me sale un mensaje de error cuando quiero enviar ("Parse error: syntax error, unexpected $end in /home/ig/public_html/enviar.php on line 68") mi pregunta es que estoy haciendo mal ??
No hay perfeccion sin esfuerzo...

дٳŦ٭

Te falta cerrar una llave '}', cuentalas.

Suerte


Con sangre andaluza :)


Dannysoft

tenias razon en las llaves pero ahora que lo acomode el correo  me sigue llegando o sea no me restringe si es de hotmail igual me llega y no lo bloquea:


<?

$destinatario="correo@dominio.com";

$asunto="Cotizacion desde la pagina web";

// Obtenemos y traducimos el nombre del día
$dia=date("l");
if ($dia=="Monday") $dia="Lunes";
if ($dia=="Tuesday") $dia="Martes";
if ($dia=="Wednesday") $dia="Miércoles";
if ($dia=="Thursday") $dia="Jueves";
if ($dia=="Friday") $dia="Viernes";
if ($dia=="Saturday") $dia="Sabado";
if ($dia=="Sunday") $dia="Domingo";

// Obtenemos el número del día
$dia2=date("d");

// Obtenemos y traducimos el nombre del mes
$mes=date("F");
if ($mes=="January") $mes="Enero";
if ($mes=="February") $mes="Febrero";
if ($mes=="March") $mes="Marzo";
if ($mes=="April") $mes="Abril";
if ($mes=="May") $mes="Mayo";
if ($mes=="June") $mes="Junio";
if ($mes=="July") $mes="Julio";
if ($mes=="August") $mes="Agosto";
if ($mes=="September") $mes="Setiembre";
if ($mes=="October") $mes="Octubre";
if ($mes=="November") $mes="Noviembre";
if ($mes=="December") $mes="Diciembre";

// Obtenemos el año
$ano=date("Y");

// Imprimimos la fecha completa
$fecha= "$dia $dia2 de $mes de $ano";

$personares = $_POST['nombre'];
$email2 = $_POST['email'];


$cuerpo = "La siguiente cotizacion fue enviada con fecha: ".$fecha."\n\n";
$cuerpo .= "Nombre: ".$_POST["nombre"]."\n";
$cuerpo .= "E-mail: ".$_POST["email"]."\n\n";
$cuerpo .= "Telefono: ".$_POST["telefono"]."\n";
$cuerpo .= "Ocupacion: ".$_POST["ocupacion"]."\n";
$cuerpo .= "Compania:: ".$_POST["compania"]."\n";
$cuerpo .= "Direccion: ".$_POST["direccion"]."\n";
$cuerpo .= "Pais: ".$_POST["pais"]."\n";
$cuerpo .= "Ciudad: ".$_POST["ciudad"]."\n";
$cuerpo .= "Comentario: ".$_POST['comentario'];

if (strpos("@hotmail.com",$_POST['email'] ) === false)
{ //envia correo
}
else{ //no envies correo
}


//$adjuntar=$attachment[]
$cabecera.="From:".$personares." <".$email2."> \n";
mail ($destinatario,$asunto,$cuerpo,$cabecera);

echo "<script language=javascript>
alert('Tu mensaje ha sido enviado correctamente en 24 horas tendras una respuesta a tu solicitud, Gracias');
window.location.href='ig_contactenos.php';
</script>";

?>


que estoy haciendo mal ahora?
No hay perfeccion sin esfuerzo...

HadesDark

#8
Hola, una forma facil para que no acepte las direcciones hotmail es usando la funcion eregi(), acá te dejo un ejemplo q hice rapidamente para q te lleves una idea:


<?php

$texto
="direccion@hotmail.com";

if(
eregi("hotmail",$texto))
{
echo "No ingrese correo hotmail por favor";
}
else
{
echo "Correcto el e-mail";
}
?>



Lo bueno de eregi es q no importa si esta en mayusculas o minusculas, asi q valida tanto mayusculas como minusculas sin problema, en pocas palabras no usa el case sensitive como ereg().

yeikos

Código (php) [Seleccionar]
<?php
 
function fncEmail($str) {
$strFilter = array("hotmail.com""mixmail.com""latinmail.com");
$expEmail ereg('^[a-z0-9]+([\.]?[a-z0-9_-]+)*@[a-z0-9]+([\.-]+[a-z0-9]+)*\.[a-z]{2,}$'$str);
 
if ($expEmail == 1) { 
$expFilter explode("@"$str);
for ($i=0;$i<count($strFilter);$i++) {
if ($expFilter[1] == $strFilter[$i]) { 
return 0
}
}

return 1;

} else {
return 0;
}
}
 
if (
fncEmail("user@mail.com") == 1) { 
echo "Direcci&#38;#243;n correcta"
} else { 
echo "Direcci&#38;#243;n incorrecta";
}
 
?>