php 检查邮件,php – 检查有效的电子邮件及其是否存在

我已经成功地允许用户通过向他们发送带有唯一邀请码的电子邮件来邀请朋友,

>但是我试图添加能力来检查它是否是一个有效的电子邮件地址,以及该电子邮件是否已经在另一个表’用户'(相同的数据库)中注册,因为对于已经注册接收邀请的人来说,这将是一个令人头疼的问题电子邮件.

我曾尝试通过编写此脚本来检查有效的电子邮件是否存在:

function email_registered($email) {

$email = sanitize($email);

return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `email` = '$email'"), 0) ==1) ? true : false;

}

if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false) {

$errors[] = 'A valid email address is required';

}

if (email_registered($_POST['email']) === true) {

$errors[] = 'Sorry, the email \'' . $_POST['email'] . '\' is already in use';

}

这在注册用户时检查电子邮件地址是成功的,但注册帐户与已注册的帐户在同一个表中.我不确定如何在邀请代码中使用相同的脚本,因为我正在尝试检查已注册的单独表中的电子邮件.

目前,它不会检查它是否是有效的电子邮件或是否存在.

完整的PHP:

include 'config.php';

function email_registered($email) {

$email = sanitize($email);

return (mysqli_result(mysqli_query("SELECT mysqli_num_rows()(`user_id`) FROM `users` WHERE `email` = '$email'"), 0) ==1) ? true : false;

}

if(!empty($_POST)){

if(!empty($_POST['email'])){

$email = mysqli_real_escape_string($conn,$_POST['email']);

$length = 10;

$inviteCode = "";

$characters = "0123456789abcdefghijklmnopqrstuvwxyz";

for ($p = 0; $p < $length; $p++) {

$inviteCode .= $characters[mt_rand(10, strlen($characters))];

}

function email_registered($email)

{

if (!empty($email)) {

$ret_val = false;

$query = sprintf(

"SELECT id FROM users WHERE email = '%s'",

mysqli_real_escape_string($email)

);

$result = mysqli_query($query);

$num_rows = mysqli_num_rows($result);

if ($num_rows > 0) {

//email exists

?>

User Exists

$ret_val = true;

} else {

$query = sprintf(

"SELECT id FROM invites WHERE email = '%s'",

mysqli_real_escape_string($email)

);

$result = mysqli_query($query);

$num_rows = mysqli_num_rows($result);

if ($num_rows > 0) {

//email exists

?>

User Exists

$ret_val = true;

}

}

return $ret_val;

}

}

else {

$query = mysqli_query($conn, "INSERT INTO `referrals` (`email`, `inviteCode`) VALUES ('$email', '$inviteCode') "); }

//you might want to consider checking more here such as $query == true as it can return other statuses that you may not want

if($query){

include 'userinvite.php';

?>

"Thank you for inviting your friends!"

}

else{

?>

Sorry there must have been a problem

die('Error querying database. ' . mysqli_error($conn));

}

}

else {

?>

Please enter an email

}

}

?>

我只是想检查电子邮件是否在“用户”表中注册,以及输入的电子邮件是否是有效的电子邮件.

解决方法:

我认为您的主要问题是如何检查另一个表中是否存在电子邮件.如果这是错的,请告诉我,我可以更新我的答案:P这是您应该能够使用的函数的草稿.

我假设你有这两个表:

表1:用户

||id||email||name||

表2:邀请

||id||email||inviter_user_id||

您可以使用此功能检查两个表中是否存在电子邮件

/**

* Check if the given email already exists in the DB

*

* @param $email string the email to check

*/

function email_exists($email)

{

if (!empty($email)) {

$ret_val = false;

$query = sprintf(

"SELECT id FROM users WHERE email = '%s'",

mysqli_real_escape_string($email)

);

$result = mysqli_query($query);

$num_rows = mysqli_num_rows($result);

if ($num_rows > 0) {

//email exists

$ret_val = true;

} else {

$query = sprintf(

"SELECT id FROM invites WHERE email = '%s'",

mysqli_real_escape_string($email)

);

$result = mysqli_query($query);

$num_rows = mysqli_num_rows($result);

if ($num_rows > 0) {

//email exists

$ret_val = true;

}

}

return $ret_val;

}

}

?>

标签:php,mysql

来源: https://codeday.me/bug/20191007/1865433.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值