我似乎不知道如何检查数据库中是否存在电子邮件。目前,用户使用他们的电子邮件地址使用密码登录我的网站,但目前用户可以使用相同的电子邮件地址多次注册,这在我的网站上造成了很大的问题。已经做了一些研究,但似乎无法解决。
有人能帮我吗?
<?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());
?>
您可以使email
列具有唯一约束,然后在尝试插入时查询将失败。
你也可以直接查询…
SELECT `email`
FROM `members`
WHERE `email` = '$email'
LIMIT 1
如果你得到一个结果,电子邮件就存在。
在登录表上添加唯一约束之前,他需要将重复的电子邮件记录(否则约束将失败)合并为一条记录,并通知受影响的用户。
通过电子邮件在数据级别上的唯一性,他可以添加限制。最后,在创建任何新的登录记录之前,他运行一个查询,查看是否存在要添加的电子邮件。
应该是一个SO线程:基于电子邮件的登录101;--)
只需提出一个数据库问题,看看电子邮件地址是否已经存在。
$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 (
'".mysql_real_escape_string($phone)."'
, '".mysql_real_escape_string($email)."'
, '".mysql_real_escape_string($password)."'
, '".mysql_real_escape_string($firstname)."'
, '".mysql_real_escape_string($surname)."'
, '".mysql_real_escape_string($country)."'
, '".mysql_real_escape_string($nationality)."'
, '".mysql_real_escape_string($yearofbirth)."'
, '".mysql_real_escape_string($profession)."'
, '".mysql_real_escape_string($uniquepin)."'
, '".mysql_real_escape_string($status)."'
, '".mysql_real_escape_string($membertype)."'
, '".mysql_real_escape_string($dateregistered)."'
, '".mysql_real_escape_string($agreedtoterms)."'
)";
mysql_query($sql_insert) or die(mysql_error());
}