订阅添加重复的电子邮件消息

时间:2014-06-05 10:45:40

标签: php

我在我的网站上创建了一个简单的“订阅我的简报”字段。

在数据库中我有

  • email_id 作为主要
  • 电子邮件设置为唯一
  • 创建时间戳

如果用户是新用户并注册,则会将其重定向到感谢页面。

如果出现问题,他们会被重定向到失败的尝试页面。

如果电子邮件已经在数据库表格中,我需要的是一个页面,上面写着“此电子邮件已在使用中”。

我想我可以简单地让失败的尝试页面电子邮件已经在使用页面,因为我没有看到什么可能出错,因为电子邮件在数据库中设置为唯一,但我不确定我是否应该这样做与否......?

这是我正在使用的代码。如果有人可以帮我检查重复的电子邮件,那么我可以显示正确的重定向,我会很感激。

<?php
include_once($_SERVER['DOCUMENT_ROOT'] . "/core/database.php");

try {

$emails    =    Input::get('emails');
$creation  =    date('Y-m-d H:i:s');
$email_id  =    Input::get('email_id');

$insertemail = DB::getInstance()->insert('subscriptions', array(
'emails'   => $emails,
'creation' => $creation,
'email_id' => $email_id,
));


if(!$insertemail) {
header("Location:failed-sub.php"); 


} else {
header("Location:successful-sub.php");
}

} catch(Exception $e) {
?><div class="add-errors"><?php die($e->getMessage()); ?></div><?php  
    }
?>

1 个答案:

答案 0 :(得分:0)

从用户体验的角度来看,我只是重新加载注册页面会尝试失败,并在表单上方显示一条警告,解释失败的原因(在这种情况下,电子邮件已在使用中)。

$errors = array();
try {
    $user = User::where('email', Input::get('emails'))->first();

    if ($user) {
        throw new Exception('Email already exists.');
    } else {
        // carry on and create the user
        // redirect to success page
    }

catch (Exception $e) {
    $errors[] = $e->getMessage();
}

if (count($errors)) { ?>
    <div class="alert alert-danger">
       The form failed because:
       <ul>
    <?php
    foreach($errors as $errorMessage) {
        echo "<li>$errorMessage</li>";
    } ?>
       </ul>
    </div>
<?php } ?>
<!-- the rest of your form page -->

注意:此示例使用带有Eloquent ORM的引导主题作为数据库内容。