php - 时事通讯注册页面(PHP 和 MySQL)

标签 php mysql ajax newsletter

我正在使用 PHP 和 MySQL 创建新闻通讯注册页面。我使用来自 this site 的免费资源.

我已经在 MySQL 中创建了一个数据库并且已经成功测试并将它链接到我的 PHP 文件。但是,当我预览它 (subscribe.php) 时,我收到了错误通知。不确定我在代码中遗漏了哪些变量。

Notice: Undefined index: signup-email in C:\xampp\htdocs\test\subscribe.php on line 15 {"status":"error","message":"The email address field must not be blank"}**

这是我的代码(2 个 PHP 文件):

newsletters.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>newsletters</title> 
<link rel="stylesheet" href="css/newsletter.css">

</head>
<body>

    <div id="newsletterform">
    <div class="wrap">
        <h3>Get Email Update</h3>
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin ullamcorper sapien luctus nisl laoreet, ac commodo tellus placerat. Etiam nec magna lacus. Curabitur quis felis vel nisl tincidunt hendrerit.</p>
        <form action="subscribe.php" method="post" id="newsletter" name="newsletter">
        <input type="email" name="signup-email" id="signup-email" value="" placeholder="Insert email here" />
        <input type="submit" value="Subscribe" name="signup-button" id="signup-button">
        <span class="arrow"></span>
        </form>
        <div id="response"></div>
        </div>
    </div>

<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
<script src="js/lib.js"></script>


</body>
</html>

subscribe.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>newsletter-submit</title> 
</head>

<body>
<?php

$host   = "localhost";
$dbname = "cc_email_list";
$user   = "ccemail";
$pass   = "password";
$email    = filter_var($_POST['signup-email'], FILTER_SANITIZE_EMAIL);
$datetime = date('Y-m-d H:i:s');

try {
    $db = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);

    if (empty($email)) {
        $status = "error";
        $message = "The email address field must not be blank";
    } else if (!preg_match('/^[^0-9][A-z0-9._%+-]+([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/', $email)) {
        $status = "error";
        $message = "You must fill the field with a valid email address";
    } else {
        $existingSignup = $db->prepare("SELECT COUNT(*) FROM signups WHERE     signup_email_address='$email'");
        $existingSignup->execute();
        $data_exists = ($existingSignup->fetchColumn() > 0) ? true : false;

        if (!$data_exists) {
            $sql = "INSERT INTO signups (signup_email_address, signup_date) VALUES (:email, :datetime)";
            $q = $db->prepare($sql);
            $q->execute(
                array(
                    ':email' => $email,
                    ':datetime' => $datetime
            ));

            if ($q) {
                $status = "success";
                $message = "You have been successfully subscribed";
            } else {
                $status = "error";
                $message = "An error occurred, please try again";
            }
        } else {
            $status = "error";
            $message = "This email is already subscribed";
        }
    }

    $data = array(
        'status' => $status,
        'message' => $message
    );

    echo json_encode($data);

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

?>
</body>
</html>

最佳答案

为什么你会遇到这个问题

此错误表示 $_POST['signup-email'] 未设置(因此提交表单时未填写名称为“signup-email”的字段或根本未填写)。
这不是一个严重的错误,也不会影响代码的正确运行。

解决方案

如果您想关闭此类错误的报告,请在打开 PHP 标记之后添加此代码:

error_reporting(E_ERROR | E_WARNING | E_PARSE);

关于php - 时事通讯注册页面(PHP 和 MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25728586/

相关文章:

php - Vagrant、PhpStorm、HHVM 和 Xdebug

php - 从外部 php 文件访问 joomla 的助手

php - 用 preg_split 分离一些东西

java - 在 SQL 准备语句中放入 javascript 变量 (java)

php - jQuery - 找不到 ajax url

php - 如何使用 perl 在 php mysql 中从 linux 服务器收集数据?

php - 复制 PDO 对象会创建多个连接吗?

php - 如何删除 LEFT OUTER JOIN

javascript - CouchDB AJAX 交互

php - 如何刷新父页面上的下拉列表