【发布时间】:2016-05-12 16:33:46
【问题描述】:
[编辑 - 添加了完整的表单 sn-p] 在我的 html 中 - 我有一个复选框 - 如下所示:
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" rel="stylesheet" />
<form class="contact-form row" id="feedbacks" method="POST" action="feedback.php">
<div class="col-xs-10 col-xs-offset-1">
<fieldset class="form-group">
<label for="full_name"></label>
<input type="text" class="form-control" placeholder="Your name and surname" name="full_name" id="full_name">
</fieldset>
<fieldset class="">
<label for="feedback_email"></label>
<input type="text" class="form-control" placeholder="Your Email address" name="feedback_email" id="feedback_email">
</fieldset>
<div class="checkbox">
<label class="c-input c-checkbox">
<input type="checkbox" name="subbed" id="subbed">
<span class="c-indicator"></span>
<span class="text-muted m-l-1">subscribe to <abbr class="msa"></abbr> notifcation service.</span>
</label>
</div>
<fieldset>
<label for="message"></label>
<textarea class="form-control" rows="9" placeholder="Your message here.." name="message" id="message"></textarea>
</fieldset>
<div class="row m-t-1">
<fieldset class="col-xs-4 col-xs-offset-4">
<button class="btn btn-primary btn-block btn-lg" name="submit" type="submit" id="send_feedback">Send <i class="ion-android-arrow-forward"></i>
</button>
</fieldset>
</div>
</div>
</form>
<input type="checkbox" name="subscribed" id="subscribed" value="sub_me">
在我的 PHP 中,我创建了一个变量 $subscribe,它链接到 subscribed 复选框。
当复选框被单独留下时,PHP 应该发送"I would not like to recieve news emails" 的电子邮件。为了实现这一点,我选择在 PHP 表单验证代码中使用以下三元组:
[编辑 - 提供所有 PHP]
<?php
$value = '';
$error = "";
$error_message = "";
$info = "";
if($_SERVER['REQUEST_METHOD'] == "POST"){
$subscribe = 'Would ' . (isset($_POST['subbed']) && $_POST['subscribed'] == 'sub_me' ? 'like to ' : 'not like to ') . 'receive news emails.';
$admin_email = "myemail_address@gmail.com";
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= 'From: <noreply@domain.ac.za>' . "\r\n";
$headers .= 'Reply-To: ' . $feedback_email . "\r\n";
'X-Mailer: PHP/' . phpversion();
$full_name = $_POST['full_name'];
$feedback_email = $_POST['feedback_email'];
$feedback = $_POST['message'];
$rep_message = "some thank you message to " . $full_name;
$message = 'another message which references ' . $subscribe;
$reply = 'some message consisting of ' . $full_name;
mail($admin_email,"Feedback",$message,$headers,"-fforwardguy@gmail.com");
mail($feedback_email,"Feedback",$reply,$headers);
}
?>
[编辑] 问题是表单只被确认为已发送,但没有收到任何数据。
[编辑额外信息后 - 以下情况会影响表单提交吗? `
- 有问题的页面上有 2 个表单。
- 两种表格均通过
AJAX提交。 - 第一个表单按预期运行。
- 在这个单一的 PHP 文件中使用了两个邮件函数(仅处理一个表单)。
- 仔细查看后 - 我发现发送的电子邮件中不包含表单中输入的任何文本。
(AJAX 函数有效,成功函数运行。)
【问题讨论】:
-
你确定你的方法是 POST 吗?
-
做一个
var_dump($_POST['subscribed']);看看它说了什么 -
代码没问题。我在当地查过。如果表单方法是 post,它应该可以工作。
标签: php html forms checkbox ternary