Foros del Web » Programando para Internet » PHP »

PHP OO correo electronico

Estas en el tema de correo electronico en el foro de PHP en Foros del Web. Quisiera saber si alguno de ustedes sabe como hacer por ejemplo que en el registro cuando coloquemos la direccion de correo electronico, solo acepte una ...
  #1 (permalink)  
Antiguo 30/11/2011, 19:41
 
Fecha de Ingreso: agosto-2011
Ubicación: en mi casa
Mensajes: 37
Antigüedad: 12 años, 8 meses
Puntos: 1
correo electronico

Quisiera saber si alguno de ustedes sabe como hacer por ejemplo que en el registro cuando coloquemos la direccion de correo electronico, solo acepte una direccion por ejemplo: @hotmail.com o @live.com.mx, etc.
Seria de gran ayuda.
  #2 (permalink)  
Antiguo 30/11/2011, 20:42
 
Fecha de Ingreso: noviembre-2011
Mensajes: 27
Antigüedad: 12 años, 4 meses
Puntos: 3
Respuesta: correo electronico

Buenas,

Espero haber entendido tu problema. Vos necesitas que cuando ingreses un registro a tu BD en el campo del email, el unico email posible es cuando termina con @hotmail.com o @live.com.mx . Para mi ese filtrado lo tenes que hacer antes, cuando recolectas la informacion del form. Podrias hacerlo de dos formas, una es crear una funcion "check_email($email)".
La otra es dividir en 2 campos el email, la primer parte seria un input de texto, para el nombre de usuario, y la segunda parte un select con los tipos de provedores de email que aceptas. Despues solo te faltaria concatenar los resultados.

Ejemplo:

Código PHP:
$email_usuario $_POST['email_usuario'];
$email_proveedor $_POST['email_proveedor'];
// posibles valores para email_proveedor serian @hotmail.com , @live.com.mx
$email $email_usuario $email_proveedor
Espero que te sirva, y cualquier duda avisanos!

Saludos,
  #3 (permalink)  
Antiguo 30/11/2011, 21:16
Avatar de Rodrhigo  
Fecha de Ingreso: septiembre-2011
Ubicación: Temuco-Valdivia-Osorno
Mensajes: 254
Antigüedad: 12 años, 7 meses
Puntos: 48
Respuesta: correo electronico

Código PHP:
Ver original
  1. <?php
  2. $dominio='hotmail.com';
  3. if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
  4.     $dividir = explode("@",$email);
  5.     if($dividir[1]==$dominio){
  6.         echo "EMAIL VALIDO Y DOMINIO PERMITIDO :)";
  7.     }else{
  8.         echo "Su dominio <b>".$dividir[1]."</b> No esta permitido";
  9.     }
  10. }else{
  11.     echo "EMAIL MAL INGRESADO";
  12. }
  13. ?>
  #4 (permalink)  
Antiguo 01/12/2011, 00:23
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: correo electronico

Rodrhigo eso no funciona bien.

1.- Si se quiere validar entre varios dominios permitidos.
2.- FILTER_VALIDATE_EMAIL sigue devolviendo un string incluso si $email = nombre@dominio cuando se espera un boolean false.

Saludos.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #5 (permalink)  
Antiguo 01/12/2011, 12:32
 
Fecha de Ingreso: noviembre-2011
Mensajes: 27
Antigüedad: 12 años, 4 meses
Puntos: 3
Respuesta: correo electronico

Yo te volveria a recomendar la posibilidad de que vos les detalles cuales proveedores son validos, en el form agregarias esto

Código PHP:
<form>
<input type="text" name="email_usuario" /><select name="email_proveedor">
<option value="@hotmail.com">@hotmail.com
<option value="@yahoo.com">@yahoo.com
<option value="@terra.com.ar">@terra.com.ar
</select>
</form>

<?

if ($enviar) {
$email_usuario $_POST['email_usuario'];
$email_proveedor $_POST['email_proveedor'];
// posibles valores para email_proveedor serian @hotmail.com , @live.com.mx
$email $email_usuario $email_proveedor;  
}
Y entonces tendrias a la variable email, con un email valido. Y podes poner todos los que quieras.

Espero que te sirva.

Última edición por Panga; 01/12/2011 a las 12:33 Razón: Correccion dentro del codigo
  #6 (permalink)  
Antiguo 01/12/2011, 12:38
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: correo electronico

Cita:
Iniciado por iovan Ver Mensaje
Rodrhigo eso no funciona bien.

1.- Si se quiere validar entre varios dominios permitidos.
2.- FILTER_VALIDATE_EMAIL sigue devolviendo un string incluso si $email = nombre@dominio cuando se espera un boolean false.

Saludos.

Si miras bien el código el solo esta usando FILTER_VALIDATE_EMAIL para verificar que lo que se envío sea un correo electrónico, después separa el dominio con explode y verifica el dominio, lo que el esta haciendo esta bien diseñado y no tiene ningún problema.

Yo lo mejoraría con un array de dominios para que no solo sea hotmail pero eso ya esta en lo que se necesita.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #7 (permalink)  
Antiguo 01/12/2011, 13:08
 
Fecha de Ingreso: noviembre-2011
Ubicación: Morelia, Mich, México
Mensajes: 95
Antigüedad: 12 años, 5 meses
Puntos: 18
Respuesta: correo electronico

Código PHP:
Ver original
  1. <?php
  2.   $mail = "[email protected]";
  3.   $mail = explode("@", $mail);
  4.  
  5.   $dominiosAceptados = array( "hotmail.com",
  6.                                  "gmail.com"
  7.                                );
  8.    if (in_array($mail[1], $dominiosAceptados)) {
  9.            //Tu código aquí si es válido
  10.    }
  11. ?>
__________________
Que de Cosas - Tienda En linea México

La Batalla Por tu cuerpo - Dietas|Rutinas|Entrenamientos|Salud
  #8 (permalink)  
Antiguo 01/12/2011, 18:47
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: correo electronico

Cita:
Iniciado por jotaincubus Ver Mensaje
Si miras bien el código el solo esta usando FILTER_VALIDATE_EMAIL para verificar que lo que se envío sea un correo electrónico, después separa el dominio con explode y verifica el dominio, lo que el esta haciendo esta bien diseñado y no tiene ningún problema

Yo lo mejoraría con un array de dominios para que no solo sea hotmail pero eso ya esta en lo que se necesita.
Hola amigo. Mi respuesta dice:


Cita:
Rodrhigo eso no funciona bien.

1.- Si se quiere validar entre varios dominios permitidos.
2.- FILTER_VALIDATE_EMAIL sigue devolviendo un string incluso si $email = nombre@dominio cuando se espera un boolean false.
Lo que doy a entender es que si yo le paso como argumento un STRING del tipo

miemail@dominio

el filtro FILTER_VALIDATE_EMAIL me sigue devolviendo una string (miemail@dominio) cuando debería devolver un boolean(false)

Ya que miemail@dominio no es un email correcto (le hace falta el dominio (.com, .es, .us, etc....)

Es por eso que dije que eso no funcionaría bien.

Solución: utilizar preg_match y una expresión regular pensada en formato RFC 2822 (creo) para direcciones válidas de correo electrónico según el estándar. Habrá por internet blogs que aporten la expresión regular por si no la quieren hacer ustedes.

Saludos.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.

Etiquetas: email, mysql, sql
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




La zona horaria es GMT -6. Ahora son las 12:14.