php - 检查电子邮件验证和多封电子邮件的简单方法?

标签 php mysql email

我已经在这个网站和互联网上搜索了一个很好的简单解决方案,用于检查电子邮件是否被两次输入我的数据库以及它是否是有效的电子邮件。我一直无法找到一个简单的解决方案。这是我的表格和 php。提前致谢

    <div class="email-survey">  
                <?php if(isset($success)) { ?>
                    <div class="success_survey">Thanks you! Your survey has been submitted</div>
                <?php } ?>

                <?php if(isset($error)) { ?>
                    <div class="error_survey">
                <?php echo $error; ?>
                    </div>
                <?php } ?>

        <form name="settings" action="/survey-confirm.php" method="post">
        <input type="text" name="email" /> <br />
        <input type="submit" name="submit" value="submit" />
        </form>
   </div>

require_once($_SERVER['DOCUMENT_ROOT'] . '/includes/system/init.php');

if(isset($_POST['submit'])) {

        $email = $_POST['email'];
        if(empty($_POST['email'])) { 

            $error = "Please enter a valid email";

        }else{
            $success = true;    

            mysql_query("INSERT INTO survey_email 
                (email) VALUES('".$_POST['email']."' ) ") 
                or die(mysql_error()); 
            header('Location: /survey-email-confirm.php');
        }
    }

?>

最佳答案

向用户发送链接。当他们单击它时,使用 $_GET 信息来验证它是有效的电子邮件。当然,您应该使用 MySQL SELECT 查询来测试电子邮件是否存在以防止重复条目。下面显示了 mysqli 面向对象的方法,我建议您使用它来避免重新输入内容:

include 'db.php';
if(isset($_POST['submit'])){
  $em = trim($_POST['email']);
  if($em === '' || !preg_match('/^.{1,62}@.{1,62}\.[a-zA-Z]{2,4}$/', $em)){
    $error = 'Please Enter a Valid Email';
  }
  else{
    $sml = $db->query("SELECT email FROM survey_mail WHERE email='$em'");
    if($sml->num_rows > 0){
      $error = 'Sorry, this Email is Already in Use';
    }
    else{
      $eml = $db->real_escape_string($em);
      $db->query("INSERT survey_email (email) VALUES ('$eml')");
      //the below leaves out the $doctype, beginning html tag and your $css
      $dt = date('l, F j, Y, g:i:sa T', time());
      $msg = "$doctype<title>Your Email Was Received</title><style type='text/css'>$css</style></head><body><a href='http://www.domain/wherever.php?em=someCrazyHashOrSomthing'>Please Click the Following Link to Confirm Your Email Address is Valid</a></div><div><b>Sent:</b> $dt <br /><b>Email:</b> $em <br /></div></body></html>";
      mail($em, 'Thank You for Contacting Us', $msg, "From: name@domain.com\r\ncontent-type: text/html");
    }
  }
  $sml->free(); $db->close();
}
else{
  $em = 'example@example.com';
}

当然,现在您需要PHP 来验证电子邮件中的链接信息。我不会为你做所有的工作,所以玩得开心。您可以考虑使用我的图书馆 PHPglue .它将对数据进行多次检查,工作量很少,并且包括自动 JavaScript 错误,无需了解 JavaScript。

关于php - 检查电子邮件验证和多封电子邮件的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18666764/

相关文章:

PHP论坛数据库优化

mysql - 在node-mysql中插入时如何选择行[0]?

java - Spring boot Bean异常: Cannot determine embedded database driver class for database type NONE

php - Laravel 添加 ?发邮件

asp.net-mvc-3 - SmtpClient.SendAsync 阻塞了我的 ASP.NET MVC 请求

php - 通过不同服务器的 FTP PHP

php - 如果记录在一张表中,如何显示名称而不是 ID?

PHP 不发送 id

mysql - 如何获取以下格式的数据?

java - 从 gmail 搜索电子邮件不起作用