尝试使用第一个代码-这很有效,但在提交表单时会出现错误isset($_POST[\'name\']
收件人:
isset($_POST[\'name\'] && !empty($_POST[\'name\']
在代码中,您正在触发
$missing_content
这是vars
empty
. 根据规范(请参阅参考资料),一个空字符串(与您的情况不同)将触发此操作。此外,如果未设置字符串,则认为该字符串为空,因此根据前面的代码,我建议首先设置所有值。
Reference:
现在,我个人会将您的代码改成这样(请记住,现在已经很晚了,我已经完成了10个小时的编码,所以我只给您一个片段开始):
首先设置一些重要的VAR,这些VAR必须由用户填写,并将帮助您验证表单。我将使用姓名、电子邮件和文本。
$error_name = false;
$error_email = false;
$error_message = false;
我将它们设置为false,因为从一开始,我们假设一切正常,用户将填充所有内容。然后,我们设置并获取值。现在您没有发布表单的DOM,但我假设您的提交按钮具有已提交的名称和ID。
if (isset($_POST[\'submitted\'])) {
$name = \'\';
$email = \'\';
$message = \'\';
因此,在提交表单后,将设置值。当然,它们现在都是空的,但至少现在我们不会有值丢失和未设置的问题。因此,我们以后可以省略
isset
因为我们确信他们确实已经准备好了。现在让我们得到一些实值,下面是上述代码的延续:
if (trim($_POST[\'name\']) === \'\') {
$error_name = true;
} else {
$name = trim($_POST[\'name\']);
}
这里要做的是检查该值是否设置为nothing。由于我们一开始是自己做的,所以如果用户没有输入任何内容,我们可以确定缺少了一个字段。我们还使用
trim
因此,如果有人只使用空格或制表符等,它将修剪这些空格或制表符,使其值仍然为零。如果是,那么我们设置
$error_name
是真的。我们稍后将使用它。现在,如果值不等于零,那么我们知道用户确实在努力输入他们的名称,所以我们分配值。当然,这只是其中的一部分。对于每个值(姓名、电子邮件和消息),您必须执行三次此操作。
好的,我们都准备好了。我们有用户发送的值,即使他们没有输入任何内容,我们至少知道我们已将其设置为nothing,如果发生这种情况,我们将错误变量设置为true。使用这些错误变量的时间:
if (!$error_name && !$error_email && !$error_message) {
//rest of your form sending procedure goes here
} else {
$contact_form_not_filled = true;
}
因此,最后我们检查所有错误变量是否都为false。如果是这样的话,我们可以继续发送表单,如果不是这样的话,我们可以将其他var设置为true,然后我们可以使用它来触发AJAX消息或简单的通知,例如:
<?php if (isset($contact_form_not_filled) && $contact_form_not_filled == true) : ?>
<strong><?php \'Error! \' ?> </strong><?php \'Fill out the form correctly and try again.\' ?>
<?php endif; ?>