Форма подписки PHP с проверкой дубликатов электронной почты - PullRequest
0 голосов
/ 10 февраля 2019

Я очень новичок в PHP и пытаюсь добавить проверку дубликатов электронной почты с помощью этого кода

Это работает так, как мне нужно, с точки зрения передачи информации в mysql db, но я хочу, чтобы она не позволяла дублировать электронные письма.Я смотрел на добавление счетчика для результатов, которые соответствуют введенной электронной почте, а затем, если> 1 помечать как дубликат.Я не уверен, куда это должно пойти в потоке или как это сделать, если честно.Любая помощь с благодарностью.

<?php

//if form has been submitted process it
if(isset($_POST['submit'])){

    //collect form data
    extract($_POST);

    if(!isset($error)){

        try {
            //insert into database
            $stmt = $db->prepare('INSERT INTO email_subs (email) VALUES (:email)') ;
            $stmt->execute(array(
                ':email' => $email
            ));

            //redirect to index page
            header('Location: ./thanks.php?action=added');
            exit;

        } catch(PDOException $e) {
            echo $e->getMessage();
        }

    }

}

//check for any errors
if(isset($error)){
    foreach($error as $error){
        echo '<p class="error">'.$error.'</p>';
    }
}
?>
<form action='' method='post'>

<input type='email' name='email' required="required" data-error="Valid email is required." value='<?php if(isset($error)){ echo $_POST['email'];}?>'></p>
    <div class="invalid-feedback">
              Please enter your email.
     </div>
    <button type='submit' name='submit' value='Submit' class="btn-red">Sign-Up</button>
</form>

1 Ответ

0 голосов
/ 10 февраля 2019

Сначала установите столбец email в качестве уникального ключа в таблице БД

Затем проверьте исключение PDOException

try {
   $prep->execute($values);
   // do other things if successfully inserted
} catch (PDOException $e) {
   if ($e->errorInfo[1] == 1062) {
      $email_error = "Email already exists in our mailing list"
      // then show this in html
   } else {

   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...