【发布时间】:2015-09-03 10:31:12
【问题描述】:
好的,所以我有一个 html 表单,以及一个使用 php 进行服务器端验证的服务器端验证,以将表单中的信息作为电子邮件发送。在我的一生中,我无法获得将项目作为数组发送的表单。
这是我的html:
<select multiple name="symptoms[]">
<option value="ADHD">ADHD</option>
<option value="Insomnia">Insomnia</option>
<option value="Depression">Depression</option>
<option value="PTSD">PTSD</option>
<option value="Autism">Autism</option>
<option value="Stress">Stress</option>
<option value="Addiction">Addiction</option>
<option value="Pain">Pain/Headaches</option>
这是我认为问题所在的 php:
// validation expected data exists
if(!isset($_POST['first_name']) ||
!isset($_POST['last_name']) ||
!isset($_POST['email']) ||
!isset($_POST['telephone']) ||
!isset($_POST['symptoms']) ||
!isset($_POST['location']) ||
!isset($_POST['comment'])) {
died('We are sorry, but there appears to be a problem with the form you submitted.');
}
$first_name = $_POST['first_name']; // required
$last_name = $_POST['last_name']; // required
$email_from = $_POST['email']; // required
$telephone = $_POST['telephone']; // not required
$symptoms = $_POST['symptoms']; // not required
$location = $_POST['location']; // not required
$comments = $_POST['comment']; // required
php也有这一段,不过我觉得这里的‘症状’区不是问题……
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "First Name: ".clean_string($first_name)."\n";
$email_message .= "Last Name: ".clean_string($last_name)."\n";
$email_message .= "Email: ".clean_string($email_from)."\n";
$email_message .= "Telephone: ".clean_string($telephone)."\n";
$email_message .= "Symptoms: ".clean_string($symptoms)."\n";
$email_message .= "Location: ".clean_string($location)."\n";
$email_message .= "Comment: ".clean_string($location)."\n";
我整天都在尝试更改 !isset 和 $symptoms 行,以使“症状”选择多个以数组形式显示在我的电子邮件中。现在它只是在电子邮件中说“数组”。我在想也许 .clean-string 应该与数组而不是字符串有关?我完全被卡住了,我已经尝试了我能找到的所有东西,复制、粘贴、修改和更改了我在 stackoverflow 上找到的大约 5 组不同的代码......
【问题讨论】:
-
died()不存在。我假设你的意思是die(); -
这也是一个有趣的
clean_string()函数。你想阻止什么? -
是的,迈克,我搞砸了,谢谢。老实说,我在字符串方面遇到了一些问题(可能与我在工作时错过的东西有关,php 不是我的强项,我通常只做前端)并找到了该代码。当我完成时,除了数组之外的所有东西都可以工作,所以我只是认为它有帮助。谢谢!
-
当您复制和粘贴代码时,您至少应该了解它的作用。如果您复制一个函数,然后将其应用于变量列表,那么至少了解它的作用会很好。如果它应该“清理”变量,请弄清楚它究竟试图从变量中清理的什么以及为什么。在我看来,您正在发送纯文本电子邮件,所以我真的不知道有人可以将恶意内容注入纯文本电子邮件中。 HTML 将是一个不同的故事,但有 PHP 函数可以做到这一点。你很有可能摆脱
clean_string。
标签: php html arrays forms post