我正在创建一个与PHP和MySQL的通讯注册页面。我使用来自this site的这个免费源代码。
我在MySQL中创建了一个数据库,并成功地进行了测试,并将其链接到我的PHP文件中。但是,当我预览错误(subscribe.php)时,我会收到它的错误通知。不确定代码中遗漏了哪些变量。
注意:未定义的索引:在第15行的C:\xampp\htdocs\test\subscribe.php中注册-电子邮件{“状态”:“错误”,“消息”:“电子邮件地址字段不能为空”}**
下面是我的代码(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>发布于 2014-09-08 16:17:25
你为什么要面对这个问题
此错误意味着没有设置$_POST'signup-email‘(因此表单是在没有填写“注册-电子邮件”名称的情况下提交的,或者根本没有填写)。
这不是一个严重的错误,也不会影响代码的正确操作。
解决方案
如果要关闭对此类错误的报告,请在PHP标记打开后添加以下代码:
error_reporting(E_ERROR | E_WARNING | E_PARSE);发布于 2014-11-18 17:23:06
如果你被“通知”挂断了,你会真的讨厌将来的大型PHP项目:)!大多数人只需关闭它们,就可以将下面的代码放在任何php页面的顶部。
<?php
error_reporting(E_ALL ^ E_NOTICE);
?>https://stackoverflow.com/questions/25728586
复制相似问题