Verificar email en base de datos usando PHP

  • Autor Autor Wocker
  • Fecha de inicio Fecha de inicio
W

Wocker

Épsilon
Social Media
Hola Betas, nuevamente les vengo a pedir ayuda con un script en PHP que estoy desarrollando junto a otra persona y necesito saber que como si el siguiente código podemos hacer una consulta a la base de datos MySql para saber si el email ya se encuentra en la base de datos y le devuelva un mensaje de error al usuario:
PHP:
<?php
include('validate.php');
//Validar campos
$error = false;
$email = $_POST['email'];
if(!$email) {
	//Email se envio en blanco
	$error = true;
}

if(!check_email_address($email)) {
	//Email no tiene formato correcto
	echo "<h1>El email no cuenta con un formato correcto</h1><br><h2>Ejemplo: Correo@dominio.com</h2>";
	$error = true;
}


if($error) {
	//Hubo un error
}
else {
	$link = mysql_connect("localhost","base","contrasena");
	if (!$link) {
		die('Could not connect: ' . mysql_error());
	}
	$db_selected = mysql_select_db("base",$link);
	if (!$db_selected) {
		die ('Can\'t use foo : ' . mysql_error());
	}

	$query = sprintf("INSERT INTO suscriptores (email) VALUES ('%s')", mysql_real_escape_string($email));
	mysql_query($query,$link);
	if(mysql_num_rows($query)){ 
        echo '<h1>El email ya se encuentra registrado<h1>';
	// Ahora comprobaremos que todo ha ido correctamente
	$my_error = mysql_error($link);

	if(!empty($my_error)) {

	echo "<h1>Error, no se pudo conectar al servidor, porfavor intentelo nuevamente</h1>";

	} else {

	header('Location: http://locahost/gracias');
	} 
	mysql_close($link);
}
?>

Saludos y gracias de antemano por su ayuda 🙂
 
Última edición:
Siempre puedes hacer que la columna "email" sea única, es decir, sea la predeterminada así no se podrán insertar dos enlaces y a dará error. Si no sabes como se hace te explico.
 
La manera que yo uso es hacer algo como lo siguiente:
PHP:
$email = 'email_elegido@blah';
$query = mysql_query('SELECT COUNT `email` AS `total` FROM `suscriptores` WHERE `email`='.$email;
$result = mysql_fetch_assoc($query);
if ($result['total'] > 0)
{
// Ya está el email
}
else
{
// No está
}
O si no también de la siguiente manera: (que creo que es más rápida)
PHP:
$email = 'email_elegido@blah';
$query = mysql_query('SELECT `email` FROM `suscriptores` WHERE `email`='.$email.' LIMIT 1');
if (mysql_num_rows($query) > 0)
{
// Ya está el email
}
else
{
// No está
}
 
Atrás
Arriba