Bienvenido a datoweb.com!! En este foro podrás encontrar ayuda sobre diseño y desarrollo web en general. Si quieres formar parte de esta comunidad para pedir ayuda o colaborar ayudando a otros usuarios del foro solo tienes que registrarte desde el siguiente enlace: Registrarse en el Foro

DUDA!! validar correos Hotmail o Gmail

Hola, bueno últimamente he tenido una duda acerca del registro, no tengo ningún problema, pero me gustaría saber como puedo validar el correo del usuario al momento de que se registra, es decir, quisiera que ya sea con alguna función php o javascript, me pueda validar que el correo que proporciono el usuario sea hotmail o gmail, y no un correo ficticio, por ejemplo:

example1@hotmail.com ---------> sea valido y deje proceder al registro.

example2@gmail.com ---------> sea valido y deje proceder al registro.

exmple3@novalido.com -----------> correo no valido, introduzca un correo hotmail o gmail. y no deje proceder al registro.

exmple4@abcdefghijklm.com -----------> correo no valido, introduzca un correo hotmail o gmail. y no deje proceder al registro.

he probado con el registro que tengo y es cierto que con poner cualquier valor después del @ y poner el .ej el registro lo valida como correo, al registrar el usuario claro que tengo el paso de verificar correo, pero me gustaría poder evitar este tipo de correo falsos o inexistentes, y que mi base de datos se llene de información no valida, por tanto me gustaría que el usuario pusiera dominios de correos permitidos, así mismo poder ya sea quitar o agregar dominios para el correo, por ejemplo yahoo, o dominios de correos de escuelas, y otras empresas ademas de las ya conocidas mundialmente... les agradecería mucho.
Editado
0
Puntos
1750
Visitas
6
Resp
Por Jesxs hace 30 meses
Desactivado

Respuesta #1

cierto, en cierta manera el compañero Jose tiene razon! tu quieres filtrar con los correos mas conocidos, hay que tener en cuenta que el 10% de los registros serán con correos de dominio propios

pero si estamos dispuestos a perder esos registros puedes usar este ejemplo que te hemos preparado Jose y yo:
<?php

//Por defecto 0 no válido
$validar=0;
//Correo del usuario
$correo = "hola@hotmail.com";
//Obtener dominio
$explode = explode("@", $correo);

//Lista de correo válidos
$permitidos=array('hotmail.com','gmail.com','etc.com');

//Cantidad de correos válidos
$cantidad=count($permitidos);


//Comparar con la lista de correos válidos
for ($i=0; $i < $cantidad; $i++) { 

if ($permitidos[$i]==$explode[1]) $validar=1;

}

//Si es válido registrar usuario
if($validar==1){
//Registrar usuario <----------
}

//Si no es válido imprimir mensaje
else if($validar==0){
echo 'correo no valido!';
}


?>
en el array $permitidos puedes meter tu lista de correos permitidos separando con una coma, prueba y nos cuentas!
1
Puntos
Por alber hace 30 meses
Administrador

Respuesta #2

Dudo q exista alguna manera de hace eso de hecho si te refistras en facebook con un correo tipo correo@hshshshsgsgsgjyyur.com te deja perfectamente

A ver q responden los compañeros
0
Puntos
Por alber hace 30 meses
Administrador

Respuesta #3

Ay alber, como que no se puede.. Si no existe manera de hacerlo, hay que crearla. Claro que se puede hacer compañero Jesxs. Mira esto
<?php

	$correo = "hola@hotmail.com";
	$explode = explode("@", $correo);

	if ($explode[1] == "hotmail.com") {
		echo "Valido";
	} else {
		echo "No valido";
	}

?>
Te explico eso. El explode es una función de PHP que crea un array separando una cadena (string) por medio de un delimitador, en este caso nos interesa que sea @. Si tu haces un print_r de ese explode te mostrará el array.
print_r($explode);

// ** Muestra **
// Array ( [0] => hola [1] => hotmail.com )
Quiere decir que en la posición [0] tiene lo que está antes del @ y en la posición [1] tiene lo que está después del @, nos interesa lo que está después del @ ¿cierto? En este ejemplo es hotmail.com, pero si tú cambias la variable $correo por otro, por ejemplo
$correo = hola@viruslandia.com
Te dirá que no es válido.
Bien, pero el ejemplo solo valida si es hotmail.com y no otro. Puedes hacer ésto:
if ($explode[1] == "hotmail.com" OR $explode[1] == "gmail.com" OR $explode[1] == "yahoo.com" OR $explode[1] == "outlook.com") {
     ....
}
E ir colocando todos los dominios que consideres. Cosa que funciona pero me parece que es más óptimo usando una base de datos. ¿Cómo así?

Bueno, crea una tabla llamada dominios_validos por ejemplo con las columnas (id, dominio). Con solo eso basta. Ahora, inserta todos los dominios que tú consideres validos.. Puedes hacerlo directamente desde el panel MySQL o creando un formulario e ir insertando los dominios válidos. Ahora, para validar el registro sería así:

HTML
<form action="registro.php" method="POST">
    <input type="text" name="username">
    <br>
    <input type="email" name="email">
    <br>
    <input type="submit" value="Registrar">
</form>

PHP
<?php

$username = $_POST["username"];
$email = $_POST["email"];
$validation = explode("@", $email);
$dominio = $validation[1];

$sql = sprintf("SELECT * FROM dominios_validos WHERE dominio = %s", GetSQLValueString($dominio,"text"));
$consulta = mysql_query($sql);
$num_rows = mysql_num_rows($consulta);

if ($num_rows == 1) {

    // Si existe este dominio como dominio valido en la base de datos
    // Registramos al usuario
} else {
    // El dominio no existe como valido en la base de datos
    // No lo registramos
}

?>
Los dominios que guardes en la base de datos deben ser como:
hotmail.com
hotmail.es
gmail.com
yahoo.com
etc,etc,etc..

Pruébalo y vuelve para contarnos como te fue. Cualquier duda hazla por aquí y te ayudaremos. :)
0
Puntos
Por Jose hace 30 meses
Experto Sitio web

Respuesta #4

claro y haces eso con los mas de mil millones de dominios que existen en internet??? y si yo tengo un correo de un domio propio que se llama admin@abcdefg.net que????

recordar que hay mas de mil millones de dominios y que con esos dominios existen correos electronicos aunque para usar los mas conocidos es obvio que se puede hacer con explode y condicionales aunque no creo que esa sea la pregunta pero puede valer
0
Puntos
Por alber hace 30 meses
Administrador

Respuesta #5

ademas hay una función predefinida de php que se encarga de hacer eso
<?php
$email_a = 'joe@example.com';
$email_b = 'bogus';

if (filter_var($email_a, FILTER_VALIDATE_EMAIL)) {
    echo "Esta dirección de correo ($email_a) es válida.";
}
if (filter_var($email_b, FILTER_VALIDATE_EMAIL)) {
    echo "Esta dirección de correo ($email_b) es válida.";
}
?>
ay Jose y sus ilusiones xdd

enlace oficial
0
Puntos
Por alber hace 30 meses
Administrador

Respuesta #6

JAJAJAJA, si alber. Yo busqué ese tema que hiciste sobre eso de validad. Pero el amigo quiere validar dominios decentes porque hay "bots" que se registran con correos como soyunbot4192@wseutjdaxfiw.com

Ciertamente hay millones de dominios, pero él dice que pondría los dominios más conocidos y eso.. Bueno, cito.
// así mismo poder ya sea quitar o agregar dominios para el correo, por ejemplo yahoo, o dominios de correos de escuelas, y otras empresas ademas de las ya conocidas mundialmente
0
Puntos
Por Jose hace 30 meses
Experto Sitio web

Relaccionados

Para comentar Inicia sesión o Registrate