Как проверить, существует ли адрес электронной почты. Проверка - PullRequest
4 голосов
/ 22 мая 2011

Я не могу понять, как проверить, существует ли электронное письмо в моей базе данных.В настоящее время пользователи используют свой адрес электронной почты для входа на мой сайт с паролем, но в настоящее время пользователь может регистрироваться более одного раза с одним и тем же адресом электронной почты, что вызывает большие проблемы на моем сайте.Провели какое-то исследование, но, похоже, не смогли его сделать.

Кто-нибудь может мне помочь?

<?php       

if(isset($_POST['add']))
{
$dbhost = 'localhost';
$dbuser = 'user';
$dbpass = 'pass';
$db = "db";
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Could not send your enquiry at this time please try again later.');
}


$phone = mysql_real_escape_string((string)$_POST['phone']);
$email = mysql_real_escape_string((string)$_POST['email']);
$password = mysql_real_escape_string((string)$_POST['password']);
$firstname = mysql_real_escape_string((string)$_POST['firstname']);
$surname = mysql_real_escape_string((string)$_POST['surname']);
$country = mysql_real_escape_string((string)$_POST['country']);
$nationality = mysql_real_escape_string((string)$_POST['nationality']);
$yearofbirth = mysql_real_escape_string((string)$_POST['yearofbirth']);  
$profession = mysql_real_escape_string((string)$_POST['profession']); 
$status = mysql_real_escape_string((string)$_POST['status']); 
$membertype = 'Registered';
$dateregistered = mysql_real_escape_string((string)$_POST['dateregistered']); 
$agreedtoterms = mysql_real_escape_string((string)$_POST['agreedtoterms']); 

$sql = "INSERT INTO members
       (phone, email, password, firstname, surname, country, nationality, yearofbirth, profession, uniquepin, status, membertype, dateregistered, agreedtoterms)
       VALUES('$phone', '$email', '$password', '$firstname','$surname','$country','$nationality','$yearofbirth','$profession','$uniquepin','$status','$membertype','$dateregistered', '$agreedtoterms')";


mysql_select_db($db);
$retval = mysql_query( $sql, $conn )or die(mysql_error());

?>

Ответы [ 3 ]

5 голосов
/ 22 мая 2011

Вы можете задать для столбца email уникальное ограничение - тогда при попытке вставить запрос завершится неудачей.

Вы также можете просто запросить его ....

SELECT `email`
  FROM `members`
 WHERE `email` = '$email'
 LIMIT 1

Если вы получили результат, электронная почта существует.

1 голос
/ 22 мая 2011

Прежде чем добавить уникальное ограничение для таблицы входа в систему, он должен объединить дублирующиеся записи электронной почты (в противном случае ограничение не будет выполнено) в одну запись и проинформировать затронутых пользователей.

Имея уникальные электронные письма на уровне данных, он может добавить ограничение. Наконец, перед созданием любой новой записи для входа в систему он запускает запрос, чтобы проверить, существует ли электронная почта для добавления.

Должен быть SO поток для этого: email-based-logins 101; -)

0 голосов
/ 22 мая 2011
$query_ch_email = mysql_query("SELECT email FROM members WHERE email = '$email' LIMIT 1") or die(mysql_error());

    if (mysql_num_rows($query_ch_email) > 0)
    {
    $notices['register'][] = 'Your e-mail already exist'; 
    }

    if (!count($notices['register']))
    {
    $sql_insert = "INSERT INTO members (

      phone
    , email
    , password
    , firstname
    , surname
    , country
    , nationality
    , yearofbirth
    , profession
    , uniquepin
    , status
    , membertype
    , dateregistered
    , agreedtoterms

    ) VALUES (

      '$phone'
    , '$email'
    , '$password'
    , '$firstname'
    , '$surname'
    , '$country'
    , '$nationality'
    , '$yearofbirth'
    , '$profession'
    , '$uniquepin'
    , '$status'
    , '$membertype'
    , '$dateregistered'
    , '$agreedtoterms'

    )";

    mysql_query($sql_insert)or die(mysql_error());
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...