Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Dannysoft en 18 Julio 2007, 18:23 pm



Título: Validacion de correos en php
Publicado por: Dannysoft en 18 Julio 2007, 18:23 pm
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:
Código:
<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:

Código:
<?

$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..


Título: Re: Validacion de correos en php
Publicado por: alone-in-the-chat en 18 Julio 2007, 18:43 pm

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.


Título: Re: Validacion de correos en php
Publicado por: Dannysoft en 18 Julio 2007, 21:20 pm
hola, disculpa la ignorancia pero, puedes ponerme un ejemplo de lo que me acabas de decir??


Título: Re: Validacion de correos en php
Publicado por: alone-in-the-chat en 18 Julio 2007, 21:39 pm
Código
  1.  
  2. <?php
  3. if (strpos("@hotmail.com",$_POST['email'] ) === false)
  4. {
  5. //envia correo
  6. }else{
  7. //no envies correo
  8. }
  9. ?>
  10.  

Saludos


Título: Re: Validacion de correos en php
Publicado por: Dannysoft en 20 Julio 2007, 18:28 pm
ok lo voy a probar luego les cuento que fue ...


Título: Re: Validacion de correos en php
Publicado por: Dannysoft en 9 Agosto 2007, 23:44 pm
aver bueno he probado el codigo que me dieron y no he podido restringir los correos de hotmail, el codigo que use es este:
Código:

<?

$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 ??


Título: Re: Validacion de correos en php
Publicado por: дٳŦ٭ en 10 Agosto 2007, 03:42 am
Te falta cerrar una llave '}', cuentalas.

Suerte


Título: Re: Validacion de correos en php
Publicado por: Dannysoft en 10 Agosto 2007, 18:24 pm
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:

Código:
<?

$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?


Título: Re: Validacion de correos en php
Publicado por: HadesDark en 10 Agosto 2007, 19:49 pm
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:

Código:
<?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().


Título: Re: Validacion de correos en php
Publicado por: yeikos en 10 Agosto 2007, 21:02 pm
Código
  1. <?php
  2.  
  3. function fncEmail($str) {
  4. $strFilter = array("hotmail.com", "mixmail.com", "latinmail.com");
  5. $expEmail = ereg('^[a-z0-9]+([\.]?[a-z0-9_-]+)*@[a-z0-9]+([\.-]+[a-z0-9]+)*\.[a-z]{2,}$', $str);
  6.  
  7. if ($expEmail == 1) {
  8. $expFilter = explode("@", $str);
  9. for ($i=0;$i<count($strFilter);$i++) {
  10. if ($expFilter[1] == $strFilter[$i]) {
  11. return 0;
  12. }
  13. }
  14.  
  15. return 1;
  16.  
  17. } else {
  18. return 0;
  19. }
  20. }
  21.  
  22. if (fncEmail("user@mail.com") == 1) {
  23. echo "Direcci&#38;#243;n correcta";
  24. } else {
  25. echo "Direcci&#38;#243;n incorrecta";
  26. }
  27.  
  28. ?>


Título: Re: Validacion de correos en php
Publicado por: Dannysoft en 14 Agosto 2007, 22:30 pm
nada  >:(

Código:
<?

$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'];

 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";}


//$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>";
 
?>

acepto sugerencias


Título: Re: Validacion de correos en php
Publicado por: Crack_X en 14 Agosto 2007, 22:39 pm
Aprende un poco de php. Te han dado varias soluciones pero estas implementando todas mal.

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

Ahi esta la funcion que te serviria para solamente enviar emails a hotmail. Leelo despacio y piensa como lo implementarias.


Título: Re: Validacion de correos en php
Publicado por: jamarchi en 23 Agosto 2007, 19:21 pm

Oigan.... un comentario fuera del tema..... cada vez que chequeo los post que hay siempre aprendo algo nuevo y lo peor de todo es que me doy cuenta que me falta por aprender montones... jejeje  ;D , pero muchas gracais por compartir lo que saben