【问题标题】:PHP mail + checkboxes [duplicate]PHP邮件+复选框[重复]
【发布时间】:2018-09-25 07:59:27
【问题描述】:

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
性别:机器人
我想从事以下工作:
留言:
你好,我是一个测试。机器人声音。

我做错了什么?

【问题讨论】:

    标签: php


    【解决方案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)。

    【讨论】:

    • 那行不通。它仍然没有返回任何内容。
    • @Roxanne,在字段名称后附加[] 肯定可以解决问题。如果没有,则一定是发生了其他未包含在您发布的代码中的事情。
    • 我最终发现了它的问题所在,你是对的。服务器显然没有刷新,所以它仍然以name="need" 而不是name="need[]" 运行代码,因此仍然返回相同的结果。我不确定我实际上是如何让它刷新缓存的,但我希望我可以,因为我在使用缓存样式表时遇到了同样的问题,并且不允许我进行更改。
    猜你喜欢
    • 2012-03-23
    • 2020-12-09
    • 2015-07-23
    • 2014-10-15
    • 1970-01-01
    • 2012-06-19
    • 2015-11-09
    • 2014-10-31
    • 1970-01-01
    相关资源
    最近更新 更多