当数据库中不存在电子邮件时,PHP 注册表单会告诉用户电子邮件已存在

标签 php mysql forms

我在一个页面上有一个 PHP 表单,而表单操作在一个单独的 php 文件中。我收到用户的反馈说,当他们尝试注册时,一些用户(不是全部)因为我可以看到一些用户的信息在我的数据库中更新,一些用户收到错误消息,让他们知道他们尝试注册的电子邮件已经在数据库中,当他们尝试登录我的登录页面(只需要注册的电子邮件地址)时,它告诉他们数据库中不存在该信息。所以我认为我的注册表单或操作代码有问题。

这是表单操作 php 代码:

<?php
include("includes/connection.php");


$sql = "INSERT INTO login (email, first_name, last_name, business_name, occupation, business_address_1, business_address_2, country, city, state_province, zip, phone, business_address_1_alt, business_address_2_alt, country_alt, city_alt, state_province_alt, zip_alt, phone_alt, special_offers)
VALUES ('$_POST[email]','$_POST[first_name]','$_POST[last_name]','$_POST[business_name]','$_POST[occupation]','$_POST[business_address_1]','$_POST[business_address_2]','$_POST[country]','$_POST[city]','$_POST[state_province]','$_POST[zip]','$_POST[phone]','$_POST[business_address_1_alt]','$_POST[business_address_2_alt]','$_POST[country_alt]','$_POST[city_alt]','$_POST[state_province_alt]','$_POST[zip_alt]','$_POST[phone_alt]','$_POST[special_offers]')";


if (mysqli_query($connection, $sql)) {
echo header('Location: reg-success.php');
} else {
 mysqli_error($connection);
}
//Check for Duplicate Email

if (mysqli_error($connection).("Duplicate entry '$email' for key 'email'")) {
echo "<div style='margin: auto 0; text-align:center;'><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p>Email already exists ... please try again.<br><br><a href='register.php'>Click here to return to the register page.</a></div>";
//header('Location: register.php');
exit;

//trigger_error('Email Already Exists.', E_USER_WARNING);
}



mysqli_close($connection);

?>

这是 php 表单所在页面的代码:

<?php
// Start the session
session_start();
?>
<!doctype html>
<html>
<head>
<!-- Necessary jQuery Code (if you are using the $.browser object you need jQuery < 1.9) -->
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<!-- Your scripts-->
<script type='text/javascript'>
var form = document.getElementById('register'); // form has to have ID: <form id="formID">
form.noValidate = true;
form.addEventListener('submit', function(event) { // listen for form submitting
    if (!event.target.checkValidity()) {
        event.preventDefault(); // dismiss the default functionality
        alert('Please, fill the form'); // error message
    }
 }, false);
</script>

<link rel="stylesheet" type="text/css" href="global.css">
<link href='http://fonts.googleapis.com/css?family=Anton' rel='stylesheet' type='text/css'>
<meta charset="UTF-8">
<title>Install Fel-Pro Promotion</title>
</head>

<body>

<div class="wrapper">

<form id="register" name="register" action="register-form.php" method="POST" accept-charset="utf-8"><table width="600px">
<tr>
<td style="padding-right:14px;" valign="top"><span id="large-copy-2b">REGISTER:</span></td>
<td style="padding-right:14px;" valign="top"><input type="email" id="email" name="email" required = "true" = "true"></td>
<td>Email Address<span style="color:#FF0004;">*</span></td></tr>

<tr>
<td height="14px" colspan="3"><span id="large-copy-2b" style="color:#FF0004; font-size:14px;">required*</span></td></tr>

<tr><td ></td><td style="padding-right:14px;" valign="top"><input type="text" id="first_name" name="first_name" required = "true"></td>
<td>First Name<span style="color:#FF0004;">*</span></td></tr>
<td height="14px" colspan="3"></td></tr>
<tr><td></td><td><input type="text" id="last_name" name="last_name" required = "true"></td>
<td>Last Name<span style="color:#FF0004;">*</span></td></tr>
<td height="14px" colspan="3"></td></tr>
<tr><td></td><td style="padding-right:14px;" valign="top"><input type="text" id="business_name" name="business_name" required = "true"></td>
<td style="padding-right:14px;" valign="top">Business Name<span style="color:#FF0004;">*</span></td></tr><td height="14px" colspan="3"></td></tr>
<tr><td></td><td style="padding-right:14px;" valign="top"><input type="text" id="occupation" name="occupation" required = "true"></td>
<td style="padding-right:14px;" valign="top">Occupation<span style="color:#FF0004;">*</span></td></tr><td height="14px" colspan="3"></td></tr>
<tr><td></td><td style="padding-right:14px;" valign="top"><input type="text" id="business_address_1" name="business_address_1" required = "true"></td>
<td style="padding-right:14px;" valign="top">Business Address 1<span style="color:#FF0004;">*</span></td></tr><td height="14px" colspan="3"></td></tr>
<tr><td></td><td style="padding-right:14px;" valign="top"><input type="text" id="business_address_2" name="business_address_2"></td><td style="padding-right:14px;" valign="top">Business Address 2</td></tr><td height="14px" colspan="3"></td></tr>
<tr><td></td><td style="padding-right:14px;" valign="top"><select name="country">
<option>United States</option>
<option>Canada</option>

</select></td>
<td style="padding-right:14px;" valign="top">Country<span style="color:#FF0004;">*</span></td></tr><td height="14px" colspan="3"></td></tr>
<tr><td></td><td style="padding-right:14px;" valign="top"><input type="text" id="city" name="city" required = "true"></td>
<td style="padding-right:14px;" valign="top">City<span style="color:#FF0004;">*</span></td></tr><td height="14px" colspan="3"></td></tr>
<tr><td></td><td style="padding-right:14px;" valign="top"><select name="state_province">
<option>*states*</option>

</select></td>
<td style="padding-right:14px;" valign="top">State/Province<span style="color:#FF0004;">*</span></td></tr><td height="14px" colspan="3"></td></tr>
<tr><td></td><td style="padding-right:14px;" valign="top"><input type="text" id="zip" name="zip" required = "true"></td>
<td style="padding-right:14px;" valign="top">ZIP/Postal Code<span style="color:#FF0004;">*</span></td></tr><td height="14px" colspan="3"></td></tr>
<tr><td></td><td style="padding-right:14px;" valign="top"><input type="text" id="phone" name="phone" required = "true"></td>
<td style="padding-right:14px;" valign="top">Phone<span style="color:#FF0004;">*</span></td></tr><td height="42px" colspan="3" align="center"><span id="large-copy-2b">SHIPPING ADDRESS (IF DIFFERENT)</span></td></tr>


<tr><td></td><td style="padding-right:14px;" valign="top"><input type="text" id="business_address_1_alt" name="business_address_1_alt"></td><td style="padding-right:14px;" valign="top"> Address 1</td></tr><td height="14px" colspan="3"></td></tr>
<tr><td></td><td style="padding-right:14px;" valign="top"><input type="text" id="business_address_2_alt" name="business_address_2_alt"></td><td style="padding-right:14px;" valign="top">Address 2</td></tr><td height="14px" colspan="3"></td></tr>
<tr><td></td><td style="padding-right:14px;" valign="top"><select name="country_alt">
  <option value=""></option>
  <option>United States</option>
  <option>Canada</option>

</select></td><td style="padding-right:14px;" valign="top">Country</td></tr><td height="14px" colspan="3"></td></tr>
<tr><td></td><td style="padding-right:14px;" valign="top"><input type="text" id="city_alt" name="city_alt"></td><td style="padding-right:14px;" valign="top">City</td></tr><td height="14px" colspan="3"></td></tr>
<tr><td></td><td style="padding-right:14px;" valign="top"><select name="state_province_alt">
<option>*states*</option>

</select></td><td style="padding-right:14px;" valign="top">State/Province</td></tr><td height="14px" colspan="3"></td></tr>
<tr><td></td><td style="padding-right:14px;" valign="top"><input type="text" id="zip_alt" name="zip_alt"></td><td style="padding-right:14px;" valign="top">ZIP/Postal Code</td></tr><td height="14px" colspan="3"></td></tr>
<tr><td></td><td style="padding-right:14px;" valign="top"><input type="text" id="phone_alt" name="phone_alt"></td><td style="padding-right:14px;" valign="top">Phone</td></tr><td height="14px" colspan="3"></td>



<tr><td></td><td style="padding-right:14px;" valign="top"><select name="special_offers">
<option>Yes</option>
<option>No</option>

</select></td><td style="padding-right:14px;" valign="top">Would you like to receive email with special offers and programs?</td></tr><td height="14px" colspan="3"></td></tr>
<tr><td></td><td><input type="submit" src="_images/submit-btn.jpg" border="0"></td></tr></table>

</form>

</div>

*我删除了所有状态选项,因此这篇文章不会太长。

最佳答案

发出 header() 语句后,您应该运行 exit;,否则代码将继续正常执行。

所以尝试一下

if (mysqli_query($connection, $sql)) {
    header('Location: reg-success.php');
    exit;
} else {
    mysqli_error($connection);
}

我不能说我喜欢这种重复检查机制,我建议最好在运行 INSERT 之前运行 SELECT 查询来检查那些不应重复的字段。

问题在于可能会发生任意数量的错误,但您只检查一个特定错误。

关于当数据库中不存在电子邮件时,PHP 注册表单会告诉用户电子邮件已存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28942490/

相关文章:

php - 如何在 ubuntu 机器上安装 oracle instantclient 和 pdo_oci?

php - 如何在 PHP 和 Mysqli 中插入日期

php - Drupal 表单重定向到片段

javascript - 验证单个表单的特定字段是否存在各种选择框更改 - jQuery

javascript - 将值附加到 Javascript 表单上的 URL

javascript - jQuery 弹出窗口显示旧内容而不是新内容

php - 您可以根据 ajax 响应中提交的表单数据提示下载吗?

PHP PDO bindParam/bindValue 多次

mysql - 按最多匹配次数排序的 Sql 排名

mysql - 主要按时间限制 MySQL 行,然后(可能)按行数限制