问题描述
我的代码与此处相同: How to send copy of PHP / HTML form to sender's email?
当我将电子邮件地址写到文本框中时,我会希望将表格的副本复制到我写的电子邮件中。
我已经替换了HTML代码:
<label><input type="checkBox" name="sendcopy" value="Yes" checked/>Send copy to your mail</label>
到
<label><b>Write your email here:</b><div style="width: 33%;"><input class="contact-input"style="width: 500px;" name="sendcopy"><br/></div></label>
$sendcopy = isset($_POST['sendcopy']);
到
$sendcopy = $_POST["sendcopy"];
if ($sendcopy) {
$sentToSender = mail($email,"=?$charset?B?" . base64_encode($subject) . "?=",$body,$head);}
到
if (mail($sendcopy,$head))
现在,当我将电子邮件地址写入文本框时,我将获得该表格的副本到我编写的电子邮件中,但是当我将文本框留空时,该表单的提交将以错误结尾。
因此,最主要的是,当表单发送者将他/她的电子邮件写到文本框中时,他/她将获得该表单的副本到他/她的电子邮件。并且当您将文本框保留为空白时,该表单将仅发送给收件人电子邮件。我该怎么办?
解决方法
我已经替换了PHP代码:
$ sendCopy = isset($ _ POST ['sendcopy']);
这将始终被视为“设置”,并将返回布尔值。
当您将文本框保留为空白时,该表单将仅发送给收件人电子邮件。我该怎么办?
您要使用ternary operator。
从手册:
//示例用法:三元运算符 $ action =(empty($ _ POST ['action']))吗? '默认':$ _POST ['action'];
因此您的尝试将四舍五入为
$action = (isset($_POST['sendcopy'])) ? 'default' : $_POST['sendcopy'];
将default
替换为您希望的默认值。
旁注:在这种情况下,isset()
适用于收音机/复选框。如果您不希望使用空字段,则可以使用empty()
作为单选/复选框之外的文本输入等。