ETA:有人将此问题标记为重复,但我已经梳理了所有相似的主题,并且没有任何建议可行。添加括号(如need[]
中所示)不起作用 - 它返回与下面讨论的完全相同的结果。如果我能在另一个帖子中找到答案,我就不会做出新的答案。它要求我注册一个帐户并花时间格式化一个帖子,如果答案已经在这里发布,那么我将花时间在这个网站上工作。
如果您有一个可能有效的解决方案的线程示例,请随时链接到它,但我已经查看了我在本网站上可以找到的每个线程,甚至远程似乎相关。感谢。
我已经在几个方面多次回答这个问题,但没有一个解决方案适用于我的情况,所以我在这里发帖,希望有人可以提供帮助。
该网站是一个登陆页面,潜在客户将填写表格,然后将其发送到指定的电子邮件地址。该表单包含十个服务复选框,所有这些都是格式化的:
<input type="checkbox" name="need" value="svc3">Description of Service 1<br/>
<input type="checkbox" name="need" value="svc2">Description of Service 2<br/>
<input type="checkbox" name="need" value="svc3">Description of Service 3<br/>
依此类推,有10种选择。应该能够选择任何/所有选项。在电子邮件处理程序PHP文件中,我有以下代码:
$name = $_POST['name'];
$email_address = $_POST['email'];
$location = $_POST['loc'];
$age = $_POST['age'];
$gender = $_POST['gender'];
$need = implode(", ", $_POST['need']);
(我最初只使用$need = $_POST['need'];
,但只提供了最后一个选定的变量,而不是所有选定的变量。)
$to = $myemail;
$email_subject = "New Consultation Request: $name";
$email_body = "You have received a new request for a FREE consultation. \n".
"Name: $name \nEmail: $email_address \nLocation: $location \nAge: $age. \nGender: $gender \n".
"\nI would like to work on: $need \n"
"\nMessage: \n$message ";
$headers = "From: $myemail\n";
$headers .= "Reply-To: $email_address";
mail($to,$email_subject,$email_body,$headers);
其他一切都完美无缺。目前,电子邮件在$need
字段中没有数据发送,因此:
您收到了免费咨询的新请求 姓名:机器人先生 电子邮件:fake@mail.com
位置:火星
年龄:100
性别:机器人
我想继续努力:
消息:
你好,我是考试。机器人声音。
我做错了什么?
答案 0 :(得分:1)
您应该在复选框的名称中使用[]
来发送数组。在您的实际代码中,$_POST['need']
不是数组,因此,使用implode()
会返回NULL
。
<input type="checkbox" name="need[]" value="svc1">Description of Service 1<br/>
<input type="checkbox" name="need[]" value="svc2">Description of Service 2<br/>
<input type="checkbox" name="need[]" value="svc3">Description of Service 3<br/>
请注意,第一个元素应具有svc1
值(而不是svc3
)。